diff --git a/nanovna.h b/nanovna.h index 139c688..2984c24 100644 --- a/nanovna.h +++ b/nanovna.h @@ -140,8 +140,12 @@ #endif #define TRACE_ACTUAL 0 // order linked to colors in palette!!!!! -#define TRACE_TEMP (LCD_TRACE_2_COLOR - LCD_TRACE_1_COLOR) -#define TRACE_STORED (LCD_TRACE_3_COLOR - LCD_TRACE_1_COLOR) +#if TRACES_MAX == 3 +#define TRACE_TEMP (LCD_TRACE_3_COLOR - LCD_TRACE_1_COLOR) +#else +#define TRACE_TEMP (LCD_TRACE_4_COLOR - LCD_TRACE_1_COLOR) +#endif +#define TRACE_STORED (LCD_TRACE_2_COLOR - LCD_TRACE_1_COLOR) //#define TRACE_AGE 3 #define TRACE_INVALID -1 @@ -339,7 +343,7 @@ void set_average(int t, int); void set_storage(void); void set_clear_storage(void); void set_subtract_storage(void); -void toggle_normalize(void); +void toggle_normalize(int); void set_waterfall(void); void disable_waterfall(void); void set_mode(int); @@ -858,6 +862,7 @@ typedef uint16_t pixel_t; #define LCD_M_NOISE 28 #define LCD_M_DEFAULT 29 +#if TRACES_MAX == 3 #define LCD_DEFAULT_PALETTE {\ [LCD_BG_COLOR ] = RGB565( 0, 0, 0), \ [LCD_FG_COLOR ] = RGB565(255,255,255), \ @@ -866,8 +871,8 @@ typedef uint16_t pixel_t; [LCD_MENU_TEXT_COLOR ] = RGB565( 0, 0, 0), \ [LCD_MENU_ACTIVE_COLOR] = RGB565(210,210,210), \ [LCD_TRACE_1_COLOR ] = RGB565(255,255, 0), \ -[LCD_TRACE_2_COLOR ] = RGB565(255, 64, 64), \ -[LCD_TRACE_3_COLOR ] = RGB565( 64,255, 64), \ +[LCD_TRACE_2_COLOR ] = RGB565( 64,255, 64), \ +[LCD_TRACE_3_COLOR ] = RGB565(255, 64, 64), \ [LCD_TRACE_4_COLOR ] = RGB565(255, 0,255), \ [LCD_NORMAL_BAT_COLOR ] = RGB565( 31,227, 0), \ [LCD_LOW_BAT_COLOR ] = RGB565(255, 0, 0), \ @@ -890,6 +895,40 @@ typedef uint16_t pixel_t; [LCD_M_NOISE ] = RGB565( 0,255,255), \ [LCD_M_DEFAULT ] = RGB565(255,255, 0), \ } +#else +#define LCD_DEFAULT_PALETTE {\ +[LCD_BG_COLOR ] = RGB565( 0, 0, 0), \ +[LCD_FG_COLOR ] = RGB565(255,255,255), \ +[LCD_GRID_COLOR ] = RGB565(128,128,128), \ +[LCD_MENU_COLOR ] = RGB565(230,230,230), \ +[LCD_MENU_TEXT_COLOR ] = RGB565( 0, 0, 0), \ +[LCD_MENU_ACTIVE_COLOR] = RGB565(210,210,210), \ +[LCD_TRACE_1_COLOR ] = RGB565(255,255, 0), \ +[LCD_TRACE_2_COLOR ] = RGB565( 64,255, 64), \ +[LCD_TRACE_3_COLOR ] = RGB565(255, 0,255), \ +[LCD_TRACE_4_COLOR ] = RGB565(255, 64, 64), \ +[LCD_NORMAL_BAT_COLOR ] = RGB565( 31,227, 0), \ +[LCD_LOW_BAT_COLOR ] = RGB565(255, 0, 0), \ +[LCD_TRIGGER_COLOR ] = RGB565( 0, 0,255), \ +[LCD_RISE_EDGE_COLOR ] = RGB565(255,255,255), \ +[LCD_FALLEN_EDGE_COLOR] = RGB565(128,128,128), \ +[LCD_SWEEP_LINE_COLOR ] = RGB565( 0,255, 0), \ +[LCD_BW_TEXT_COLOR ] = RGB565(128,128,128), \ +[LCD_INPUT_TEXT_COLOR ] = RGB565( 0, 0, 0), \ +[LCD_INPUT_BG_COLOR ] = RGB565(255,255,255), \ +[LCD_BRIGHT_COLOR_BLUE] = RGB565( 0, 0,255), \ +[LCD_BRIGHT_COLOR_RED ] = RGB565(255,128,128), \ +[LCD_BRIGHT_COLOR_GREEN]= RGB565( 0,255, 0), \ +[LCD_DARK_GREY ] = RGB565(140,140,140), \ +[LCD_LIGHT_GREY ] = RGB565(220,220,220), \ +[LCD_HAM_COLOR ] = RGB565( 80, 80, 80), \ +[LCD_GRID_VALUE_COLOR ] = RGB565(196,196,196), \ +[LCD_M_REFERENCE ] = RGB565(255,255,255), \ +[LCD_M_DELTA ] = RGB565( 0,255, 0), \ +[LCD_M_NOISE ] = RGB565( 0,255,255), \ +[LCD_M_DEFAULT ] = RGB565(255,255, 0), \ +} +#endif #define GET_PALTETTE_COLOR(idx) config.lcd_palette[idx] @@ -972,6 +1011,7 @@ typedef struct setting uint8_t subtract[TRACES_MAX];// index uint8_t measurement; // enum uint8_t spur_removal; // enum + int8_t normalized_trace; int8_t tracking; // -1...1 Can NOT convert to bool!!!!!! uint8_t atten_step; // 0...1 !!! need convert to bool diff --git a/sa_core.c b/sa_core.c index 5a79dcc..f7c75fd 100644 --- a/sa_core.c +++ b/sa_core.c @@ -254,6 +254,8 @@ void reset_settings(int m) setting.show_stored = 0; setting.auto_attenuation = false; setting.normalize_level = 0.0; + setting.normalized_trace = -1; + #ifdef TINYSA4 setting.lo_drive=5; #else @@ -943,13 +945,19 @@ void limits_update(void) } #endif -void store_trace(int f, int t) +void copy_trace(int f, int t) { if (f == t) return; for (int i=0; itext, sizeof(b->text), "SUBTRACT\nTRACE %d", setting.subtract[current_trace]); else plot_printf(b->text, sizeof(b->text), "SUBTRACT\nOFF"); + b->icon = setting.subtract[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK; + } else if (data == 4) { + 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) { + 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; } return; } @@ -1624,6 +1634,22 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb) 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; + } else + set_auto_reflevel(true); + } + break; + case 5: + menu_push_submenu(menu_average); + return; + break; + #ifdef TINYSA4 case 6: save_to_sd(1+(2< menu_back }; - +#if 0 static const menuitem_t menu_storage[] = { { MT_ADV_CALLBACK,0, "TRACE %d", menu_storage_acb}, @@ -2782,7 +2809,7 @@ static const menuitem_t menu_storage[] = { MT_ADV_CALLBACK,5, "WRITE\n"S_RARROW"SD",menu_storage_acb}, { MT_NONE, 0, NULL, menu_back} // next-> menu_back }; - +#endif static const menuitem_t menu_trace[] = { { MT_ADV_CALLBACK|MT_REPEATS,DATA_STARTS_REPEATS(0,TRACES_MAX), "TRACE %d", menu_trace_acb}, @@ -2813,7 +2840,8 @@ static const menuitem_t menu_traces[] = { 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_SUBMENU, 0, "CALC", menu_average}, + { MT_ADV_CALLBACK,4, "NORMALIZE", menu_traces_acb}, + { MT_ADV_CALLBACK,5, MT_CUSTOM_LABEL, menu_traces_acb}, { 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}, @@ -2824,6 +2852,9 @@ static const menuitem_t menu_traces[] = static const menuitem_t menu_display[] = { { MT_ADV_CALLBACK,0, "PAUSE\nSWEEP", menu_pause_acb}, { MT_ADV_CALLBACK,1, "WATER\nFALL", menu_waterfall_acb}, +#ifdef __VBW__ + { MT_SUBMENU, 0, "VBW", menu_vbw}, +#endif #ifdef __LIMITS__ { MT_SUBMENU, 0, "LIMITS", menu_limit_select}, #endif @@ -3497,7 +3528,7 @@ redraw_cal_status: if (setting.subtract[0]) { ili9341_set_foreground(LCD_BRIGHT_COLOR_GREEN); ili9341_drawstring("Norm.", x, y); - y = add_quick_menu(y, (menuitem_t *)menu_storage); + y = add_quick_menu(y, (menuitem_t *)menu_display); } // RBW