diff --git a/nanovna.h b/nanovna.h index 09ddf68..c3f6b40 100644 --- a/nanovna.h +++ b/nanovna.h @@ -206,6 +206,7 @@ int GetAverage(void); void set_storage(void); void set_clear_storage(void); void set_subtract_storage(void); +void toggle_normalize(void); void toggle_waterfall(void); void set_mode(int); int GetMode(void); diff --git a/sa_core.c b/sa_core.c index 18f4fca..4a92f14 100644 --- a/sa_core.c +++ b/sa_core.c @@ -423,6 +423,20 @@ void set_subtract_storage(void) dirty = true; } + +void toggle_normalize(void) +{ + if (!setting.subtract_stored) { + for (int i=0; i 0) { // Auto attenuate + if (!in_selftest && setting.mode == M_LOW && setting.auto_attenuation && max_index[0] > 0 && !setting.subtract_stored) { // Auto attenuate setting.atten_step = false; // No step attenuate in low mode auto attenuate float old_attenuate = get_attenuation(); float actual_max_level = actual_t[max_index[0]] - old_attenuate; diff --git a/ui_sa.c b/ui_sa.c index 4635ef3..c1dcfd3 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -893,6 +893,9 @@ static void menu_storage_cb(int item, uint8_t data) set_subtract_storage(); break; case 3: + toggle_normalize(); + break; + case 4: toggle_waterfall(); break; } @@ -1460,7 +1463,8 @@ static const menuitem_t menu_display[] = { { MT_CALLBACK,0, "\2STORE\0TRACE", menu_storage_cb}, { MT_CALLBACK,1, "\2CLEAR\0STORED", menu_storage_cb}, { MT_CALLBACK,2, "\2SUBTRACT\0STORED",menu_storage_cb}, - { MT_CALLBACK,3, "WATERFALL", menu_storage_cb}, + { MT_CALLBACK,3, "NORMALIZE", menu_storage_cb}, + { MT_CALLBACK,4, "WATERFALL", menu_storage_cb}, { MT_KEYPAD, KM_SWEEP_TIME, "\2SWEEP\0TIME", NULL}, { MT_CANCEL, 0, "\032 BACK", NULL }, @@ -1656,10 +1660,13 @@ static void menu_item_modify_attribute( if (item ==1 && setting.show_stored){ mark = true; } - if (item == 3 && setting.subtract_stored){ + if (item == 3 && setting.subtract_stored && setting.show_stored){ + mark = true; + } + if (item == 4 && setting.subtract_stored && !setting.show_stored){ mark = true; } - if (item == 4 && get_waterfall()){ + if (item == 5 && get_waterfall()){ mark = true; } #ifdef __SPUR__