DTMF improvements.

This commit is contained in:
Dual Tachyon 2023-09-05 16:06:58 +01:00
parent 4dc1627c31
commit c41f1396f0
5 changed files with 11 additions and 12 deletions

View File

@ -50,6 +50,7 @@ DTMF_ReplyState_t gDTMF_ReplyState;
DTMF_CallMode_t gDTMF_CallMode; DTMF_CallMode_t gDTMF_CallMode;
bool gDTMF_IsTx; bool gDTMF_IsTx;
uint8_t gDTMF_TxStopCountdown; uint8_t gDTMF_TxStopCountdown;
bool gDTMF_IsGroupCall;
bool DTMF_ValidateCodes(char *pCode, uint8_t Size) bool DTMF_ValidateCodes(char *pCode, uint8_t Size)
{ {
@ -130,28 +131,28 @@ char DTMF_GetCharacter(uint8_t Code)
return 0xFF; return 0xFF;
} }
bool DTMF_CompareMessage(const char *pDTMF, const char *pTemplate, uint8_t Size, bool bFlag) bool DTMF_CompareMessage(const char *pMsg, const char *pTemplate, uint8_t Size, bool bCheckGroup)
{ {
uint8_t i; uint8_t i;
for (i = 0; i < Size; i++) { for (i = 0; i < Size; i++) {
if (pDTMF[i] != pTemplate[i]) { if (pMsg[i] != pTemplate[i]) {
if (!bFlag || pDTMF[i] != gEeprom.DTMF_GROUP_CALL_CODE) { if (!bCheckGroup || pMsg[i] != gEeprom.DTMF_GROUP_CALL_CODE) {
return false; return false;
} }
g_20000439 = true; gDTMF_IsGroupCall = true;
} }
} }
return true; return true;
} }
bool DTMF_IsGroupCall(const char *pDTMF, uint32_t Size) bool DTMF_CheckGroupCall(const char *pMsg, uint32_t Size)
{ {
uint32_t i; uint32_t i;
for (i = 0; i < Size; i++) { for (i = 0; i < Size; i++) {
if (pDTMF[i] == gEeprom.DTMF_GROUP_CALL_CODE) { if (pMsg[i] == gEeprom.DTMF_GROUP_CALL_CODE) {
break; break;
} }
} }
@ -248,7 +249,7 @@ void DTMF_HandleRequest(void)
if (gDTMF_WriteIndex >= 7) { if (gDTMF_WriteIndex >= 7) {
Offset = gDTMF_WriteIndex - 7; Offset = gDTMF_WriteIndex - 7;
sprintf(String, "%s%c", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE); sprintf(String, "%s%c", gEeprom.ANI_DTMF_ID, gEeprom.DTMF_SEPARATE_CODE);
g_20000439 = false; gDTMF_IsGroupCall = false;
if (DTMF_CompareMessage(gDTMF_Received + Offset, String, 4, true)) { if (DTMF_CompareMessage(gDTMF_Received + Offset, String, 4, true)) {
gDTMF_CallState = DTMF_CALL_STATE_RECEIVED; gDTMF_CallState = DTMF_CALL_STATE_RECEIVED;
memcpy(gDTMF_Callee, gDTMF_Received + Offset, 3); memcpy(gDTMF_Callee, gDTMF_Received + Offset, 3);
@ -274,7 +275,7 @@ void DTMF_HandleRequest(void)
break; break;
} }
if (g_20000439) { if (gDTMF_IsGroupCall) {
gDTMF_ReplyState = DTMF_REPLY_NONE; gDTMF_ReplyState = DTMF_REPLY_NONE;
} }
} }

View File

@ -81,7 +81,7 @@ bool DTMF_GetContact(uint8_t Index, char *pContact);
bool DTMF_FindContact(const char *pContact, char *pResult); bool DTMF_FindContact(const char *pContact, char *pResult);
char DTMF_GetCharacter(uint8_t Code); char DTMF_GetCharacter(uint8_t Code);
bool DTMF_CompareMessage(const char *pDTMF, const char *pTemplate, uint8_t Size, bool bFlag); bool DTMF_CompareMessage(const char *pDTMF, const char *pTemplate, uint8_t Size, bool bFlag);
bool DTMF_IsGroupCall(const char *pDTMF, uint32_t Size); bool DTMF_CheckGroupCall(const char *pDTMF, uint32_t Size);
void DTMF_Append(char Code); void DTMF_Append(char Code);
void DTMF_HandleRequest(void); void DTMF_HandleRequest(void);
void DTMF_Reply(void); void DTMF_Reply(void);

View File

@ -132,7 +132,7 @@ void GENERIC_Key_PTT(bool bKeyPressed)
} }
gDTMF_InputBox[gDTMF_InputIndex] = 0; gDTMF_InputBox[gDTMF_InputIndex] = 0;
if (gDTMF_InputIndex == 3) { if (gDTMF_InputIndex == 3) {
gDTMF_CallMode = DTMF_IsGroupCall(gDTMF_InputBox, 3); gDTMF_CallMode = DTMF_CheckGroupCall(gDTMF_InputBox, 3);
} else { } else {
gDTMF_CallMode = DTMF_CALL_MODE_DTMF; gDTMF_CallMode = DTMF_CALL_MODE_DTMF;
} }

1
misc.c
View File

@ -117,7 +117,6 @@ uint16_t gAlarmRunningCounter;
bool gKeyBeingHeld; bool gKeyBeingHeld;
bool gPttIsPressed; bool gPttIsPressed;
uint8_t gPttDebounceCounter; uint8_t gPttDebounceCounter;
bool g_20000439;
uint8_t gMenuListCount; uint8_t gMenuListCount;
uint8_t gBackupCROSS_BAND_RX_TX; uint8_t gBackupCROSS_BAND_RX_TX;
uint8_t g_2000045D; uint8_t g_2000045D;

1
misc.h
View File

@ -168,7 +168,6 @@ extern uint16_t gAlarmRunningCounter;
extern bool gKeyBeingHeld; extern bool gKeyBeingHeld;
extern bool gPttIsPressed; extern bool gPttIsPressed;
extern uint8_t gPttDebounceCounter; extern uint8_t gPttDebounceCounter;
extern bool g_20000439;
extern uint8_t gMenuListCount; extern uint8_t gMenuListCount;
extern uint8_t gBackupCROSS_BAND_RX_TX; extern uint8_t gBackupCROSS_BAND_RX_TX;
extern uint8_t g_2000045D; extern uint8_t g_2000045D;