diff --git a/nanovna.h b/nanovna.h index 9b9b267..05467a0 100644 --- a/nanovna.h +++ b/nanovna.h @@ -1238,8 +1238,9 @@ typedef struct setting uint8_t test; // current test number uint8_t harmonic; // used harmonic number 1...5 uint8_t fast_speedup; // 0 - 20 + uint8_t faster_speedup; // 0 - 20 uint8_t _traces; // enabled traces flags - uint8_t draw_line; // uses the trigger level setting + uint8_t draw_line; // uses the trigger level setting #ifdef TINYSA4 uint8_t lock_display; #endif @@ -1456,7 +1457,7 @@ typedef struct properties { //sizeof(properties_t) == 0x1200 #define CONFIG_MAGIC 0x434f4e60 /* 'CONF' */ -#define SETTING_MAGIC 0x434f4e63 +#define SETTING_MAGIC 0x434f4e64 extern int16_t lastsaveid; //extern properties_t *active_props; @@ -1783,6 +1784,7 @@ void set_trigger_level(float); void set_trigger(int); void update_rbw(void); void set_fast_speedup(int); +void set_faster_speedup(int); //extern int setting_measurement; void self_test(int); //extern int setting_test; diff --git a/sa_core.c b/sa_core.c index fa3cd6c..a0812c8 100644 --- a/sa_core.c +++ b/sa_core.c @@ -682,6 +682,7 @@ void reset_settings(int m) setting.trigger_direction = T_UP; setting.trigger_mode = T_MID; setting.fast_speedup = 0; + setting.faster_speedup = 0; setting.trigger_level = -150.0; #ifdef __TRIGGER_TRACE__ setting.trigger_trace = 255; @@ -2036,6 +2037,12 @@ void set_fast_speedup(int s) dirty = true; } +void set_faster_speedup(int s) +{ + setting.faster_speedup = s; + dirty = true; +} + // // Table for auto set sweep step/offset delays from RBW // @@ -2129,6 +2136,8 @@ void calculate_step_delay(void) SI4432_step_delay += (SI4432_step_delay>>2) ; if (setting.fast_speedup >0) SI4432_offset_delay = SI4432_step_delay / setting.fast_speedup; + if (setting.faster_speedup >0) + SI4432_step_delay = SI4432_step_delay / setting.faster_speedup; } if (setting.offset_delay != 0) // Override if set SI4432_offset_delay = setting.offset_delay; diff --git a/ui.c b/ui.c index af469be..5649764 100644 --- a/ui.c +++ b/ui.c @@ -1351,7 +1351,7 @@ enum { // #15 KM_REPEAT, KM_EXT_GAIN, KM_TRIGGER, KM_LEVELSWEEP, KM_SWEEP_TIME, // #20 - KM_OFFSET_DELAY, KM_FAST_SPEEDUP, KM_GRIDLINES, KM_MARKER, KM_MODULATION, + KM_OFFSET_DELAY, KM_FAST_SPEEDUP, KM_FASTER_SPEEDUP, KM_GRIDLINES, KM_MARKER, KM_MODULATION, // #25 KM_HIGHOUTLEVEL, #ifdef TINYSA4 @@ -1429,6 +1429,7 @@ static const struct { [KM_SWEEP_TIME] = {keypads_time , "SWEEP\nSECONDS"}, // KM_SWEEP_TIME [KM_OFFSET_DELAY] = {keypads_positive , "OFFSET\nDELAY"}, // KM_OFFSET_DELAY #20 [KM_FAST_SPEEDUP] = {keypads_positive , "FAST\nSPEEDUP"}, // KM_FAST_SPEEDUP +[KM_FASTER_SPEEDUP] = {keypads_positive , "FASTER\nSPEEDUP"}, // KM_FAST_SPEEDUP [KM_GRIDLINES] = {keypads_positive , "MINIMUM\nGRIDLINES"}, // KM_GRIDLINES [KM_MARKER] = {keypads_freq , "MARKER\nFREQ"}, // KM_MARKER [KM_MODULATION] = {keypads_freq , "MODULATION\nFREQ"}, // KM_MODULATION @@ -4494,6 +4495,7 @@ static const menuitem_t menu_sweep_speed[] = { MT_ADV_CALLBACK, SD_NOISE_SOURCE, "NOISE\nSOURCE", menu_scanning_speed_acb}, #ifdef TINYSA4 { MT_KEYPAD, KM_FAST_SPEEDUP,"SPEEDUP\n\b%s", "2..20, 0=disable"}, + { MT_KEYPAD, KM_FASTER_SPEEDUP,"FASTER\n\b%s", "2..10, 0=disable"}, #else { MT_KEYPAD | MT_LOW,KM_FAST_SPEEDUP,"SPEEDUP\n\b%s", "2..20, 0=disable"}, #endif @@ -5194,6 +5196,10 @@ static void fetch_numeric_target(uint8_t mode) uistat.value = setting.fast_speedup; plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value)); break; + case KM_FASTER_SPEEDUP: + uistat.value = setting.faster_speedup; + plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value)); + break; case KM_REPEAT: uistat.value = setting.repeat; plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value)); @@ -5457,6 +5463,9 @@ set_numeric_value(void) case KM_FAST_SPEEDUP: set_fast_speedup(uistat.value); break; + case KM_FASTER_SPEEDUP: + set_faster_speedup(uistat.value); + break; case KM_REPEAT: set_repeat(uistat.value); break;