From 77f8938edd7f21d055c40abbc77d7bce739df684 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Thu, 11 Jun 2020 09:49:49 +0200 Subject: [PATCH] Many small ui updates --- main.c | 72 +++++++++++++++++++++++++----------------- sa_cmd.c | 20 ------------ sa_core.c | 7 +++-- ui.c | 9 +++--- ui_sa.c | 93 ++++++++++++++++++++++++++++++++++++++----------------- 5 files changed, 116 insertions(+), 85 deletions(-) diff --git a/main.c b/main.c index c084a4c..47d23c8 100644 --- a/main.c +++ b/main.c @@ -1728,27 +1728,14 @@ VNA_SHELL_FUNCTION(cmd_trace) return; } - if (strcmp(argv[0], "all") == 0 && - argc > 1 && strcmp(argv[1], "off") == 0) { - for (t = 0; t < TRACES_MAX; t++) - set_trace_type(t, TRC_OFF); - goto exit; - } if ('0' <= argv[0][0] && argv[0][0] <= '9') { t = my_atoi(argv[0]); - if (t < 0 || t >= TRACES_MAX) + if (argc != 1 || t < 0 || t >= TRACES_MAX) goto usage; - if (argc == 1) { - const char *type = get_trace_typename(t); - const char *channel = trc_channel_name[trace[t].channel]; - shell_printf("%d %s %s\r\n", t, type, channel); - return; - } - if (argc > 1 && strcmp(argv[1], "off") == 0) - set_trace_type(t, TRC_OFF); - if (argc > 1 && strcmp(argv[1], "on") == 0) - set_trace_type(t, TRC_LOGMAG); - goto exit; + const char *type = get_trace_typename(t); + const char *channel = trc_channel_name[trace[t].channel]; + shell_printf("%d %s %s\r\n", t, type, channel); + return; } #if MAX_UNIT_TYPE != 4 #error "Unit type enum possibly changed, check cmd_trace function" @@ -1758,31 +1745,59 @@ VNA_SHELL_FUNCTION(cmd_trace) int type = get_str_index(argv[0], cmd_type_list); if (type >= 0) { set_unit(type); - return; + goto update; + } + goto usage; + } + static const char cmd_store_list[] = "store|clear|subtract"; + if (argc == 1) { + int type = get_str_index(argv[0], cmd_store_list); + if (type >= 0) { + switch(type) { + case 0: + set_storage(); + goto update; + case 1: + set_clear_storage(); + goto update; + case 2: + set_subtract_storage(); + goto update; + } } + goto usage; } // 0 1 static const char cmd_scale_ref_list[] = "scale|reflevel"; if (argc == 2) { switch (get_str_index(argv[0], cmd_scale_ref_list)) { case 0: - //trace[t].scale = my_atof(argv[2]); + if (UNIT_IS_LINEAR(setting.unit)) + set_auto_reflevel(false); set_scale(my_atof(argv[1])); - goto exit; + if (UNIT_IS_LINEAR(setting.unit) && setting.reflevel < setting.scale*NGRIDY) + set_reflevel(setting.scale*NGRIDY); + goto update; case 1: //trace[t].refpos = my_atof(argv[2]); - set_reflevel(my_atof(argv[1])); - goto exit; - default: - goto usage; + if (strcmp(argv[1],"auto") == 0) { + set_auto_reflevel(true); + } else { + set_auto_reflevel(false); + set_reflevel(my_atof(argv[1])); + } + goto update; } + goto usage; } - exit: +update: +redraw_request |= REDRAW_CAL_STATUS; +exit: return; usage: - shell_printf("trace {0|1|2|all} [{on|off]\r\n"\ + shell_printf("trace {%s}\r\n"\ "trace {%s}\r\n"\ - "trace {%s} {value}\r\n", cmd_type_list, cmd_scale_ref_list); + "trace {%s} {value|auto}\r\n", cmd_store_list, cmd_type_list, cmd_scale_ref_list); } @@ -2286,7 +2301,6 @@ static const VNAShellCommand commands[] = { "leveloffset", cmd_leveloffset, 0 }, { "levelsweep", cmd_levelsweep, 0 }, { "modulation", cmd_modulation, 0 }, - { "reflevel", cmd_reflevel, 0 }, { "rbw", cmd_rbw, 0 }, { "mode", cmd_mode, 0 }, { "spur", cmd_spur, 0 }, diff --git a/sa_cmd.c b/sa_cmd.c index 75c97ac..d77db0c 100644 --- a/sa_cmd.c +++ b/sa_cmd.c @@ -124,26 +124,6 @@ VNA_SHELL_FUNCTION(cmd_levelsweep) set_level_sweep(f); } - - -VNA_SHELL_FUNCTION(cmd_reflevel) -{ - if (argc != 1) { - usage: - shell_printf("usage: reflevel |auto\r\n"); - return; - } - if (strcmp(argv[0],"auto") == 0) { - set_auto_reflevel(true); - } else { - float r = my_atof(argv[0]); - if (r < -150.0 || r>100.0) - goto usage; - set_auto_reflevel(false); - set_reflevel(r); - } -} - VNA_SHELL_FUNCTION(cmd_leveloffset) { if (argc == 0) { diff --git a/sa_core.c b/sa_core.c index cb102ab..2b59e9b 100644 --- a/sa_core.c +++ b/sa_core.c @@ -450,7 +450,8 @@ void set_harmonic(int h) void set_step_delay(int d) { - if (d < 300 || d > 30000) + + if ((2 <= d && d < 300) || d > 30000) return; setting.step_delay = d; dirty = true; @@ -1538,7 +1539,7 @@ again: if (scandirty) { scandirty = false; - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; } if (!in_selftest && setting.mode == M_LOW && setting.auto_attenuation && max_index[0] > 0) { // Auto attenuate @@ -1939,7 +1940,7 @@ void draw_cal_status(void) while (i < sizeof(scale_value)/sizeof(float)) { float t = (setting.scale/setting.unit_scale) / scale_value[i];; if (t > 0.9 && t < 1.1){ - plot_printf(buf, BLEN, "%s/",scale_vtext[i]); + plot_printf(buf, BLEN, "%s%s/",scale_vtext[i],unit_scale_text[setting.unit_scale_index]); break; } i++; diff --git a/ui.c b/ui.c index 08da335..a5b25bb 100644 --- a/ui.c +++ b/ui.c @@ -774,7 +774,7 @@ menu_marker_op_cb(int item, uint8_t data) } menu_move_back(); ui_mode_normal(); - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; //redraw_all(); } @@ -1222,7 +1222,7 @@ menu_invoke(int item) return; (*cb)(item, menu->data); // if (!(menu->type & MT_FORM)) - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; break; } @@ -1243,7 +1243,7 @@ menu_invoke(int item) ui_mode_keypad(menu->data); ui_process_keypad(); } - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; break; } } @@ -1362,7 +1362,7 @@ static const char * const keypad_mode_label[] = { #endif static const char * const keypad_scale_text[] = { "1", "2", "5", "10", "20" , "50", "100", "200", "500"}; -static const int keypad_scale_value[] = { 1, 2, 5, 10, 20 , 50, 100, 200, 500}; +//static const int keypad_scale_value[] = { 1, 2, 5, 10, 20 , 50, 100, 200, 500}; static void @@ -1877,6 +1877,7 @@ ui_mode_keypad(int _keypad_mode) draw_menu(); draw_keypad(); draw_numeric_area_frame(); + fetch_numeric_target(); draw_numeric_input(""); } diff --git a/ui_sa.c b/ui_sa.c index cbe337c..f2f3b06 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -350,12 +350,12 @@ static const keypads_t keypads_freq[] = { { 0, 0, -1 } }; -// 7 8 9 n -// 4 5 6 u -// 1 2 3 m +// 7 8 9 +// 4 5 6 +// 1 2 3 // 0 . < x -static const keypads_t keypads_scale[] = { +static const keypads_t keypads_positive[] = { { 1, 3, KP_PERIOD }, { 0, 3, 0 }, { 0, 2, 1 }, @@ -367,15 +367,17 @@ static const keypads_t keypads_scale[] = { { 0, 0, 7 }, { 1, 0, 8 }, { 2, 0, 9 }, - { 3, 0, KP_n }, - { 3, 1, KP_u }, - { 3, 2, KP_m }, { 3, 3, KP_X1 }, { 2, 3, KP_BS }, { 0, 0, -1 } }; -static const keypads_t keypads_newscale[] = { +// 100 200 500 n +// 10 20 50 u +// 1 2 5 m +// 0 . < x + +static const keypads_t keypads_pos_unit[] = { { 1, 3, KP_PERIOD }, { 0, 3, 0 }, { 0, 2, KP_1 }, @@ -400,7 +402,31 @@ static const keypads_t keypads_newscale[] = { // 1 2 3 - // 0 . < x -static const keypads_t keypads_level[] = { +static const keypads_t keypads_plusmin_unit[] = { + { 1, 3, KP_PERIOD }, + { 0, 3, 0 }, + { 0, 2, 1 }, + { 1, 2, 2 }, + { 2, 2, 3 }, + { 0, 1, 4 }, + { 1, 1, 5 }, + { 2, 1, 6 }, + { 0, 0, 7 }, + { 1, 0, 8 }, + { 2, 0, 9 }, + { 3, 0, KP_u}, + { 3, 1, KP_m}, + { 3, 2, KP_MINUS }, + { 3, 3, KP_X1 }, + { 2, 3, KP_BS }, + { 0, 0, -1 } +}; +// 7 8 9 +// 4 5 6 +// 1 2 3 - +// 0 . < x + +static const keypads_t keypads_plusmin[] = { { 1, 3, KP_PERIOD }, { 0, 3, 0 }, { 0, 2, 1 }, @@ -446,22 +472,22 @@ static const keypads_t * const keypads_mode_tbl[] = { keypads_freq, // center keypads_freq, // span keypads_freq, // cw freq - keypads_level, // refpos - keypads_newscale, // scale - keypads_scale, // attenuation - keypads_level, // actual power + keypads_plusmin_unit, // reflevel + keypads_pos_unit, // scale + keypads_positive, // attenuation + keypads_plusmin_unit, // actual power keypads_freq, // IF - keypads_level, // sample time - keypads_scale, // drive - keypads_level, // KM_LOWOUTLEVEL - keypads_level, // KM_DECAY - keypads_level, // KM_NOISE - keypads_level, // KM_10MHz - keypads_level, // KM_REPEA - keypads_level, // KM_OFFSET - keypads_level, // KM_TRIGGER - keypads_level, // KM_LEVELSWEEP - keypads_level, // KM_SWEEP_TIME + keypads_positive, // sample delay + keypads_positive, // drive + keypads_plusmin, // KM_LOWOUTLEVEL + keypads_positive, // KM_DECAY + keypads_positive, // KM_NOISE + keypads_plusmin, // KM_10MHz + keypads_positive, // KM_REPEA + keypads_plusmin, // KM_OFFSET + keypads_plusmin_unit, // KM_TRIGGER + keypads_plusmin, // KM_LEVELSWEEP + keypads_positive, // KM_SWEEP_TIME }; #ifdef __VNA__ @@ -471,7 +497,7 @@ static const char * const keypad_mode_label[] = { #endif #ifdef __SA__ static const char * const keypad_mode_label[] = { - "error", "START", "STOP", "CENTER", "SPAN", "FREQ", "REFPOS", "SCALE", // 0-7 + "error", "START", "STOP", "CENTER", "SPAN", "FREQ", "\2REF\0LEVEL", "SCALE", // 0-7 "\2ATTENUATE\0 0-31dB", "\2ACTUAL\0POWER", "IF", "\2SAMPLE\0DELAY", "DRIVE", "LEVEL", "SCANS", "LEVEL", // 8-15 "OFFSET" , "\2SAMPLE\0REPEAT", "OFFSET", "\2TRIGGER\0LEVEL", "\2LEVEL\0SWEEP", "\2SWEEP\0SECONDS"// 16- }; @@ -520,7 +546,7 @@ extern const menuitem_t menu_topultra[]; break; #endif } - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; } void menu_load_preset_cb(int item, uint8_t data) @@ -695,7 +721,7 @@ static void menu_spur_cb(int item, uint8_t data) SetSpur(1); // must be 0 or 1 !!!! // menu_move_back(); ui_mode_normal(); - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; } #endif @@ -856,7 +882,7 @@ static void menu_average_cb(int item, uint8_t data) set_average(item); menu_move_back(); ui_mode_normal(); - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; } static void @@ -947,7 +973,7 @@ static void menu_trigger_cb(int item, uint8_t data) set_trigger(data); // menu_move_back(); ui_mode_normal(); - draw_cal_status(); + redraw_request |= REDRAW_CAL_STATUS; } #if 0 @@ -1684,6 +1710,8 @@ static void menu_item_modify_attribute( } else if (menu == menu_scanning_speed) { if (item == setting.step_delay){ mark = true; + } else if (item == 2 && setting.step_delay > 1) { + mark = true; } #ifdef __ULTRA__ } else if (MT_MASK(menu[item].type) == MT_CALLBACK && menu == menu_harmonic) { @@ -1777,6 +1805,7 @@ static void fetch_numeric_target(void) break; case KM_ATTENUATION: uistat.value = get_attenuation(); + kp_help_text = "0..30"; plot_printf(uistat.text, sizeof uistat.text, "%ddB", ((int32_t)uistat.value)); break; case KM_ACTUALPOWER: @@ -1789,10 +1818,12 @@ static void fetch_numeric_target(void) break; case KM_SAMPLETIME: uistat.value = setting.step_delay; + kp_help_text = "300..30000"; plot_printf(uistat.text, sizeof uistat.text, "%3duS", ((int32_t)uistat.value)); break; case KM_REPEAT: uistat.value = setting.repeat; + kp_help_text = "1..100"; plot_printf(uistat.text, sizeof uistat.text, "%2d", ((int32_t)uistat.value)); break; case KM_DRIVE: @@ -1801,14 +1832,17 @@ static void fetch_numeric_target(void) break; case KM_LOWOUTLEVEL: uistat.value = get_attenuation(); // compensation for dB offset during low output mode + kp_help_text = "-76..-6"; plot_printf(uistat.text, sizeof uistat.text, "%ddB", ((int32_t)uistat.value)); break; case KM_DECAY: uistat.value = setting.decay; + kp_help_text = "1-1000"; plot_printf(uistat.text, sizeof uistat.text, "%3d", ((int32_t)uistat.value)); break; case KM_NOISE: uistat.value = setting.noise; + kp_help_text = "2..20"; plot_printf(uistat.text, sizeof uistat.text, "%3d", ((int32_t)uistat.value)); break; case KM_10MHZ: @@ -1829,6 +1863,7 @@ static void fetch_numeric_target(void) else uistat.value = setting.sweep_time; uistat.value /= 1000.0; + kp_help_text = "15mS..600S"; plot_printf(uistat.text, sizeof uistat.text, "%.1fS", uistat.value); break; case KM_TRIGGER: