trace command updated

tinySA-V4-SI4463
erikkaashoek 5 years ago
parent a35807ea78
commit 8562d8b41c

@ -1366,6 +1366,8 @@ VNA_SHELL_FUNCTION(cmd_trace)
{
int t = 0;
bool do_one = false;
if (argc==1 && argv[0][0] == '?')
goto usage;
if (argc == 0) {
for (t = 0; t < TRACES_MAX; t++) {
show_one:
@ -1402,20 +1404,6 @@ show_one:
set_unit(type);
goto update;
}
// goto usage;
}
static const char cmd_store_list[] = "value";
process:
if (argc == 1) {
int type = get_str_index(argv[next_arg], cmd_store_list);
if (type >= 0) {
switch(type) {
case 0:
for (int i=0;i<sweep_points;i++) {
shell_printf("trace %d value %d %.2f\r\n", t+1, i, measured[t][i]);
}
}
}
// goto usage;
}
// 0 1
@ -1439,17 +1427,38 @@ show_one:
goto update;
}
}
static const char cmd_value_list[] = "value";
process:
if (argc == 1) {
int type = get_str_index(argv[next_arg], cmd_value_list);
if (type >= 0) {
switch(type) {
case 0:
for (int i=0;i<sweep_points;i++) {
shell_printf("trace %d value %d %.2f\r\n", t+1, i, measured[t][i]);
}
}
}
// goto usage;
}
static const char cmd_load_list[] = "copy|freeze|subtract|view|value";
if (argc >= 2) {
switch (get_str_index(argv[next_arg++], cmd_load_list)) {
case 0:
store_trace(t, my_atoi(argv[next_arg++]));
store_trace(t, my_atoi(argv[next_arg++])-1); // copy {trace}
goto update;
case 1:
setting.stored[t]= true;;
setting.stored[t]= (get_str_index(argv[next_arg++], "off|on") == 1); // freeze {off|on}
goto update;
case 2:
subtract_trace(t,my_atoi(argv[next_arg++]));
subtract_trace(t,my_atoi(argv[next_arg++])-1);
goto update;
case 3:
if (get_str_index(argv[next_arg++], "off|on") == 1)
{ TRACE_ENABLE(1<<t); }
else
{ TRACE_DISABLE(1<<t);}
goto update;
case 4:
{
@ -1467,9 +1476,11 @@ update:
redraw_request |= REDRAW_CAL_STATUS;
return;
usage:
shell_printf("trace {trace} {%s}\r\n"\
"trace {%s}\r\n"\
"trace {%s} {value|auto}\r\n", cmd_store_list, cmd_type_list, cmd_scale_ref_list);
shell_printf("trace {%s}\r\n"\
"trace {%s} auto|{value}\r\n"\
"trace [{trace#}] value\r\n"\
"trace [{trace#}] {%s} {trace#}|off|on|[{index} {value}]\r\n"\
, cmd_type_list,cmd_scale_ref_list, cmd_load_list);
}
VNA_SHELL_FUNCTION(cmd_marker)

@ -995,6 +995,7 @@ typedef struct setting
bool sweep; // bool
bool pulse; // bool
bool stored[TRACES_MAX]; // enum
bool normalized[TRACES_MAX]; // enum
uint8_t mode; // enum
uint8_t below_IF; // enum

@ -1698,7 +1698,7 @@ static void cell_draw_marker_info(int x0, int y0)
}
uint16_t color;
int level = temppeakLevel - get_attenuation() + setting.external_gain;
if ((!setting.subtract[t]) && // Disabled when normalized
if ((!setting.normalized[t]) && // Disabled when normalized
((setting.mode == M_LOW && level > -10)
|| (setting.mode == M_HIGH && level > -29)
|| (setting.mode == M_LOW && (markers[i].mtype & M_NOISE) && vbwSteps > 1)) //MAXPEAK increases noise marker, should reduce span.

@ -241,6 +241,7 @@ void reset_settings(int m)
setting.average[t] = 0;
setting.stored[t] = false;
setting.subtract[t] = 0; // Disabled
setting.normalized[t] = false; // Disabled
}
for (int l=0;l<LIMITS_MAX;l++)
setting.limits[l].enabled = false;
@ -1000,19 +1001,22 @@ void subtract_trace(int t, int f)
void toggle_normalize(int t)
{
if (setting.normalized_trace != -1 && t != setting.normalized_trace) {
setting.subtract[setting.normalized_trace] = 0;
setting.normalized_trace = -1;
}
if (!setting.subtract[t]) {
copy_trace(t,TRACE_TEMP);
setting.subtract[t] = TRACE_TEMP+1;
if (!setting.normalized[t]) {
if (setting.normalized_trace == -1) {
copy_trace(t,TRACE_TEMP);
setting.normalized_trace = t;
}
setting.normalized[t] = true;
for (int i=0;i<POINTS_COUNT;i++)
measured[t][i] -= measured[TRACE_TEMP][i]; // pre-load AVER
setting.auto_attenuation = false; // Otherwise noise level may move leading to strange measurements
setting.normalize_level = 0.0;
setting.normalized_trace = t;
} else {
setting.subtract[t] = 0;
setting.normalized_trace = -1;
if (setting.normalized_trace == t)
setting.normalized_trace = -1;
setting.normalized[t] = 0;
for (int i=0;i<POINTS_COUNT;i++)
measured[t][i] += measured[TRACE_TEMP][i]; // pre-load AVER
}
}
@ -4123,6 +4127,8 @@ static volatile int dummy;
float *trace_data = measured[t];
#endif // __DOUBLE_LOOP__
// ------------------------ do all RSSI calculations from CALC menu -------------------
if (setting.normalized[t])
RSSI_calc -= measured[TRACE_TEMP][i];
if (setting.subtract[t]) {
RSSI_calc = RSSI_calc - measured[setting.subtract[t]-1][i] + setting.normalize_level;
}

@ -1526,7 +1526,11 @@ static UI_FUNCTION_ADV_CALLBACK(menu_trace_acb)
b->bg = LCD_TRACE_1_COLOR+data;
return;
}
current_trace = data;
if (setting.normalized_trace != -1 && data == TRACE_TEMP) {
drawMessageBox("Error", "Disable normalization first", 2000);
redraw_request|= REDRAW_AREA;
} else
current_trace = data;
menu_move_back(false);
}
@ -1591,7 +1595,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
}
else if (data == 2) // freeze
b->icon = setting.stored[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
else if (data == 3) {
else if (data == 5) {
if (setting.subtract[current_trace])
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nTRACE %d", setting.subtract[current_trace]);
else
@ -1601,8 +1605,8 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
if (current_trace == TRACES_MAX-1)
b->fg = LCD_DARK_GREY;
else
b->icon = setting.normalized_trace == current_trace ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
} else if (data == 5) {
b->icon = setting.normalized[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
} else if (data == 3) {
plot_printf(b->text, sizeof(b->text), "CALC\n%s", averageText[setting.average[0]]);
b->icon = setting.average[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
}
@ -1630,22 +1634,22 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
case 2: // Freeze
setting.stored[current_trace] = !setting.stored[current_trace];
break;
case 3:
case 5:
menu_push_submenu(menu_subtract_trace);
return;
break;
case 4:
if (current_trace < TRACES_MAX-1) {
toggle_normalize(current_trace);
if (setting.subtract[current_trace]) {
kp_help_text = "Ref level";
ui_mode_keypad(KM_REFLEVEL);
// setting.normalize_level = uistat.value;
if (setting.normalized[current_trace]) {
// kp_help_text = "Ref level";
// ui_mode_keypad(KM_REFLEVEL);
// setting.normalize_level = 20.0; // uistat.value;
} else
set_auto_reflevel(true);
}
break;
case 5:
case 3:
menu_push_submenu(menu_average);
return;
break;
@ -2839,9 +2843,9 @@ static const menuitem_t menu_traces[] =
{ MT_ADV_CALLBACK,0, "TRACE %d", menu_traces_acb},
{ MT_ADV_CALLBACK,1, "ENABLE", menu_traces_acb},
{ MT_ADV_CALLBACK,2, "FREEZE", menu_traces_acb},
{ MT_ADV_CALLBACK,3, MT_CUSTOM_LABEL, menu_traces_acb},
{ MT_ADV_CALLBACK,3, MT_CUSTOM_LABEL, menu_traces_acb}, // Calc
{ MT_ADV_CALLBACK,4, "NORMALIZE", menu_traces_acb},
{ MT_ADV_CALLBACK,5, MT_CUSTOM_LABEL, menu_traces_acb},
{ MT_ADV_CALLBACK,5, MT_CUSTOM_LABEL, menu_traces_acb}, // Trace Math
{ 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},

Loading…
Cancel
Save

Powered by TurnKey Linux.