diff --git a/nanovna.h b/nanovna.h index 4e11dfc..93fdaf2 100644 --- a/nanovna.h +++ b/nanovna.h @@ -903,6 +903,7 @@ void set_switches(int); void set_trigger_level(float); void set_trigger(int); void update_rbw(void); +void set_fast_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 4909937..86d51e6 100644 --- a/sa_core.c +++ b/sa_core.c @@ -790,6 +790,14 @@ void set_mode(int m) extern int SI4432_offset_delay; +int fast_speedup = 0; + +void set_fast_speedup(int s) +{ + fast_speedup = s; + dirty = true; +} + void calculate_step_delay(void) { if (setting.step_delay_mode == SD_MANUAL || setting.step_delay != 0) { // The latter part required for selftest 3 @@ -824,6 +832,8 @@ void calculate_step_delay(void) #endif if (setting.step_delay_mode == SD_PRECISE) // In precise mode wait twice as long for RSSI to stabalize SI4432_step_delay *= 2; + if (fast_speedup >0) + SI4432_offset_delay = SI4432_step_delay / fast_speedup; } if (setting.offset_delay != 0) // Override if set SI4432_offset_delay = setting.offset_delay; diff --git a/ui_sa.c b/ui_sa.c index 6dd1497..6e31407 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -301,7 +301,7 @@ const uint16_t right_icons [] = enum { KM_START=1, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_REFLEVEL, KM_SCALE, KM_ATTENUATION, KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE, KM_LOWOUTLEVEL, KM_DECAY, KM_NOISE, - KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER, KM_LEVELSWEEP, KM_SWEEP_TIME, KM_OFFSET_DELAY, + KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER, KM_LEVELSWEEP, KM_SWEEP_TIME, KM_OFFSET_DELAY, KM_FAST_SPEEDUP }; @@ -516,6 +516,7 @@ static const keypads_t * const keypads_mode_tbl[] = { keypads_plusmin, // KM_LEVELSWEEP keypads_time, // KM_SWEEP_TIME keypads_positive, // KM_OFFSET_DELAY + keypads_positive, // KM_FAST_SPEEDUP }; #ifdef __VNA__ @@ -527,7 +528,7 @@ static const char * const keypad_mode_label[] = { static const char * const keypad_mode_label[] = { "error", "START", "STOP", "CENTER", "SPAN", "FREQ", "\2REF\0LEVEL", "SCALE", // 0-7 "ATTENUATE", "\2ACTUAL\0POWER", "IF", "\2SAMPLE\0DELAY", "DRIVE", "LEVEL", "SCANS", "LEVEL", // 8-15 - "FREQ" , "\2SAMPLE\0REPEAT", "OFFSET", "\2TRIGGER\0LEVEL", "\2LEVEL\0SWEEP", "\2SWEEP\0SECONDS", "\2OFFSET\0DELAY" // 16- + "FREQ" , "\2SAMPLE\0REPEAT", "OFFSET", "\2TRIGGER\0LEVEL", "\2LEVEL\0SWEEP", "\2SWEEP\0SECONDS", "\2OFFSET\0DELAY", "\2FAST\0SPEEDUP" // 16- }; #endif @@ -1393,6 +1394,7 @@ static const menuitem_t menu_scanning_speed[] = { MT_CALLBACK, SD_NORMAL, "NORMAL", menu_scanning_speed_cb}, // order must match definition of enum { MT_CALLBACK, SD_PRECISE, "PRECISE", menu_scanning_speed_cb}, { MT_CALLBACK | MT_LOW,SD_FAST, "FAST", menu_scanning_speed_cb}, + { MT_KEYPAD | MT_LOW,KM_FAST_SPEEDUP, "\2FAST\0SPEEDUP", "2..20"}, { MT_KEYPAD, KM_SAMPLETIME, "\2SAMPLE\0DELAY", "300..30000"}, // item number must match SD_MANUAL { MT_KEYPAD, KM_OFFSET_DELAY, "\2OFFSET\0DELAY", "300..30000"}, // item number must match SD_MANUAL { MT_CANCEL, 0, "\032 BACK", NULL }, @@ -1942,6 +1944,9 @@ set_numeric_value(void) case KM_OFFSET_DELAY: set_offset_delay(uistat.value); break; + case KM_FAST_SPEEDUP: + set_fast_speedup(uistat.value); + break; case KM_REPEAT: set_repeat(uistat.value); break;