Skip to content

Commit

Permalink
Add DTMF KILL REMOTE & SList Addon
Browse files Browse the repository at this point in the history
  • Loading branch information
spm81 committed Feb 29, 2024
1 parent 233e714 commit 4eca3f2
Show file tree
Hide file tree
Showing 9 changed files with 93 additions and 10 deletions.
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ ENABLE_UART := 1
ENABLE_UART_CAT := 0
# Bause we can cut more... - 4108 bytes
ENABLE_DTMF_CALLING := 0
#DTMF REMOTEKILL
ENABLE_REMOTEKILL := 1
# 1750Hz & 1050Hz FN1 FN2 Tones
ENABLE_DTMF_SIDETONES := 1
ENABLE_TX1750 := 0
Expand Down Expand Up @@ -313,6 +315,9 @@ endif
ifeq ($(ENABLE_DTMF_CALLING),1)
CFLAGS += -DENABLE_DTMF_CALLING
endif
ifeq ($(ENABLE_REMOTEKILL),1)
CFLAGS += -DENABLE_REMOTEKILL
endif
ifeq ($(ENABLE_DTMF_SIDETONES),1)
CFLAGS += -DENABLE_DTMF_SIDETONES
endif
Expand Down
13 changes: 10 additions & 3 deletions app/app.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,14 +485,21 @@ static void MR_NextChannel(void) {
if (RADIO_CheckValidChannel(Ch2, false, 0)) {
gNextMrChannel = Ch2;
} else {
gCurrentScanList = 2;
gCurrentScanList = 3;
}
}
if (gCurrentScanList == 2) {
gNextMrChannel = gPreviousMrChannel;
} else {
goto Skip;
gCurrentScanList = 3;

}
if (gCurrentScanList == 3) {
gNextMrChannel = Ch1;
gNextMrChannel = Ch2;
} else {
goto Skip;
}
}

Ch = RADIO_FindNextChannel(gNextMrChannel + gScanState, gScanState, true,
Expand All @@ -519,7 +526,7 @@ static void MR_NextChannel(void) {
bScanKeepFrequency = false;
if (bEnabled) {
gCurrentScanList++;
if (gCurrentScanList >= 2) {
if (gCurrentScanList >= 3) {
gCurrentScanList = 0;
}
}
Expand Down
2 changes: 1 addition & 1 deletion app/chFrScanner.c
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ static void NextMemChannel(void)

if (!enabled || chan == 0xff)
{
chan = RADIO_FindNextChannel(gNextMrChannel + gScanStateDir, gScanStateDir, (gEeprom.SCAN_LIST_DEFAULT < 2) ? true : false, gEeprom.SCAN_LIST_DEFAULT);
chan = RADIO_FindNextChannel(gNextMrChannel + gScanStateDir, gScanStateDir, (gEeprom.SCAN_LIST_DEFAULT < 3) ? true : false, gEeprom.SCAN_LIST_DEFAULT);
if (chan == 0xFF)
{ // no valid channel found
chan = MR_CHANNEL_FIRST;
Expand Down
38 changes: 37 additions & 1 deletion app/dtmf.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,11 +193,47 @@ void DTMF_HandleRequest(void)
return;
}


#ifdef ENABLE_REMOTEKILL
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)) {
if (gEeprom.PERMIT_REMOTE_KILL) {
gSetting_KILLED = true;
SETTINGS_SaveSettings();
gDTMF_ReplyState = DTMF_REPLY_AB;
#if defined(ENABLE_FMRADIO)
if (gFmRadioMode) {
FM_TurnOff();
GUI_SelectNextDisplay(DISPLAY_MAIN);
}
#endif
} else {
gDTMF_ReplyState = DTMF_REPLY_NONE;
}
gDTMF_CallState = DTMF_CALL_STATE_NONE;
gUpdateDisplay = true;
gUpdateStatus = true;
return;
}
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)) {
gSetting_KILLED = false;
SETTINGS_SaveSettings();
gDTMF_ReplyState = DTMF_REPLY_AB;
gDTMF_CallState = DTMF_CALL_STATE_NONE;
gUpdateDisplay = true;
gUpdateStatus = true;
return;
}
}
#else
if (gDTMF_WriteIndex >= 9) {
Offset = gDTMF_WriteIndex - 9;
return;
}

#endif
if (gDTMF_WriteIndex >= 2) {
if (DTMF_CompareMessage(gDTMF_Received + (gDTMF_WriteIndex - 2), "AB", 2, true)) {
gDTMF_State = DTMF_STATE_TX_SUCC;
Expand Down
2 changes: 1 addition & 1 deletion app/menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ int MENU_GetLimits(uint8_t Cursor, uint8_t *pMin, uint8_t *pMax) {
break;
case MENU_S_LIST:
//*pMin = 0;
*pMax = 2;
*pMax = 3;
break;
#ifdef ENABLE_DTMF_CALLING
case MENU_D_RSP:
Expand Down
13 changes: 10 additions & 3 deletions board.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,14 @@ gEeprom.ROGER = (Data[1] < NUM_ROGER_MODES) ? Data[1] : ROGER_MODE_OFF;

// 0EE8..0EEF
// Killcode removed

#ifdef ENABLE_REMOTEKILL
EEPROM_ReadBuffer(0x0EE8, Data, 8);
if (DTMF_ValidateCodes((char *)Data, 8)) {
memcpy(gEeprom.KILL_CODE, Data, 8);
} else {
memcpy(gEeprom.KILL_CODE, "ABCD9\0\0", 8);
}
#endif
// 0EF0..0EF7
EEPROM_ReadBuffer(0x0EF0, Data, 8);
if (DTMF_ValidateCodes((char *)Data, 8)) {
Expand Down Expand Up @@ -749,11 +756,11 @@ gEeprom.ROGER = (Data[1] < NUM_ROGER_MODES) ? Data[1] : ROGER_MODE_OFF;
// 0F18..0F1F
EEPROM_ReadBuffer(0x0F18, Data, 8);

gEeprom.SCAN_LIST_DEFAULT = (Data[0] < 3) ? Data[0] : false;
gEeprom.SCAN_LIST_DEFAULT = (Data[0] < 4) ? Data[0] : false;

for (int i = 0; i < 2; i++) {
uint8_t j = (i * 3) + 1;
gEeprom.SCAN_LIST_ENABLED[i] = (Data[j] < 3) ? Data[j] : false;
gEeprom.SCAN_LIST_ENABLED[i] = (Data[j] < 4) ? Data[j] : false;
gEeprom.SCANLIST_PRIORITY_CH1[i] = Data[j + 1];
gEeprom.SCANLIST_PRIORITY_CH2[i] = Data[j + 2];
/*
Expand Down
15 changes: 15 additions & 0 deletions radio.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,21 @@ bool RADIO_CheckValidChannel(uint16_t Channel, bool bCheckScanList,
PriorityCh1 = gEeprom.SCANLIST_PRIORITY_CH1[1];
PriorityCh2 = gEeprom.SCANLIST_PRIORITY_CH2[1];
break;
case 3:
if (((Attributes & MR_CH_SCANLIST1) == 0) && ((Attributes & MR_CH_SCANLIST2) == 0)) {
return false;
}
PriorityCh1 = gEeprom.SCANLIST_PRIORITY_CH1[0];
PriorityCh2 = gEeprom.SCANLIST_PRIORITY_CH2[0];
if (PriorityCh1 == Channel || PriorityCh2 == Channel) {
return false;
}
PriorityCh1 = gEeprom.SCANLIST_PRIORITY_CH1[1];
PriorityCh2 = gEeprom.SCANLIST_PRIORITY_CH2[1];
if (PriorityCh1 == Channel || PriorityCh2 == Channel) {
return false;
}
break;
default:
return true;
}
Expand Down
2 changes: 1 addition & 1 deletion settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ typedef struct {
uint8_t BACKLIGHT;
uint8_t SCAN_RESUME_MODE;
uint8_t SCAN_LIST_DEFAULT;
bool SCAN_LIST_ENABLED[2];
bool SCAN_LIST_ENABLED[3];
uint8_t SCANLIST_PRIORITY_CH1[2];
uint8_t SCANLIST_PRIORITY_CH2[2];
uint8_t field29_0x26;
Expand Down
13 changes: 13 additions & 0 deletions ui/menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,8 @@ void UI_DisplayMenu(void) {
sprintf(String, "LIST%d", gSubMenuSelection);
break;
*/

/*
case MENU_S_LIST:
// strcpy(str, "SCAN LIST\n");
if (gSubMenuSelection < 2)
Expand All @@ -526,6 +528,17 @@ case MENU_S_LIST:
else
sprintf(String, "ALL");
break;
*/
case MENU_S_LIST:
if (gSubMenuSelection == 3) {
sprintf(String, "LIST1+2");
} else if (gSubMenuSelection < 2) {
sprintf(String, "LIST%d", 1 + gSubMenuSelection);
} else {
sprintf(String, "ALL");
}
break;

#ifdef ENABLE_DTMF_CALLING

case MENU_ANI_ID:
Expand Down

0 comments on commit 4eca3f2

Please sign in to comment.