diff --git a/nanovna.h b/nanovna.h index 5827db7..18fd053 100644 --- a/nanovna.h +++ b/nanovna.h @@ -168,7 +168,7 @@ extern char *hw_text; #define HIGH_MAX_FREQ_MHZ 1130 #define MINIMUM_DIRECT_FREQ 823000000ULL #define ULTRA_AUTO 10000000000ULL // 10GHz - +#define MAX_CTCSS_FREQ 255 //#define LOW_MAX_FREQ 800000000ULL //#define MIN_BELOW_LO 550000000ULL // not used???? diff --git a/sa_core.c b/sa_core.c index 7280a66..85013ab 100644 --- a/sa_core.c +++ b/sa_core.c @@ -3542,9 +3542,9 @@ static const int fm_modulation[MODULATION_TABLES][MAX_MODULATION_STEPS] = #ifdef TINYSA3 static const int fm_modulation_offset[4] = { - 85000, + 83125, // 80000 + 2*LND*156.25 (LND=10, low band step = 156.25 Hz) 80000, - 165000, + 163750, // 160000 + 2*HND*312.5 (HND=6, high band step = 312.5 Hz) 160000 }; #endif @@ -3752,9 +3752,12 @@ pureRSSI_t perform(bool break_on_operation, int i, freq_t f, int tracking) / modulation_steps >>= 1; } if (modulation_steps >= 4) { - int hn = (config.wfm_1khz_harmonic > 0 && setting.modulation_frequency < 250.0) ? (int)((1000.0 / setting.modulation_frequency) + 0.5) : 0; + int hn = (config.wfm_1khz_harmonic > 0 && setting.modulation_frequency < MAX_CTCSS_FREQ) ? (int)((1000.0 / setting.modulation_frequency) + 0.5) : 0; + int local_deviation = setting.modulation_deviation_div100; + if (hn) + local_deviation /= 7; // 15% CTCSS deviation for (int i = 0; i < modulation_steps/4+1; i++) { - fm_modulation[i] = setting.modulation_deviation_div100 * sine_wave[i*sine_wave_index]/100; + fm_modulation[i] = local_deviation * sine_wave[i*sine_wave_index]/100; fm_modulation[modulation_steps/2 - i] = fm_modulation[i]; fm_modulation[modulation_steps/2 + i] = -fm_modulation[i]; fm_modulation[modulation_steps - i] = -fm_modulation[i]; diff --git a/ui.c b/ui.c index 46e9e61..ee25796 100644 --- a/ui.c +++ b/ui.c @@ -2512,9 +2512,11 @@ static UI_FUNCTION_ADV_CALLBACK(menu_audible_harmonic) (void)item; (void)data; if (b){ - b->icon = config.wfm_1khz_harmonic ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK; + b->icon = (config.wfm_1khz_harmonic && setting.modulation_frequency < MAX_CTCSS_FREQ) ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK; return; } + if (setting.modulation_frequency >= MAX_CTCSS_FREQ) + return; config.wfm_1khz_harmonic = config.wfm_1khz_harmonic ? 0 : 100; // Toggle between off and 100% dirty = true; // menu_move_back(false); @@ -4472,7 +4474,7 @@ static const menuitem_t menu_modulation[] = { { MT_FORM | MT_KEYPAD, KM_MODULATION, "FREQ: %s", "1Hz..3.5kHz"}, { MT_FORM | MT_KEYPAD, KM_DEPTH, "AM DEPTH: %s%%", "0..100"}, { MT_FORM | MT_KEYPAD, KM_DEVIATION, "FM DEVIATION: %s", "1kHz..300kHz"}, - { MT_FORM | MT_ADV_CALLBACK, 0, "Add Audible harmonic", menu_audible_harmonic}, + { MT_FORM | MT_ADV_CALLBACK, 0, "CTCSS + 1 kHz", menu_audible_harmonic}, // { MT_FORM | MT_ADV_CALLBACK, MO_NFM2, MT_CUSTOM_LABEL, menu_modulation_acb}, // { MT_FORM | MT_ADV_CALLBACK, MO_NFM3, MT_CUSTOM_LABEL, menu_modulation_acb}, #else