From ab3ee6451d596dea8f81c782be883c8207ad53c2 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Tue, 8 Dec 2020 09:57:43 +0100 Subject: [PATCH] Added ultra setting switch --- nanovna.h | 2 ++ sa_core.c | 23 ++++++++++++++++++----- si4432.c | 4 ++-- ui_sa.c | 15 +++++++++++++++ 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/nanovna.h b/nanovna.h index f59b74a..6863bf6 100644 --- a/nanovna.h +++ b/nanovna.h @@ -216,6 +216,7 @@ void SetPowerGrid(int); void SetRefLevel(float); void set_refer_output(int); void toggle_below_IF(void); +void toggle_ultra(void); int get_refer_output(void); void set_attenuation(float); float get_attenuation(void); @@ -813,6 +814,7 @@ typedef struct setting int modulation_frequency; uint32_t checksum; int extra_lna; + int ultra; }setting_t; extern setting_t setting; diff --git a/sa_core.c b/sa_core.c index 45a2969..2f8db67 100644 --- a/sa_core.c +++ b/sa_core.c @@ -128,6 +128,7 @@ void reset_settings(int m) setting.attack=1; setting.noise=5; setting.below_IF = S_AUTO_OFF; + setting.ultra = S_AUTO_OFF; setting.repeat = 1; setting.tracking_output = false; setting.measurement = M_OFF; @@ -395,6 +396,17 @@ void toggle_below_IF(void) dirty = true; } +void toggle_ultra(void) +{ + if (S_IS_AUTO(setting.ultra )) + setting.ultra = false; + else if (setting.ultra) + setting.ultra = S_AUTO_OFF; + else + setting.ultra = true; + dirty = true; +} + void set_modulation(int m) { setting.modulation = m; @@ -1890,11 +1902,12 @@ modulation_again: } } // -------------- set ultra --------------------------------- - if (setting.mode == M_LOW && config.ultra && f > 850000000U ) { - enable_ultra(true); - } else - enable_ultra(false); - + if (setting.mode == M_LOW && config.ultra) { + if ((S_IS_AUTO(setting.ultra)&& f > 850000000U) || S_STATE(setting.ultra) ) { + enable_ultra(true); + } else + enable_ultra(false); + } // -------------------------------- Acquisition loop for one requested frequency covering spur avoidance and vbwsteps ------------------------ pureRSSI_t RSSI = float_TO_PURE_RSSI(-150); //#define __DEBUG_SPUR__ diff --git a/si4432.c b/si4432.c index 078e934..bf15daa 100644 --- a/si4432.c +++ b/si4432.c @@ -2356,9 +2356,9 @@ void enable_rx_output(int s) void enable_high(int s) { if (s) - SI4463_set_gpio(2,GPIO_LOW); - else SI4463_set_gpio(2,GPIO_HIGH); + else + SI4463_set_gpio(2,GPIO_LOW); } diff --git a/ui_sa.c b/ui_sa.c index bce99c7..dc3418f 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -1284,6 +1284,20 @@ static UI_FUNCTION_ADV_CALLBACK(menu_settings_below_if_acb){ draw_menu(); } +static UI_FUNCTION_ADV_CALLBACK(menu_settings_ultra_acb){ + (void)item; + (void)data; + if(b){ + if (S_IS_AUTO(setting.ultra)) + b->icon = BUTTON_ICON_CHECK_AUTO; + else + b->icon = setting.ultra ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK; + return; + } + toggle_ultra(); + draw_menu(); +} + static UI_FUNCTION_ADV_CALLBACK(menu_lo_output_acb){ (void)item; (void)data; @@ -1712,6 +1726,7 @@ static const menuitem_t menu_settings3[] = { MT_KEYPAD, KM_R, "R", "Set R"}, { MT_KEYPAD, KM_MOD, "MODULO", "Set MODULO"}, { MT_KEYPAD, KM_MUX, "MUX", "Set MUX"}, + { MT_ADV_CALLBACK | MT_LOW, 0, "ULTRA", menu_settings_ultra_acb}, #ifdef __HAM_BAND__ { MT_ADV_CALLBACK, 0, "HAM\nBANDS", menu_settings_ham_bands},