Bugs repaired

tinySA-V4-SI4463
erikkaashoek 5 years ago
parent 95f64ae07f
commit 6596a9fa8c

@ -113,4 +113,5 @@
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cproject>

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="300448615141682" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1672673687719504" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -17,7 +17,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="300448615141682" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1672673687719504" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

@ -240,7 +240,7 @@ void reset_settings(int m)
for (int t=0;t<TRACES_MAX;t++) {
setting.average[t] = 0;
setting.stored[t] = false;
setting.subtract[t] = 0;
setting.subtract[t] = 0; // Disabled
}
#ifdef TINYSA4
setting.harmonic = 3; // Automatically used when above ULTRA_MAX_FREQ
@ -935,6 +935,8 @@ void limits_update(void)
void store_trace(int f, int t)
{
if (f == t)
return;
for (int i=0; i<POINTS_COUNT;i++)
measured[t][i] = measured[f][i];
setting.stored[t] = true;
@ -968,9 +970,12 @@ void set_subtract_storage(void)
void subtract_trace(int t, int f)
{
if (t == f)
return;
if (!setting.subtract[t]) {
setting.subtract[t] = f;
setting.normalize_level = 0.0;
setting.auto_attenuation = false; // Otherwise noise level may move leading to strange measurements
} else
setting.subtract[t] = 0;
}
@ -4092,11 +4097,12 @@ static volatile int dummy;
for (int t=0; t<TRACES_MAX;t++) {
if (setting.stored[t])
continue;
float RSSI_calc = RSSI;
float *trace_data = measured[t];
#endif // __DOUBLE_LOOP__
// ------------------------ do all RSSI calculations from CALC menu -------------------
if (setting.subtract[t]) {
RSSI = RSSI - measured[setting.subtract[t]-1][i] + setting.normalize_level;
RSSI_calc = RSSI_calc - measured[setting.subtract[t]-1][i] + setting.normalize_level;
}
#ifdef __SI4432__
//#define __DEBUG_AGC__
@ -4115,15 +4121,15 @@ static volatile int dummy;
#endif
if (scandirty || setting.average[t] == AV_OFF) { // Level calculations
if (setting.average[t] == AV_MAX_DECAY) age[i] = 0;
trace_data[i] = RSSI;
trace_data[i] = RSSI_calc;
} else {
switch(setting.average[t] ) {
case AV_MIN: if (trace_data[i] > RSSI) trace_data[i] = RSSI; break;
case AV_MAX_HOLD: if (trace_data[i] < RSSI) trace_data[i] = RSSI; break;
case AV_MIN: if (trace_data[i] > RSSI_calc) trace_data[i] = RSSI_calc; break;
case AV_MAX_HOLD: if (trace_data[i] < RSSI_calc) trace_data[i] = RSSI_calc; break;
case AV_MAX_DECAY:
if (trace_data[i] < RSSI) {
if (trace_data[i] < RSSI_calc) {
age[i] = 0;
trace_data[i] = RSSI;
trace_data[i] = RSSI_calc;
} else {
if (age[i] > setting.decay)
trace_data[i] -= 0.5;
@ -4131,8 +4137,8 @@ static volatile int dummy;
age[i] += 1;
}
break;
case AV_4: trace_data[i] = (trace_data[i]*3.0 + RSSI) / 4.0; break;
case AV_16: trace_data[i] = (trace_data[i]*15.0 + RSSI) / 16.0; break;
case AV_4: trace_data[i] = (trace_data[i]*3.0 + RSSI_calc) / 4.0; break;
case AV_16: trace_data[i] = (trace_data[i]*15.0 + RSSI_calc) / 16.0; break;
case AV_100:
#ifdef TINYSA4
if (linear_averaging)
@ -4140,29 +4146,29 @@ static volatile int dummy;
#if 0
int old_unit = setting.unit;
setting.unit = U_WATT; // Power averaging should always be done in Watts
trace_data[i] = to_dBm((value(trace_data[i])*(scan_after_dirty-1) + value(RSSI)) / scan_after_dirty );
trace_data[i] = to_dBm((value(trace_data[i])*(scan_after_dirty-1) + value(RSSI_calc)) / scan_after_dirty );
setting.unit = old_unit;
#else
float v = (expf(trace_data[i]*(logf(10.0)/10.0)) * (scan_after_dirty-1) + expf(RSSI * (logf(10.0)/10.0))) / scan_after_dirty;
float v = (expf(trace_data[i]*(logf(10.0)/10.0)) * (scan_after_dirty-1) + expf(RSSI_calc * (logf(10.0)/10.0))) / scan_after_dirty;
trace_data[i] = logf(v)*(10.0/logf(10.0));
#endif
}
else
trace_data[i] = (trace_data[i]*(scan_after_dirty-1) + RSSI)/ scan_after_dirty;
trace_data[i] = (trace_data[i]*(scan_after_dirty-1) + RSSI_calc)/ scan_after_dirty;
#else
trace_data[i] = (trace_data[i]*(scan_after_dirty-1) + RSSI)/ scan_after_dirty;
trace_data[i] = (trace_data[i]*(scan_after_dirty-1) + RSSI_calc)/ scan_after_dirty;
#endif
break;
#ifdef __QUASI_PEAK__
case AV_QUASI:
{ static float old_RSSI = -150.0;
if (i == 0) old_RSSI = trace_data[sweep_points-1];
if (RSSI > old_RSSI && setting.attack > 1)
old_RSSI += (RSSI - old_RSSI)/setting.attack;
else if (RSSI < old_RSSI && setting.decay > 1)
old_RSSI += (RSSI - old_RSSI)/setting.decay;
if (RSSI_calc > old_RSSI && setting.attack > 1)
old_RSSI += (RSSI_calc - old_RSSI)/setting.attack;
else if (RSSI_calc < old_RSSI && setting.decay > 1)
old_RSSI += (RSSI_calc - old_RSSI)/setting.decay;
else
old_RSSI = RSSI;
old_RSSI = RSSI_calc;
trace_data[i] = old_RSSI;
}
break;

@ -516,6 +516,7 @@ static const menuitem_t menu_highoutputmode[];
static const menuitem_t menu_modulation[];
static const menuitem_t menu_top[];
static const menuitem_t menu_trace[];
static const menuitem_t menu_marker_trace[];
static const menuitem_t menu_subtract_trace[];
static const menuitem_t menu_reffer[];
static const menuitem_t menu_sweep_points[];
@ -1525,23 +1526,37 @@ static UI_FUNCTION_ADV_CALLBACK(menu_trace_acb)
if(b){
b->param_1.i = data+1;
b->icon = (data == current_trace) ? BUTTON_ICON_GROUP_CHECKED : BUTTON_ICON_GROUP;
b->bg = LCD_TRACE_1_COLOR+data;
return;
}
current_trace = data;
menu_move_back(false);
}
static UI_FUNCTION_ADV_CALLBACK(menu_marker_trace_acb)
{
(void)item;
if(b){
b->param_1.i = data+1;
b->icon = (data == markers[active_marker].trace) ? BUTTON_ICON_GROUP_CHECKED : BUTTON_ICON_GROUP;
b->bg = LCD_TRACE_1_COLOR+data;
return;
}
markers[active_marker].trace = data;
menu_move_back(false);
}
static UI_FUNCTION_ADV_CALLBACK(menu_store_trace_acb)
{
(void)item;
if(b){
if (data == current_trace)
plot_printf(b->text, sizeof(b->text), "", data);
else
plot_printf(b->text, sizeof(b->text), S_RARROW"TRACE %d", data+1);
plot_printf(b->text, sizeof(b->text), S_RARROW"TRACE %d", data+1);
b->bg = LCD_TRACE_1_COLOR+data;
if (current_trace == data)
b->fg = LCD_DARK_GREY;
return;
}
if (data != current_trace) store_trace(current_trace,data);
store_trace(current_trace,data);
menu_move_back(false);
}
@ -1550,11 +1565,15 @@ static UI_FUNCTION_ADV_CALLBACK(menu_subtract_trace_acb)
{
(void)item;
if(b){
if (data)
if (data) {
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nTRACE %d", data);
b->bg = LCD_TRACE_1_COLOR+data-1;
}
else
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nDISABLED");
b->icon = (data == setting.subtract[current_trace]) ? BUTTON_ICON_GROUP_CHECKED : BUTTON_ICON_GROUP;
if (data - 1 == current_trace)
b->fg = LCD_DARK_GREY;
return;
}
subtract_trace(current_trace,data);
@ -1566,15 +1585,20 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
{
(void)item;
if(b){
if (data == 0) {
if (data == 0) { // Select trace
b->param_1.i = current_trace+1;
} else if (data == 1)
b->icon = IS_TRACE_ENABLE(current_trace) ? BUTTON_ICON_NOCHECK : BUTTON_ICON_CHECK ;
else if (data == 2)
b->bg = LCD_TRACE_1_COLOR+current_trace;
} else if (data == 1) { // View
if (current_trace)
b->icon = IS_TRACE_ENABLE(current_trace) ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
else
b->fg = LCD_DARK_GREY;
}
else if (data == 2) // freeze
b->icon = setting.stored[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
else if (data == 3) {
if (setting.stored[current_trace])
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nTRACE %d", setting.stored[current_trace]);
if (setting.subtract[current_trace])
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nTRACE %d", setting.subtract[current_trace]);
else
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nDISABLED");
}
@ -1586,12 +1610,13 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
return;
case 1:
if (IS_TRACE_ENABLE(current_trace)) {
TRACE_DISABLE(1<<current_trace);
if (current_trace) // Trace 1 always viewed
TRACE_DISABLE(1<<current_trace);
} else {
TRACE_ENABLE(1<<current_trace);
}
break;
case 2:
case 2: // Freeze
setting.stored[current_trace] = !setting.stored[current_trace];
break;
case 3:
@ -1600,7 +1625,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
break;
#ifdef TINYSA4
case 6:
save_to_sd(1+2<<current_trace); // frequencies + trace
save_to_sd(1+(2<<current_trace)); // frequencies + trace
break;
#endif
}
@ -1710,55 +1735,39 @@ static UI_FUNCTION_ADV_CALLBACK(menu_marker_modify_acb)
(void)item;
if (active_marker == MARKER_INVALID) return;
if(b){
if (markers[active_marker].enabled == M_ENABLED) {
uistat.text[0] = 0;
switch(data) {
case M_DELTA:
case M_NOISE:
case M_TRACKING:
case M_AVER:
b->icon = BUTTON_ICON_NOCHECK;
if (data & markers[active_marker].mtype)
b->icon = BUTTON_ICON_CHECK;
else if (data==markers[active_marker].mtype) // This catches the M_NORMAL case
if (markers[active_marker].mtype & data)
b->icon = BUTTON_ICON_CHECK;
if ((markers[active_marker].mtype & M_DELTA))
if (markers[active_marker].mtype & M_DELTA)
uistat.text[0] = markers[active_marker].ref+'1';
else
uistat.text[0] = 0;
uistat.text[1] = 0;
b->param_1.text = uistat.text;
break;
case M_STORED:
uistat.text[0] = markers[active_marker].trace+'1';
b->bg = LCD_TRACE_1_COLOR+markers[active_marker].trace;
break;
}
b->param_1.text = uistat.text;
return;
}
if (markers[active_marker].enabled == M_ENABLED)
{
if (data == M_NORMAL) {
markers[active_marker].mtype = M_NORMAL;
}
#if 0
if (data == M_REFERENCE) {
for (int i = 0; i<MARKER_COUNT; i++ ) {
if (i != active_marker && markers[i].mtype & M_REFERENCE)
markers[i].mtype &= ~M_REFERENCE;
}
markers[active_marker].mtype &= ~M_DELTA;
}
#endif
if (data == M_DELTA) {
if (!(markers[active_marker].mtype & M_DELTA)) // Not yet set
menu_push_submenu(menu_marker_ref_select);
#if 0
markers[active_marker].mtype &= ~M_REFERENCE;
#endif
}
#if 1
markers[active_marker].mtype ^= data;
if (markers[active_marker].mtype & M_STORED)
markers[active_marker].trace = TRACE_STORED;
else
markers[active_marker].trace = TRACE_ACTUAL;
#else
if (markers[active_marker].mtype & data)
markers[active_marker].mtype &= ~data;
else
markers[active_marker].mtype |= data;
#endif
if (data == M_DELTA && !(markers[active_marker].mtype & M_DELTA)) { // Not yet set
menu_push_submenu(menu_marker_ref_select);
goto set_delta;
return;
} else if (data == M_STORED) {
current_trace = 0;
menu_push_submenu(menu_marker_trace);
return;
} else if (markers[active_marker].mtype & data)
markers[active_marker].mtype &= ~data;
else {
set_delta:
markers[active_marker].mtype |= data;
}
markmap_all_markers();
// redraw_marker(active_marker, TRUE);
@ -2468,7 +2477,7 @@ const menuitem_t menu_marker_modify[] = {
{ MT_ADV_CALLBACK, M_DELTA, "DELTA %s", menu_marker_modify_acb},
{ MT_ADV_CALLBACK, M_NOISE, "NOISE", menu_marker_modify_acb},
{ MT_ADV_CALLBACK, M_TRACKING, "TRACKING", menu_marker_modify_acb},
{ MT_ADV_CALLBACK, M_STORED, "STORED", menu_marker_modify_acb},
{ MT_ADV_CALLBACK, M_STORED, "TRACE %s", menu_marker_modify_acb},
{ MT_ADV_CALLBACK, M_AVER, "TRACE\nAVERAGE", menu_marker_modify_acb},
{ MT_SUBMENU, 0, "SEARCH", menu_marker_search},
{ MT_CALLBACK, M_DELETE, "DELETE", menu_marker_delete_cb},
@ -2949,6 +2958,17 @@ static const menuitem_t menu_trace[] =
{ MT_NONE, 0, NULL, menu_back} // next-> menu_back
};
static const menuitem_t menu_marker_trace[] =
{
{ MT_ADV_CALLBACK,0, "TRACE %d", menu_marker_trace_acb},
{ MT_ADV_CALLBACK,1, "TRACE %d", menu_marker_trace_acb},
{ MT_ADV_CALLBACK,2, "TRACE %d", menu_marker_trace_acb},
#if TRACES_MAX > 3
{ MT_ADV_CALLBACK,3, "TRACE %d", menu_marker_trace_acb},
#endif
{ MT_NONE, 0, NULL, menu_back} // next-> menu_back
};
static const menuitem_t menu_store_trace[] =
{
{ MT_ADV_CALLBACK,0, MT_CUSTOM_LABEL, menu_store_trace_acb},
@ -2975,11 +2995,11 @@ static const menuitem_t menu_subtract_trace[] =
static const menuitem_t menu_traces[] =
{
{ MT_ADV_CALLBACK,0, "TRACE %d", menu_traces_acb},
{ MT_ADV_CALLBACK,1, "HIDDEN", menu_traces_acb},
{ MT_ADV_CALLBACK,2, "STORED", menu_traces_acb},
{ MT_ADV_CALLBACK,1, "VIEW", menu_traces_acb},
{ MT_ADV_CALLBACK,2, "FREEZE", menu_traces_acb},
{ MT_ADV_CALLBACK,3, MT_CUSTOM_LABEL, menu_traces_acb},
{ MT_SUBMENU, 0, "CALC", menu_average},
{ MT_SUBMENU, 0, "STORE\n"S_RARROW"TRACE", menu_store_trace},
{ MT_SUBMENU, 0, "COPY\n"S_RARROW"TRACE", menu_store_trace},
#ifdef TINYSA4
{ MT_ADV_CALLBACK,6, "WRITE\n"S_RARROW"SD", menu_traces_acb},
#endif

Loading…
Cancel
Save

Powered by TurnKey Linux.