From 9493f34c236a775154c8f9f49f7ccf9ce9c43cde Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sat, 30 Sep 2023 11:22:19 +0100 Subject: [PATCH] Various DTMF bug fixes and renames --- Makefile | 4 +- app/action.c | 7 ++ app/app.c | 166 ++++++++++++++++++++++---------------- app/dtmf.c | 192 ++++++++++++++++++++++++++++---------------- app/dtmf.h | 33 +++++--- app/main.c | 28 ++++--- app/menu.c | 23 ++++-- app/scanner.c | 4 +- audio.c | 15 +++- audio.h | 2 + driver/bk4819.c | 2 +- firmware.bin | Bin 58340 -> 58368 bytes firmware.packed.bin | Bin 58358 -> 58386 bytes functions.c | 20 +++-- misc.c | 3 +- misc.h | 1 - radio.c | 5 +- settings.c | 2 +- ui/main.c | 41 +++++++--- ui/menu.c | 16 +++- ui/menu.h | 1 + 21 files changed, 361 insertions(+), 204 deletions(-) diff --git a/Makefile b/Makefile index f194b920..6fe777f7 100644 --- a/Makefile +++ b/Makefile @@ -26,8 +26,8 @@ ENABLE_NO_SCAN_TIMEOUT := 1 ENABLE_AM_FIX := 1 ENABLE_AM_FIX_SHOW_DATA := 1 ENABLE_SQUELCH1_LOWER := 0 -ENABLE_RSSI_BAR := 1 -ENABLE_AUDIO_BAR := 1 +ENABLE_RSSI_BAR := 0 +ENABLE_AUDIO_BAR := 0 #ENABLE_COPY_CHAN_TO_VFO := 1 #ENABLE_SINGLE_VFO_CHAN := 1 #ENABLE_BAND_SCOPE := 1 diff --git a/app/action.c b/app/action.c index 4ac57b9d..5acb8c56 100644 --- a/app/action.c +++ b/app/action.c @@ -14,6 +14,8 @@ * limitations under the License. */ +#include + #include "app/action.h" #include "app/app.h" #include "app/dtmf.h" @@ -167,6 +169,11 @@ void ACTION_Scan(bool bRestart) gMonitor = false; + DTMF_clear_RX(); + + gDTMF_RX_live_timeout = 0; + memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); + RADIO_SelectVfos(); #ifdef ENABLE_NOAA diff --git a/app/app.c b/app/app.c index 4d9c2ab0..152f66aa 100644 --- a/app/app.c +++ b/app/app.c @@ -73,10 +73,10 @@ static void updateRSSI(const int vfo) if (gEeprom.VfoInfo[vfo].AM_mode && gSetting_AM_fix) rssi -= rssi_gain_diff[vfo]; #endif - + if (gCurrentRSSI[vfo] == rssi) return; // no change - + gCurrentRSSI[vfo] = rssi; UI_UpdateRSSI(rssi, vfo); @@ -119,7 +119,7 @@ static void APP_CheckForIncoming(void) updateRSSI(gEeprom.RX_CHANNEL); gUpdateRSSI = true; } - + return; } @@ -182,6 +182,10 @@ static void APP_HandleIncoming(void) if (!g_SquelchLost) { // squelch is closed + + if (gDTMF_RX_index > 0) + DTMF_clear_RX(); + if (gCurrentFunction != FUNCTION_FOREGROUND) { FUNCTION_Select(FUNCTION_FOREGROUND); @@ -214,12 +218,13 @@ static void APP_HandleIncoming(void) if (!bFlag) return; - DTMF_HandleRequest(); - if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) { // not scanning if (gRxVfo->DTMF_DECODING_ENABLE || gSetting_KILLED) - { // DTMF is enabled + { // DTMF DCD is enabled + +// DTMF_HandleRequest(); + if (gDTMF_CallState == DTMF_CALL_STATE_NONE) { if (gRxReceptionMode == RX_MODE_DETECTED) @@ -234,7 +239,6 @@ static void APP_HandleIncoming(void) gUpdateStatus = true; gUpdateDisplay = true; - return; } } @@ -531,7 +535,7 @@ void APP_StartListening(FUNCTION_Type_t Function, const bool reset_am_fix) } // ****************************************** - + // original setting uint8_t lna_short = orig_lna_short; uint8_t lna = orig_lna; @@ -777,34 +781,40 @@ void APP_CheckRadioInterrupts(void) // g_CTCSS_Lost = true; if (interrupt_status_bits & BK4819_REG_02_DTMF_5TONE_FOUND) - { // save the new DTMF RX'ed character - - // fetch the RX'ed char + { // save the RX'ed DTMF character const char c = DTMF_GetCharacter(BK4819_GetDTMF_5TONE_Code()); if (c != 0xff) { - if (gCurrentFunction == FUNCTION_RECEIVE || - gCurrentFunction == FUNCTION_INCOMING || - gCurrentFunction == FUNCTION_MONITOR) + if (gCurrentFunction != FUNCTION_TRANSMIT) { - gDTMF_RequestPending = true; - gDTMF_RecvTimeout = DTMF_RX_timeout_500ms; - // shift the RX buffer down one - if need be - if (gDTMF_WriteIndex >= sizeof(gDTMF_Received)) - memmove(gDTMF_Received, &gDTMF_Received[1], --gDTMF_WriteIndex); - gDTMF_Received[gDTMF_WriteIndex++] = c; - - // live DTMF decoder - size_t len = strlen(gDTMF_RX_live); - // shift the RX buffer down one - if need be - if (len >= (sizeof(gDTMF_RX_live) - 1)) - memmove(&gDTMF_RX_live[0], &gDTMF_RX_live[1], --len); - gDTMF_RX_live[len++] = c; - gDTMF_RX_live[len] = 0; - gDTMF_RX_live_timeout = DTMF_RX_live_timeout_500ms; // time till we delete it - gUpdateDisplay = true; - - DTMF_HandleRequest(); + if (gSetting_live_DTMF_decoder) + { + size_t len = strlen(gDTMF_RX_live); + if (len >= (sizeof(gDTMF_RX_live) - 1)) + { // make room + memmove(&gDTMF_RX_live[0], &gDTMF_RX_live[1], sizeof(gDTMF_RX_live) - 1); + len--; + } + gDTMF_RX_live[len++] = c; + gDTMF_RX_live[len] = 0; + gDTMF_RX_live_timeout = DTMF_RX_live_timeout_500ms; // time till we delete it + gUpdateDisplay = true; + } + + if (gRxVfo->DTMF_DECODING_ENABLE || gSetting_KILLED) + { + if (gDTMF_RX_index >= (sizeof(gDTMF_RX) - 1)) + { // make room + memmove(&gDTMF_RX[0], &gDTMF_RX[1], sizeof(gDTMF_RX) - 1); + gDTMF_RX_index--; + } + gDTMF_RX[gDTMF_RX_index++] = c; + gDTMF_RX[gDTMF_RX_index] = 0; + gDTMF_RX_timeout = DTMF_RX_timeout_500ms; // time till we delete it + gDTMF_RX_pending = true; + + DTMF_HandleRequest(); + } } } } @@ -1257,7 +1267,7 @@ void APP_CheckKeys(void) while (i-- > 0) { SYSTEM_DelayMs(1); - + if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT)) { // PTT pressed if (count > 0) @@ -1666,9 +1676,9 @@ void cancelUserInputModes(void) gKeyInputCountdown = 0; if (gDTMF_InputMode || gInputBoxIndex > 0) { + memset(gDTMF_String, 0, sizeof(gDTMF_String)); gDTMF_InputMode = false; gDTMF_InputIndex = 0; - memset(gDTMF_String, 0, sizeof(gDTMF_String)); gInputBoxIndex = 0; gRequestDisplayScreen = DISPLAY_MAIN; gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; @@ -1692,11 +1702,18 @@ void APP_TimeSlice500ms(void) { if (--gDTMF_RX_live_timeout == 0) { - gDTMF_RX_live[0] = 0; - 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(); + // Skipped authentic device check #ifdef ENABLE_FMRADIO @@ -1711,8 +1728,16 @@ void APP_TimeSlice500ms(void) if (gReducedService) { BOARD_ADC_GetBatteryInfo(&gBatteryCurrentVoltage, &gBatteryCurrent); + if (gBatteryCurrent > 500 || gBatteryCalibration[3] < gBatteryCurrentVoltage) - overlay_FLASH_RebootToBootloader(); + { + #ifdef ENABLE_OVERLAY + overlay_FLASH_RebootToBootloader(); + #else + NVIC_SystemReset(); + #endif + } + return; } @@ -1892,7 +1917,7 @@ void APP_TimeSlice500ms(void) if (gScreenToDisplay == DISPLAY_SCANNER && gScannerEditState == 0 && gScanCssState < SCAN_CSS_STATE_FOUND) { gScanProgressIndicator++; - + #ifndef ENABLE_NO_SCAN_TIMEOUT if (gScanProgressIndicator > 32) { @@ -1900,15 +1925,28 @@ void APP_TimeSlice500ms(void) gScanCssState = SCAN_CSS_STATE_FOUND; else gScanCssState = SCAN_CSS_STATE_FAILED; - + gUpdateStatus = true; } #endif - + gUpdateDisplay = true; } - if (gDTMF_CallState != DTMF_CALL_STATE_NONE && gCurrentFunction != FUNCTION_TRANSMIT && gCurrentFunction != FUNCTION_RECEIVE) + if (gCurrentFunction != FUNCTION_TRANSMIT) + { + if (gDTMF_DecodeRingCountdown_500ms > 0) + { // make "ring-ring" sound + gDTMF_DecodeRingCountdown_500ms--; + AUDIO_PlayBeep(BEEP_880HZ_200MS); + } + } + else + gDTMF_DecodeRingCountdown_500ms = 0; + + if (gDTMF_CallState != DTMF_CALL_STATE_NONE && + gCurrentFunction != FUNCTION_TRANSMIT && + gCurrentFunction != FUNCTION_RECEIVE) { if (gDTMF_AUTO_RESET_TIME > 0) { @@ -1918,15 +1956,6 @@ void APP_TimeSlice500ms(void) gUpdateDisplay = true; } } - - if (gDTMF_DecodeRing && gDTMF_DecodeRingCountdown_500ms > 0) - { - if ((--gDTMF_DecodeRingCountdown_500ms % 3) == 0) - AUDIO_PlayBeep(BEEP_440HZ_500MS); - - if (gDTMF_DecodeRingCountdown_500ms == 0) - gDTMF_DecodeRing = false; - } } if (gDTMF_IsTx && gDTMF_TxStopCountdown_500ms > 0) @@ -1937,15 +1966,6 @@ void APP_TimeSlice500ms(void) gUpdateDisplay = true; } } - - if (gDTMF_RecvTimeout > 0) - { - if (--gDTMF_RecvTimeout == 0) - { - gDTMF_WriteIndex = 0; - memset(gDTMF_Received, 0, sizeof(gDTMF_Received)); - } - } } #ifdef ENABLE_ALARM @@ -2022,9 +2042,13 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) if (Key == KEY_EXIT && bKeyPressed && bKeyHeld && gDTMF_RX_live[0] != 0) { // clear the live DTMF decoder if the EXIT key is held - gDTMF_RX_live_timeout = 0; - gDTMF_RX_live[0] = 0; - gUpdateDisplay = true; + if (gDTMF_RX_live[0] != 0) + { + gDTMF_RX_live_timeout = 0; + memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); + + gUpdateDisplay = true; + } } if (!bKeyPressed) @@ -2065,10 +2089,12 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) BACKLIGHT_TurnOn(); - if (gDTMF_DecodeRing) - { - gDTMF_DecodeRing = false; + if (gDTMF_DecodeRingCountdown_500ms > 0) + { // cancel the ringing + gDTMF_DecodeRingCountdown_500ms = 0; + AUDIO_PlayBeep(BEEP_1KHZ_60MS_OPTIONAL); + if (Key != KEY_PTT) { gPttWasReleased = true; @@ -2115,7 +2141,8 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) Key != KEY_EXIT && Key != KEY_SIDE1 && Key != KEY_SIDE2 && - Key != KEY_STAR) + Key != KEY_STAR && + Key != KEY_MENU) { if (gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) { // frequency or CTCSS/DCS scanning @@ -2147,7 +2174,8 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) } } - if (gWasFKeyPressed && Key > KEY_9 && Key != KEY_F && Key != KEY_STAR && Key != KEY_MENU) + if (gWasFKeyPressed && Key > KEY_9 && Key != KEY_F && Key != KEY_STAR) +// if (gWasFKeyPressed && Key > KEY_9 && Key != KEY_F && Key != KEY_STAR && Key != KEY_MENU) { gWasFKeyPressed = false; gUpdateStatus = true; @@ -2203,7 +2231,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) else { if (gEeprom.DTMF_SIDE_TONE) - { + { // user will here the DTMF tones in speaker GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); gEnableSpeaker = true; } @@ -2416,7 +2444,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) if (gFlagStartScan) { gMonitor = false; - + #ifdef ENABLE_VOICE AUDIO_SetVoiceID(0, VOICE_ID_SCANNING_BEGIN); AUDIO_PlaySingleVoice(true); diff --git a/app/dtmf.c b/app/dtmf.c index 415f42ee..42c641f1 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -22,6 +22,7 @@ #endif #include "app/scanner.h" #include "bsp/dp32g030/gpio.h" +#include "audio.h" #include "driver/bk4819.h" #include "driver/eeprom.h" #include "driver/gpio.h" @@ -33,12 +34,16 @@ #include "ui/ui.h" char gDTMF_String[15]; -char gDTMF_InputBox[15]; -char gDTMF_Received[16]; -uint8_t gDTMF_WriteIndex = 0; +char gDTMF_InputBox[15]; +uint8_t gDTMF_InputIndex = 0; +bool gDTMF_InputMode = false; uint8_t gDTMF_PreviousIndex = 0; -uint8_t gDTMF_RecvTimeout = 0; + +char gDTMF_RX[17]; +uint8_t gDTMF_RX_index = 0; +uint8_t gDTMF_RX_timeout = 0; +bool gDTMF_RX_pending = false; char gDTMF_RX_live[20]; uint8_t gDTMF_RX_live_timeout = 0; @@ -48,12 +53,9 @@ char gDTMF_ID[4]; char gDTMF_Caller[4]; char gDTMF_Callee[4]; DTMF_State_t gDTMF_State; -bool gDTMF_DecodeRing; uint8_t gDTMF_DecodeRingCountdown_500ms; uint8_t gDTMFChosenContact; uint8_t gDTMF_AUTO_RESET_TIME; -uint8_t gDTMF_InputIndex; -bool gDTMF_InputMode; DTMF_CallState_t gDTMF_CallState; DTMF_ReplyState_t gDTMF_ReplyState; DTMF_CallMode_t gDTMF_CallMode; @@ -61,14 +63,22 @@ bool gDTMF_IsTx; uint8_t gDTMF_TxStopCountdown_500ms; bool gDTMF_IsGroupCall; -bool DTMF_ValidateCodes(char *pCode, uint8_t Size) +void DTMF_clear_RX(void) +{ + gDTMF_RX_timeout = 0; + gDTMF_RX_index = 0; + gDTMF_RX_pending = false; + memset(gDTMF_RX, 0, sizeof(gDTMF_RX)); +} + +bool DTMF_ValidateCodes(char *pCode, const unsigned int size) { unsigned int i; if (pCode[0] == 0xFF || pCode[0] == 0) return false; - for (i = 0; i < Size; i++) + for (i = 0; i < size; i++) { if (pCode[i] == 0xFF || pCode[i] == 0) { @@ -121,16 +131,16 @@ bool DTMF_FindContact(const char *pContact, char *pResult) return false; } -char DTMF_GetCharacter(const uint8_t code) +char DTMF_GetCharacter(const unsigned int code) { const char list[] = "0123456789ABCD*#"; return (code < ARRAY_SIZE(list)) ? list[code] : 0xFF; } -bool DTMF_CompareMessage(const char *pMsg, const char *pTemplate, uint8_t Size, bool bCheckGroup) +bool DTMF_CompareMessage(const char *pMsg, const char *pTemplate, const unsigned int size, const bool bCheckGroup) { unsigned int i; - for (i = 0; i < Size; i++) + for (i = 0; i < size; i++) { if (pMsg[i] != pTemplate[i]) { @@ -140,58 +150,69 @@ bool DTMF_CompareMessage(const char *pMsg, const char *pTemplate, uint8_t Size, } } - return DTMF_CALL_MODE_NOT_GROUP; + return true; } -DTMF_CallMode_t DTMF_CheckGroupCall(const char *pMsg, uint32_t Size) +DTMF_CallMode_t DTMF_CheckGroupCall(const char *pMsg, const unsigned int size) { - uint32_t i; - for (i = 0; i < Size; i++) + unsigned int i; + for (i = 0; i < size; i++) if (pMsg[i] == gEeprom.DTMF_GROUP_CALL_CODE) break; - return (i != Size) ? DTMF_CALL_MODE_GROUP : DTMF_CALL_MODE_NOT_GROUP; + + return (i < size) ? DTMF_CALL_MODE_GROUP : DTMF_CALL_MODE_NOT_GROUP; } -void DTMF_Append(char Code) +void DTMF_Append(const char code) { if (gDTMF_InputIndex == 0) { memset(gDTMF_InputBox, '-', sizeof(gDTMF_InputBox)); gDTMF_InputBox[sizeof(gDTMF_InputBox) - 1] = 0; } - else - if (gDTMF_InputIndex >= sizeof(gDTMF_InputBox)) - return; - gDTMF_InputBox[gDTMF_InputIndex++] = Code; + if (gDTMF_InputIndex < sizeof(gDTMF_InputBox)) + gDTMF_InputBox[gDTMF_InputIndex++] = code; } void DTMF_HandleRequest(void) -{ - char String[20]; - uint8_t Offset; +{ // proccess the RX'ed DTMF characters - if (!gDTMF_RequestPending) - return; + char String[20]; + unsigned int Offset; - gDTMF_RequestPending = false; + if (!gDTMF_RX_pending) + return; // nothing new received if (gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) + { // we're busy scanning + DTMF_clear_RX(); return; - + } + if (!gRxVfo->DTMF_DECODING_ENABLE && !gSetting_KILLED) + { // D-DCD is disabled or we're alive + DTMF_clear_RX(); return; + } + + gDTMF_RX_pending = false; + + if (gDTMF_RX_index >= 9) + { // look for the KILL code - if (gDTMF_WriteIndex >= 9) - { - Offset = gDTMF_WriteIndex - 9; sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, gEeprom.KILL_CODE); - if (DTMF_CompareMessage(gDTMF_Received + Offset, String, 9, true)) - { + Offset = gDTMF_RX_index - strlen(String); + + if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true)) + { // bugger + if (gEeprom.PERMIT_REMOTE_KILL) { - gSetting_KILLED = true; + gSetting_KILLED = true; // oooerr ! + + DTMF_clear_RX(); SETTINGS_SaveSettings(); @@ -212,82 +233,117 @@ void DTMF_HandleRequest(void) gDTMF_CallState = DTMF_CALL_STATE_NONE; - gUpdateDisplay = true; - gUpdateStatus = true; + gUpdateDisplay = true; + gUpdateStatus = true; return; } - + } + + if (gDTMF_RX_index >= 9) + { // look for the REVIVE code + sprintf(String, "%s%c%s", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE, gEeprom.REVIVE_CODE); - if (DTMF_CompareMessage(gDTMF_Received + Offset, String, 9, true)) - { + + Offset = gDTMF_RX_index - strlen(String); + + if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true)) + { // shit, we're back ! + gSetting_KILLED = false; + + DTMF_clear_RX(); + SETTINGS_SaveSettings(); + gDTMF_ReplyState = DTMF_REPLY_AB; gDTMF_CallState = DTMF_CALL_STATE_NONE; + gUpdateDisplay = true; gUpdateStatus = true; return; } } - if (gDTMF_WriteIndex >= 2) - { - if (DTMF_CompareMessage(gDTMF_Received + (gDTMF_WriteIndex - 2), "AB", 2, true)) - { - gDTMF_State = DTMF_STATE_TX_SUCC; - gUpdateDisplay = true; - return; + if (gDTMF_RX_index >= 2) + { // look for ACK reply + + strcpy(String, "AB"); + + Offset = gDTMF_RX_index - strlen(String); + + if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true)) + { // ends with "AB" + + if (gDTMF_ReplyState != DTMF_REPLY_NONE) // 1of11 +// if (gDTMF_CallState != DTMF_CALL_STATE_NONE) // 1of11 +// if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT) // 1of11 + { + gDTMF_State = DTMF_STATE_TX_SUCC; + DTMF_clear_RX(); + gUpdateDisplay = true; + return; + } } } - if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT && gDTMF_CallMode == DTMF_CALL_MODE_NOT_GROUP && gDTMF_WriteIndex >= 9) - { - Offset = gDTMF_WriteIndex - 9; - + if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT && + gDTMF_CallMode == DTMF_CALL_MODE_NOT_GROUP && + gDTMF_RX_index >= 9) + { // waiting for a reply + sprintf(String, "%s%c%s", gDTMF_String, gEeprom.DTMF_SEPARATE_CODE, "AAAAA"); - if (DTMF_CompareMessage(gDTMF_Received + Offset, String, 9, false)) - { + Offset = gDTMF_RX_index - strlen(String); + + if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), false)) + { // we got a response gDTMF_State = DTMF_STATE_CALL_OUT_RSP; + DTMF_clear_RX(); gUpdateDisplay = true; } } if (gSetting_KILLED || gDTMF_CallState != DTMF_CALL_STATE_NONE) + { // we've been killed or expecting a reply return; + } - if (gDTMF_WriteIndex >= 7) - { - Offset = gDTMF_WriteIndex - 7; + if (gDTMF_RX_index >= 7) + { // see if we're being called + + gDTMF_IsGroupCall = false; sprintf(String, "%s%c", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE); - gDTMF_IsGroupCall = false; + Offset = gDTMF_RX_index - strlen(String) - 3; + + if (DTMF_CompareMessage(gDTMF_RX + Offset, String, strlen(String), true)) + { // it's for us ! - if (DTMF_CompareMessage(gDTMF_Received + Offset, String, 4, true)) - { gDTMF_CallState = DTMF_CALL_STATE_RECEIVED; - memmove(gDTMF_Callee, gDTMF_Received + Offset + 0, 3); - memmove(gDTMF_Caller, gDTMF_Received + Offset + 4, 3); + memset(gDTMF_Callee, 0, sizeof(gDTMF_Callee)); + memset(gDTMF_Caller, 0, sizeof(gDTMF_Caller)); + memmove(gDTMF_Callee, gDTMF_RX + Offset + 0, 3); + memmove(gDTMF_Caller, gDTMF_RX + Offset + 4, 3); + + DTMF_clear_RX(); gUpdateDisplay = true; switch (gEeprom.DTMF_DECODE_RESPONSE) { - case 3: - gDTMF_DecodeRing = true; + case DTMF_DEC_RESPONSE_BOTH: gDTMF_DecodeRingCountdown_500ms = DTMF_decode_ring_countdown_500ms; - // Fallthrough - case 2: + case DTMF_DEC_RESPONSE_REPLY: gDTMF_ReplyState = DTMF_REPLY_AAAAA; break; - case 1: - gDTMF_DecodeRing = true; + case DTMF_DEC_RESPONSE_RING: gDTMF_DecodeRingCountdown_500ms = DTMF_decode_ring_countdown_500ms; break; default: - gDTMF_DecodeRing = false; + case DTMF_DEC_RESPONSE_NONE: + gDTMF_DecodeRingCountdown_500ms = 0; gDTMF_ReplyState = DTMF_REPLY_NONE; break; } diff --git a/app/dtmf.h b/app/dtmf.h index 3b4b425f..281fae9b 100644 --- a/app/dtmf.h +++ b/app/dtmf.h @@ -36,6 +36,13 @@ enum DTMF_CallState_t { DTMF_CALL_STATE_RECEIVED }; +enum DTMF_DecodeResponse_t { + DTMF_DEC_RESPONSE_NONE = 0, + DTMF_DEC_RESPONSE_RING, + DTMF_DEC_RESPONSE_REPLY, + DTMF_DEC_RESPONSE_BOTH +}; + typedef enum DTMF_CallState_t DTMF_CallState_t; enum DTMF_ReplyState_t { @@ -56,12 +63,16 @@ enum DTMF_CallMode_t { typedef enum DTMF_CallMode_t DTMF_CallMode_t; extern char gDTMF_String[15]; -extern char gDTMF_InputBox[15]; -extern char gDTMF_Received[16]; -extern uint8_t gDTMF_WriteIndex; +extern char gDTMF_InputBox[15]; +extern uint8_t gDTMF_InputIndex; +extern bool gDTMF_InputMode; extern uint8_t gDTMF_PreviousIndex; -extern uint8_t gDTMF_RecvTimeout; + +extern char gDTMF_RX[17]; +extern uint8_t gDTMF_RX_index; +extern uint8_t gDTMF_RX_timeout; +extern bool gDTMF_RX_pending; extern char gDTMF_RX_live[20]; extern uint8_t gDTMF_RX_live_timeout; @@ -71,25 +82,23 @@ extern char gDTMF_ID[4]; extern char gDTMF_Caller[4]; extern char gDTMF_Callee[4]; extern DTMF_State_t gDTMF_State; -extern bool gDTMF_DecodeRing; extern uint8_t gDTMF_DecodeRingCountdown_500ms; extern uint8_t gDTMFChosenContact; extern uint8_t gDTMF_AUTO_RESET_TIME; -extern uint8_t gDTMF_InputIndex; -extern bool gDTMF_InputMode; extern DTMF_CallState_t gDTMF_CallState; extern DTMF_ReplyState_t gDTMF_ReplyState; extern DTMF_CallMode_t gDTMF_CallMode; extern bool gDTMF_IsTx; extern uint8_t gDTMF_TxStopCountdown_500ms; -bool DTMF_ValidateCodes(char *pCode, uint8_t Size); +void DTMF_clear_RX(void); +bool DTMF_ValidateCodes(char *pCode, const unsigned int size); bool DTMF_GetContact(const int Index, char *pContact); bool DTMF_FindContact(const char *pContact, char *pResult); -char DTMF_GetCharacter(const uint8_t code); -bool DTMF_CompareMessage(const char *pDTMF, const char *pTemplate, uint8_t Size, bool bFlag); -DTMF_CallMode_t DTMF_CheckGroupCall(const char *pDTMF, uint32_t Size); -void DTMF_Append(char Code); +char DTMF_GetCharacter(const unsigned int code); +bool DTMF_CompareMessage(const char *pDTMF, const char *pTemplate, const unsigned int size, const bool bFlag); +DTMF_CallMode_t DTMF_CheckGroupCall(const char *pDTMF, const unsigned int size); +void DTMF_Append(const char vode); void DTMF_HandleRequest(void); void DTMF_Reply(void); diff --git a/app/main.c b/app/main.c index e2e5f5ac..3acd3d65 100644 --- a/app/main.c +++ b/app/main.c @@ -452,9 +452,17 @@ static void MAIN_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld) { if (!bKeyHeld && bKeyPressed) - { + { // exit key pressed + gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; + if (gDTMF_CallState != DTMF_CALL_STATE_NONE && gCurrentFunction != FUNCTION_TRANSMIT) + { // clear CALL mode being displayed + gDTMF_CallState = DTMF_CALL_STATE_NONE; + gUpdateDisplay = true; + return; + } + #ifdef ENABLE_FMRADIO if (!gFmRadioMode) #endif @@ -493,7 +501,8 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld) } if (bKeyHeld && bKeyPressed) - { + { // exit key held down + if (gInputBoxIndex > 0) { // cancel key input mode (channel/frequency entry) gDTMF_InputMode = false; @@ -509,7 +518,7 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld) static void MAIN_Key_MENU(const bool bKeyPressed, const bool bKeyHeld) { if (bKeyHeld) - { // key held down (long press) + { // menu key held down (long press) if (bKeyPressed) { @@ -560,6 +569,7 @@ static void MAIN_Key_MENU(const bool bKeyPressed, const bool bKeyHeld) gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; + // TODO: finish this //gEeprom.RX_CHANNEL = () & 1; // swap to the VFO @@ -577,13 +587,13 @@ static void MAIN_Key_MENU(const bool bKeyPressed, const bool bKeyHeld) return; } - if (!bKeyPressed) - { - bool bFlag; + if (!bKeyPressed && !gDTMF_InputMode) + { // menu key released + const bool bFlag = (gInputBoxIndex == 0); + gInputBoxIndex = 0; - gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; - bFlag = (gInputBoxIndex == 0); - gInputBoxIndex = 0; + gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; + if (bFlag) { gFlagRefreshSetting = true; diff --git a/app/menu.c b/app/menu.c index db627f64..c19fcd4e 100644 --- a/app/menu.c +++ b/app/menu.c @@ -109,11 +109,15 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax) break; case MENU_TDR: - case MENU_XB: *pMin = 0; *pMax = ARRAY_SIZE(gSubMenu_CHAN) - 1; break; + case MENU_XB: + *pMin = 0; + *pMax = ARRAY_SIZE(gSubMenu_XB) - 1; + break; + #ifdef ENABLE_VOICE case MENU_VOICE: *pMin = 0; @@ -591,13 +595,14 @@ void MENU_AcceptSetting(void) case MENU_D_DCD: gTxVfo->DTMF_DECODING_ENABLE = gSubMenuSelection; - gRequestSaveChannel = 1; + DTMF_clear_RX(); + gRequestSaveChannel = 1; return; case MENU_D_LIVE_DEC: - gDTMF_RX_live_timeout = 0; - gDTMF_RX_live[0] = '\0'; gSetting_live_DTMF_decoder = gSubMenuSelection; + gDTMF_RX_live_timeout = 0; + memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); if (!gSetting_live_DTMF_decoder) BK4819_DisableDTMF(); gFlagReconfigureVfos = true; @@ -1317,9 +1322,13 @@ static void MENU_Key_MENU(const bool bKeyPressed, const bool bKeyHeld) gAskForConfirmation = 0; gIsInSubMenu = true; - gInputBoxIndex = 0; - edit_index = -1; - + +// if (gMenuCursor != MENU_D_LIST) + { + gInputBoxIndex = 0; + edit_index = -1; + } + return; } diff --git a/app/scanner.c b/app/scanner.c index cc52d65c..4002e380 100644 --- a/app/scanner.c +++ b/app/scanner.c @@ -14,6 +14,7 @@ * limitations under the License. */ +#include "app/dtmf.h" #include "app/generic.h" #include "app/scanner.h" #include "audio.h" @@ -399,12 +400,13 @@ void SCANNER_Start(void) gUpdateStatus = true; } + DTMF_clear_RX(); + gScanDelay_10ms = scan_delay_10ms; gScanCssResultCode = 0xFF; gScanCssResultType = 0xFF; gScanHitCount = 0; gScanUseCssResult = false; - gDTMF_RequestPending = false; g_CxCSS_TAIL_Found = false; g_CDCSS_Lost = false; gCDCSSCodeType = 0; diff --git a/audio.c b/audio.c index 14de43d7..94d54d69 100644 --- a/audio.c +++ b/audio.c @@ -76,7 +76,12 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) uint16_t ToneFrequency; uint16_t Duration; - if (Beep != BEEP_880HZ_60MS_TRIPLE_BEEP && Beep != BEEP_500HZ_60MS_DOUBLE_BEEP && Beep != BEEP_440HZ_500MS && !gEeprom.BEEP_CONTROL) + if (Beep != BEEP_880HZ_60MS_TRIPLE_BEEP && + Beep != BEEP_500HZ_60MS_DOUBLE_BEEP && + Beep != BEEP_440HZ_500MS && + Beep != BEEP_880HZ_200MS && + Beep != BEEP_880HZ_500MS && + !gEeprom.BEEP_CONTROL) return; #ifdef ENABLE_AIRCOPY @@ -123,6 +128,8 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) break; case BEEP_880HZ_40MS_OPTIONAL: case BEEP_880HZ_60MS_TRIPLE_BEEP: + case BEEP_880HZ_200MS: + case BEEP_880HZ_500MS: ToneFrequency = 880; break; } @@ -161,7 +168,13 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) Duration = 40; break; + case BEEP_880HZ_200MS: + BK4819_ExitTxMute(); + Duration = 200; + break; + case BEEP_440HZ_500MS: + case BEEP_880HZ_500MS: default: BK4819_ExitTxMute(); Duration = 500; diff --git a/audio.h b/audio.h index 65c2ca6d..86b59281 100644 --- a/audio.h +++ b/audio.h @@ -26,6 +26,8 @@ enum BEEP_Type_t BEEP_1KHZ_60MS_OPTIONAL, BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL, BEEP_440HZ_500MS, + BEEP_880HZ_200MS, + BEEP_880HZ_500MS, BEEP_500HZ_60MS_DOUBLE_BEEP, BEEP_440HZ_40MS_OPTIONAL, BEEP_880HZ_40MS_OPTIONAL, diff --git a/driver/bk4819.c b/driver/bk4819.c index 91177b15..49ac4dc7 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -891,7 +891,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 = 200; // but 128 ~ 247 does + const uint16_t threshold = 140; // 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 d0e66df538f1ac5abd868a0e5dfb96344f241123..329b34752fb7ab079abee4aeffe40d59612e6a57 100644 GIT binary patch delta 24714 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 KCZ2e6RSUQFyXi7}EBC z6{gSUY1?z4H$S$dz>*5SE%njpv(?ex6L_Gne3iSe7GHb$@2?Qp2Q@o&ZXt*DymK!0 zU{Glax-=?(Ch}b4fA!pu970q=r*V=`xdRCnq203Reo^f4$j<$}U12Hx&CXsu4195rmSX`!w#g(l}rkGa(kH~cYPFGU& za{MJULL2M74Gi~;J8|UTUNOM3HqW|g41HY4gwJW^bI&w(QKs)Fs85>Rn|lR(q2%t~ zX;|SqrTmVGt~K_;Df{NH!PDq{^PToJwte%jYq(DRycRDqfXzw$dd#B%%oyLA^R2+1 zpaoMcW!GXM590n2szh|Izu&0Zbnoot-e-Js+0|??_+skGu3;IgIb^J{{V|zs1Epj`0CIHfgM$cun|LWnTv30jVd=B2rJjPA~Ysl zIYqvS@5)>md81)mi+TF*9ZmN4|<=0VvvBPBFwD5Jgf{yF-T777U^LK zfLZvaz_xnsHS`;@qk4wY?^Dx%LHanP--~pg-{AVM4ESULD)Dv!U?&4kksEVK_)mf{95PSv8LAUZsv@xZ7c)ZS-1o!k$*wibk$c8`u@TsO%0W zK%&N-d*)TrqSw~AYJpXj!loKqUzE8D{-&D3!kRvH**sVFO+aipV(&tZ(!Ld-9oh(+ z`buqc5h_(f4SiE=_CCFNGV)DEzDyXRuW%&5E;0o9$S`h&gR_$zQH+-CXM9gb#hynf zG%Czoc!1Q=N1qKLOn9+xDVFb0I2O#1d5?#UYy>mdn72M$4g?&lBH(bJ*1{eczyYa` zxI1y)KY-Lh0Fedh8Au>wKyXr;zK<|jQM?PF8-EX=4UBX%z*UV*Wa{`H3V#HkZGtF= zbSShP5aqlLs5}W_4SD}(Y<~cm4KEFht$<7`Lqp5S@PImu%MW^8RjUrEI=rFsp=^mPZvkcG3ht*tZK)@jq*W&w#u9x7i;)qrGILx3)wv|}lp{Ll*lC016IN8n zB;3~Ss{f=zTmF#@BDS2BcVHD~fy>mKk1}tAe>qlk8vOUezZU)}=QZXwahapG*j^)^ zzX!36g{N5F`Q?sHHjuh|-uapE-))<9{%%_pUCieUt@TH(K{rRPixP!dZr;Lf*F0QpD<0C%IlXl)&g;xK zA@}n@yBpxnM8!Wz``@%={D!Y658wvFS9iV&atrYakUv81p!EHl*_VDE9$;AS^vy!i z1sLm#=S29fg73h&SIoCKj`2s6pXw+#UQo*VZ*~~QH30GcP>zIAjanU5wp&{8R@P;E z!oq*y^Ibtg&C%z%=~xHhcYQGPJmCZ_zyNEzAvnO=Mumo0+i29yysIJu^-!sH$@A7| z*9!DLp_T4*so(d-%u|T{AgRqygO0;P~it;kH1|0Ft&1^B<_Uy|~Vj!ucfMO9e2(-*+w z>JvU6ejg28fF|d4>58LG`9m)-$%dP_9$guc()Vsa72tWqQ9Cr~L((B6!YFj zS3)2LAM4Z}NP)dSdnl}2@EHyeHbOIv&@Von>Q97DCalQ5i^^F4Mdc^o)ACP7?Lmlv z{DN{U_-~k~84i;FpTV!tr6ENiAqpW94UCZKX$i^=|$x}e?U1Jx~Tls-*0JZm_N(Nik%F%1RQMrqN44WD&IGX?}qKO?e%3a zMQ#fPa77nXTJcnuEd9O@(^r5XLf~7HCw-*e)cLE#rT9V`PWB}M#TnA#J6te=QI-WG z<56BZ^nS7H{(#k`Hx<Cb?Ur-u?sp7{jnZ%a!?hDEXp-8q5Uqvfczo31umZcg%rN4ZQQwAoICY5vsJK*09 zXaSJ$M^+g_Uz{O3;U5tuO)Xt8&H&|Jgdc`em4pGpt840P*jl46x3TTD!rRVEkJcSI z{kLqrl>Cn|(x`vLA1V1qE8q9Vr^AbmfcU*wuM2<>z<_W(;1U3(837i+c);wsIyQTj z^j*(CrPofT8Lp~gHT6}qt~&C|$#}ulXsfBNn#Up;HM1M%%&KLPv4#0HRSgX+Vr*)# zHOZG$vn^zil6fU;Q$y0d% diff --git a/firmware.packed.bin b/firmware.packed.bin index 7ac0589aae2c6cff80044c2aba644af92cd596bf..7d7b337795507ec60f332fa2ca0843bcb9254734 100644 GIT binary patch delta 48983 zcmYIvRajMB7cLu+ZjkQoRO#;SknZjfDVKyIAky6-9edMkl$I0`5D<_?r33^-q&yS9 z|D1EV?&dSs7;lX+&xX-bN6?a`P?2v^WESsCu;L{Rq|w1>V7h7IFb_u}I zEDQ#7YZgU|g~1e?d(bB^U}|ZJxEwIq=2l!Z7_6tc6VD3`mYc>w^bp377D!nba-H2cxT#+^cZMsl$&nxBGF=*%)7sg&pmNrBa<}-eH_`1z@BL1maW;_7TV@#t zAF=9B!!5p~)&}tR`Xg=BT9`U*m!9ouS$^|N7Th?1*czTt^7)Chcn`cAC@#bN^C`W)T&{% z`9V%8zgrTWzI{JS+c(%3Jbz;rD~PjHtY*_CgN0(s$Uf*>|LzmBJckptVyt{}V4kk& z-`u%Iu1c|FZLY1SrB!kqy%O;(_4F9H_cpe~ZL55CnqjmWPsm97et(rQVwj6-{`taX zxXK-&D{pS=$7DC?q)wtH>D0?0u~tyvFW3gjnej*=gT7E)PUP(y?K9ud7c|Q$kH1Am z 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˟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%0A7nj^wx##O?uU71 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 ZZcvsBgPF}T_#G#q6QWdv?r{6!{2xvlj+y`f diff --git a/functions.c b/functions.c index 6f35bf4a..5394fde4 100644 --- a/functions.c +++ b/functions.c @@ -53,15 +53,8 @@ void FUNCTION_Init(void) gCurrentCodeType = CODE_TYPE_CONTINUOUS_TONE; #endif - gDTMF_RequestPending = false; - - gDTMF_RecvTimeout = 0; - gDTMF_WriteIndex = 0; - memset(gDTMF_Received, 0, sizeof(gDTMF_Received)); - -// gDTMF_RX_timeout_live = 0; -// gDTMF_RX_timeout_live[0] = '\0'; - + DTMF_clear_RX(); + g_CxCSS_TAIL_Found = false; g_CDCSS_Lost = false; g_CTCSS_Lost = false; @@ -152,8 +145,13 @@ void FUNCTION_Select(FUNCTION_Type_t Function) // if DTMF is enabled when TX'ing, it changes the TX audio filtering !! .. 1of11 BK4819_DisableDTMF(); + // clear the DTMF RX buffer + DTMF_clear_RX(); + + // clear the DTMF RX live decoder buffer + gDTMF_RX_live_timeout = 0; gDTMF_RX_live_timeout = 0; - gDTMF_RX_live[0] = 0; + memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); #if defined(ENABLE_FMRADIO) if (gFmRadioMode) @@ -189,7 +187,7 @@ void FUNCTION_Select(FUNCTION_Type_t Function) RADIO_SetTxParameters(); - // turn the LED on RED + // turn the RED LED on BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_RED, true); DTMF_Reply(); diff --git a/misc.c b/misc.c index efb619bf..ce567a1a 100644 --- a/misc.c +++ b/misc.c @@ -28,7 +28,7 @@ const uint8_t menu_timeout_500ms = 20000 / 500; // 20 seconds const uint8_t DTMF_RX_live_timeout_500ms = 6000 / 500; // 6 seconds live decoder on screen const uint8_t DTMF_RX_timeout_500ms = 10000 / 500; // 10 seconds till we wipe the DTMF receiver -const uint8_t DTMF_decode_ring_countdown_500ms = 15000 / 500; // 15 seconds +const uint8_t DTMF_decode_ring_countdown_500ms = 15000 / 500; // 15 seconds .. time we sound the ringing for const uint8_t DTMF_txstop_countdown_500ms = 3000 / 500; // 6 seconds const uint8_t key_input_timeout_500ms = 8000 / 500; // 8 seconds @@ -174,7 +174,6 @@ bool gFlagSaveChannel; #ifdef ENABLE_FMRADIO bool gFlagSaveFM; #endif -uint8_t gDTMF_RequestPending; bool g_CDCSS_Lost; uint8_t gCDCSSCodeType; bool g_CTCSS_Lost; diff --git a/misc.h b/misc.h index 517e28b4..a27ba728 100644 --- a/misc.h +++ b/misc.h @@ -238,7 +238,6 @@ extern bool gFlagSaveChannel; #ifdef ENABLE_FMRADIO extern bool gFlagSaveFM; #endif -extern uint8_t gDTMF_RequestPending; extern bool g_CDCSS_Lost; extern uint8_t gCDCSSCodeType; extern bool g_CTCSS_Lost; diff --git a/radio.c b/radio.c index 9356b0b1..d1f7ef81 100644 --- a/radio.c +++ b/radio.c @@ -747,9 +747,6 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) #endif #if 0 - // there's no reason the DTMF decoder can't be used in AM RX mode too - // aircraft comms use it on HF (AM and SSB) -// if (gRxVfo->AM_mode || (!gRxVfo->DTMF_DECODING_ENABLE && !gSetting_KILLED)) if (!gRxVfo->DTMF_DECODING_ENABLE && !gSetting_KILLED) { BK4819_DisableDTMF(); @@ -760,7 +757,7 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) InterruptMask |= BK4819_REG_3F_DTMF_5TONE_FOUND; } #else - if (gCurrentFunction != FUNCTION_TRANSMIT && gSetting_live_DTMF_decoder) + if (gCurrentFunction != FUNCTION_TRANSMIT) { BK4819_EnableDTMF(); InterruptMask |= BK4819_REG_3F_DTMF_5TONE_FOUND; diff --git a/settings.c b/settings.c index e0203a7c..649eca49 100644 --- a/settings.c +++ b/settings.c @@ -214,7 +214,7 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, | (pVFO->OUTPUT_POWER << 2) | (pVFO->CHANNEL_BANDWIDTH << 1) | (pVFO->FrequencyReverse << 0); - State[5] = (pVFO->DTMF_PTT_ID_TX_MODE << 1) | (pVFO->DTMF_DECODING_ENABLE < 0); + State[5] = (pVFO->DTMF_PTT_ID_TX_MODE << 1) | (pVFO->DTMF_DECODING_ENABLE << 0); State[6] = pVFO->STEP_SETTING; State[7] = pVFO->SCRAMBLING_TYPE; EEPROM_WriteBuffer(OffsetVFO + 8, State); diff --git a/ui/main.c b/ui/main.c index f0dd0f4b..47da6cb0 100644 --- a/ui/main.c +++ b/ui/main.c @@ -36,6 +36,8 @@ #include "ui/main.h" #include "ui/ui.h" +bool center_line_is_free = true; + // *************************************************************************** #ifdef ENABLE_AUDIO_BAR @@ -180,6 +182,9 @@ void UI_UpdateRSSI(const int16_t rssi, const int vfo) { #ifdef ENABLE_RSSI_BAR + if (!center_line_is_free) + return; + const bool rx = (gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR || gCurrentFunction == FUNCTION_INCOMING); @@ -286,8 +291,9 @@ void UI_DisplayMain(void) { char String[16]; unsigned int vfo_num; - bool center_line_is_free = true; + center_line_is_free = true; + // #ifdef SINGLE_VFO_CHAN // const bool single_vfo = (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF && gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? true : false; // #else @@ -338,7 +344,7 @@ void UI_DisplayMain(void) strcpy(String, (gDTMF_State == DTMF_STATE_CALL_OUT_RSP) ? "CALL OUT(RSP)" : "CALL OUT"); else if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED) - sprintf(String, "CALL:%s", (DTMF_FindContact(gDTMF_Caller, Contact)) ? Contact : gDTMF_Caller); + sprintf(String, "CALL FRM:%s", (DTMF_FindContact(gDTMF_Caller, Contact)) ? Contact : gDTMF_Caller); else if (gDTMF_IsTx) strcpy(String, (gDTMF_State == DTMF_STATE_TX_SUCC) ? "DTMF TX(SUCC)" : "DTMF TX"); @@ -680,7 +686,7 @@ void UI_DisplayMain(void) UI_PrintStringSmall(String, LCD_WIDTH + 70, 0, Line + 1); } - // show the DTMF decoding symbol( + // show the DTMF decoding symbol if (gEeprom.VfoInfo[vfo_num].DTMF_DECODING_ENABLE || gSetting_KILLED) UI_PrintStringSmall("DTMF", LCD_WIDTH + 78, 0, Line + 1); @@ -722,15 +728,26 @@ void UI_DisplayMain(void) if (rx || gCurrentFunction == FUNCTION_FOREGROUND) { - if (gSetting_live_DTMF_decoder && gDTMF_RX_live[0] >= 32) - { // show live DTMF decode - const unsigned int len = strlen(gDTMF_RX_live); - const unsigned int idx = (len > (17 - 5)) ? len - (17 - 5) : 0; // limit to last 'n' chars - strcpy(String, "DTMF "); - strcat(String, gDTMF_RX_live + idx); - UI_PrintStringSmall(String, 2, 0, 3); - } - + #if 1 + if (gSetting_live_DTMF_decoder && gDTMF_RX_live[0] != 0) + { // show live DTMF decode + const unsigned int len = strlen(gDTMF_RX_live); + const unsigned int idx = (len > (17 - 5)) ? len - (17 - 5) : 0; // limit to last 'n' chars + strcpy(String, "DTMF "); + strcat(String, gDTMF_RX_live + idx); + UI_PrintStringSmall(String, 2, 0, 3); + } + #else + if (gSetting_live_DTMF_decoder && gDTMF_RX_index > 0) + { // show live DTMF decode + const unsigned int len = gDTMF_RX_index; + const unsigned int idx = (len > (17 - 5)) ? len - (17 - 5) : 0; // limit to last 'n' chars + strcpy(String, "DTMF "); + strcat(String, gDTMF_RX + idx); + UI_PrintStringSmall(String, 2, 0, 3); + } + #endif + #ifdef ENABLE_SHOW_CHARGE_LEVEL else if (gChargingWithTypeC) diff --git a/ui/menu.c b/ui/menu.c index 24d4d098..2399cf65 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -184,8 +184,15 @@ const char gSubMenu_TOT[11][7] = const char gSubMenu_CHAN[3][7] = { "OFF", - "CHAN_A", - "CHAN_B" + "CHAN A", + "CHAN B" +}; + +const char gSubMenu_XB[3][7] = +{ + "SAME", + "CHAN A", + "CHAN B" }; #ifdef ENABLE_VOICE @@ -575,10 +582,13 @@ void UI_DisplayMenu(void) break; case MENU_TDR: - case MENU_XB: strcpy(String, gSubMenu_CHAN[gSubMenuSelection]); break; + case MENU_XB: + strcpy(String, gSubMenu_XB[gSubMenuSelection]); + break; + case MENU_TOT: strcpy(String, gSubMenu_TOT[gSubMenuSelection]); break; diff --git a/ui/menu.h b/ui/menu.h index 3cd187e5..1356510b 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -125,6 +125,7 @@ extern const char gSubMenu_OFF_ON[2][4]; extern const char gSubMenu_SAVE[5][4]; extern const char gSubMenu_TOT[11][7]; extern const char gSubMenu_CHAN[3][7]; +extern const char gSubMenu_XB[3][7]; #ifdef ENABLE_VOICE extern const char gSubMenu_VOICE[3][4]; #endif