diff --git a/app/app.c b/app/app.c index 5a8d112..26cf97a 100644 --- a/app/app.c +++ b/app/app.c @@ -1711,16 +1711,22 @@ void APP_TimeSlice500ms(void) if (gDTMF_RX_live_timeout > 0) { - if (--gDTMF_RX_live_timeout == 0) + #ifdef ENABLE_RSSI_BAR + if (center_line == CENTER_LINE_DTMF_DEC || + center_line == CENTER_LINE_NONE) // wait till the center line is free for us to use before timing out + #endif { - if (gDTMF_RX_live[0] != 0) + if (--gDTMF_RX_live_timeout == 0) { - memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); - gUpdateDisplay = true; + if (gDTMF_RX_live[0] != 0) + { + memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); + gUpdateDisplay = true; + } } } } - + if (gDTMF_RX_timeout > 0) if (--gDTMF_RX_timeout == 0) DTMF_clear_RX(); diff --git a/app/dtmf.c b/app/dtmf.c index fc1954e..19353b9 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -403,13 +403,12 @@ void DTMF_Reply(void) if (pString == NULL) return; - Delay = gEeprom.DTMF_PRELOAD_TIME; + Delay = (gEeprom.DTMF_PRELOAD_TIME < 200) ? 200 : gEeprom.DTMF_PRELOAD_TIME; if (gEeprom.DTMF_SIDE_TONE) - { // the will also hear the transmitted tones + { // the user will also hear the transmitted tones GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); gEnableSpeaker = true; - Delay = (gEeprom.DTMF_PRELOAD_TIME < 60) ? 60 : gEeprom.DTMF_PRELOAD_TIME; } SYSTEM_DelayMs(Delay); diff --git a/driver/bk4819.c b/driver/bk4819.c index 0090c2e..5f654b5 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -913,7 +913,7 @@ void BK4819_EnableDTMF(void) // REG_24 <3:0> 14 Max symbol number for SelCall detection // const uint16_t threshold = 24; // doesn't decode non-QS radios - const uint16_t threshold = 140; // but 128 ~ 247 does + const uint16_t threshold = 200; // but 128 ~ 247 does BK4819_WriteRegister(BK4819_REG_24, // 1 00011000 1 1 1 1110 (1u << BK4819_REG_24_SHIFT_UNKNOWN_15) | (threshold << BK4819_REG_24_SHIFT_THRESHOLD) // 0 ~ 255 diff --git a/firmware.bin b/firmware.bin index d2c5ec5..0971643 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 8576750..b7b70f9 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/radio.c b/radio.c index 538200b..2b3235a 100644 --- a/radio.c +++ b/radio.c @@ -564,8 +564,8 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) case BK4819_FILTER_BW_WIDE: case BK4819_FILTER_BW_NARROW: #ifdef ENABLE_AM_FIX - BK4819_SetFilterBandwidth(Bandwidth, gRxVfo->AM_mode && gSetting_AM_fix); -// BK4819_SetFilterBandwidth(Bandwidth, false); +// BK4819_SetFilterBandwidth(Bandwidth, gRxVfo->AM_mode && gSetting_AM_fix); + BK4819_SetFilterBandwidth(Bandwidth, true); #else BK4819_SetFilterBandwidth(Bandwidth, false); #endif @@ -732,6 +732,7 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) #else if (gCurrentFunction != FUNCTION_TRANSMIT) { + BK4819_DisableDTMF(); BK4819_EnableDTMF(); InterruptMask |= BK4819_REG_3F_DTMF_5TONE_FOUND; } @@ -812,8 +813,8 @@ void RADIO_SetTxParameters(void) case BK4819_FILTER_BW_WIDE: case BK4819_FILTER_BW_NARROW: #ifdef ENABLE_AM_FIX - BK4819_SetFilterBandwidth(Bandwidth, gCurrentVfo->AM_mode && gSetting_AM_fix); -// BK4819_SetFilterBandwidth(Bandwidth, false); +// BK4819_SetFilterBandwidth(Bandwidth, gCurrentVfo->AM_mode && gSetting_AM_fix); + BK4819_SetFilterBandwidth(Bandwidth, true); #else BK4819_SetFilterBandwidth(Bandwidth, false); #endif diff --git a/ui/main.c b/ui/main.c index 2534fd3..6512816 100644 --- a/ui/main.c +++ b/ui/main.c @@ -36,17 +36,6 @@ #include "ui/main.h" #include "ui/ui.h" -enum center_line_t { - CENTER_LINE_NONE = 0, - CENTER_LINE_IN_USE, - CENTER_LINE_AUDIO_BAR, - CENTER_LINE_RSSI, - CENTER_LINE_AM_FIX_DATA, - CENTER_LINE_DTMF_DEC, - CENTER_LINE_CHARGE_DATA -}; -typedef enum center_line_t center_line_t; - center_line_t center_line = CENTER_LINE_NONE; // *************************************************************************** diff --git a/ui/main.h b/ui/main.h index 3c5b27d..80024f9 100644 --- a/ui/main.h +++ b/ui/main.h @@ -17,6 +17,19 @@ #ifndef UI_MAIN_H #define UI_MAIN_H +enum center_line_t { + CENTER_LINE_NONE = 0, + CENTER_LINE_IN_USE, + CENTER_LINE_AUDIO_BAR, + CENTER_LINE_RSSI, + CENTER_LINE_AM_FIX_DATA, + CENTER_LINE_DTMF_DEC, + CENTER_LINE_CHARGE_DATA +}; +typedef enum center_line_t center_line_t; + +extern center_line_t center_line; + void UI_DisplayAudioBar(void); void UI_UpdateRSSI(const int16_t rssi, const int vfo); void UI_DisplayMain(void);