Simplify APP_EndTransmission
* Unify Roger-Beep selection * Extract function for DTMF EoT
This commit is contained in:
70
app/app.c
70
app/app.c
@@ -731,14 +731,14 @@ static void CheckRadioInterrupts(void)
|
||||
}
|
||||
|
||||
void APP_EndTransmission(void)
|
||||
{ // back to RX mode
|
||||
{
|
||||
// back to RX mode
|
||||
RADIO_SendEndOfTransmission();
|
||||
// send the CTCSS/DCS tail tone - allows the receivers to mute the usual FM squelch tail/crash
|
||||
RADIO_EnableCxCSS();
|
||||
RADIO_SetupRegisters(false);
|
||||
|
||||
if (gMonitor)
|
||||
gFlagReconfigureVfos = true; //turn the monitor back on
|
||||
if (gMonitor) {
|
||||
//turn the monitor back on
|
||||
gFlagReconfigureVfos = true;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_VOX
|
||||
@@ -884,37 +884,32 @@ void APP_Update(void)
|
||||
#endif
|
||||
|
||||
// toggle between the VFO's if dual watch is enabled
|
||||
if (!SCANNER_IsScanning() && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF)
|
||||
{
|
||||
if (!SCANNER_IsScanning()
|
||||
&& gEeprom.DUAL_WATCH != DUAL_WATCH_OFF
|
||||
&& gScheduleDualWatch
|
||||
&& gScanStateDir == SCAN_OFF
|
||||
&& !gPttIsPressed
|
||||
&& gCurrentFunction != FUNCTION_POWER_SAVE
|
||||
#ifdef ENABLE_VOICE
|
||||
if (gScheduleDualWatch && gVoiceWriteIndex == 0)
|
||||
#else
|
||||
if (gScheduleDualWatch)
|
||||
&& gVoiceWriteIndex == 0
|
||||
#endif
|
||||
{
|
||||
if (gScanStateDir == SCAN_OFF)
|
||||
{
|
||||
if (!gPttIsPressed &&
|
||||
#ifdef ENABLE_FMRADIO
|
||||
!gFmRadioMode &&
|
||||
&& !gFmRadioMode
|
||||
#endif
|
||||
#ifdef ENABLE_DTMF_CALLING
|
||||
gDTMF_CallState == DTMF_CALL_STATE_NONE &&
|
||||
&& gDTMF_CallState == DTMF_CALL_STATE_NONE
|
||||
#endif
|
||||
gCurrentFunction != FUNCTION_POWER_SAVE)
|
||||
{
|
||||
DualwatchAlternate(); // toggle between the two VFO's
|
||||
) {
|
||||
DualwatchAlternate(); // toggle between the two VFO's
|
||||
|
||||
if (gRxVfoIsActive && gScreenToDisplay == DISPLAY_MAIN)
|
||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||
|
||||
gRxVfoIsActive = false;
|
||||
gScanPauseMode = false;
|
||||
gRxReceptionMode = RX_MODE_NONE;
|
||||
gScheduleDualWatch = false;
|
||||
}
|
||||
}
|
||||
if (gRxVfoIsActive && gScreenToDisplay == DISPLAY_MAIN) {
|
||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||
}
|
||||
|
||||
gRxVfoIsActive = false;
|
||||
gScanPauseMode = false;
|
||||
gRxReceptionMode = RX_MODE_NONE;
|
||||
gScheduleDualWatch = false;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_FMRADIO
|
||||
@@ -1024,17 +1019,17 @@ void APP_Update(void)
|
||||
// called every 10ms
|
||||
static void CheckKeys(void)
|
||||
{
|
||||
|
||||
if (0
|
||||
#ifdef ENABLE_DTMF_CALLING
|
||||
|| gSetting_KILLED
|
||||
#endif
|
||||
#ifdef ENABLE_AIRCOPY
|
||||
|| (gScreenToDisplay == DISPLAY_AIRCOPY && gAircopyState != AIRCOPY_READY)
|
||||
#endif
|
||||
)
|
||||
if(gSetting_KILLED){
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_AIRCOPY
|
||||
if (gScreenToDisplay == DISPLAY_AIRCOPY && gAircopyState != AIRCOPY_READY){
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// -------------------- PTT ------------------------
|
||||
if (gPttIsPressed)
|
||||
@@ -1577,7 +1572,6 @@ static void ALARM_Off(void)
|
||||
|
||||
if (gAlarmState == ALARM_STATE_TXALARM) {
|
||||
RADIO_SendEndOfTransmission();
|
||||
RADIO_EnableCxCSS();
|
||||
}
|
||||
|
||||
gAlarmState = ALARM_STATE_OFF;
|
||||
|
37
app/dtmf.c
37
app/dtmf.c
@@ -78,6 +78,41 @@ void DTMF_clear_RX(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void DTMF_SendEndOfTransmission(void)
|
||||
{
|
||||
if (gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_APOLLO) {
|
||||
BK4819_PlaySingleTone(2475, 250, 28, gEeprom.DTMF_SIDE_TONE);
|
||||
}
|
||||
|
||||
if ((gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_TX_DOWN || gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_BOTH)
|
||||
#ifdef ENABLE_DTMF_CALLING
|
||||
&& gDTMF_CallState == DTMF_CALL_STATE_NONE
|
||||
#endif
|
||||
) { // end-of-tx
|
||||
if (gEeprom.DTMF_SIDE_TONE)
|
||||
{
|
||||
AUDIO_AudioPathOn();
|
||||
gEnableSpeaker = true;
|
||||
SYSTEM_DelayMs(60);
|
||||
}
|
||||
|
||||
BK4819_EnterDTMF_TX(gEeprom.DTMF_SIDE_TONE);
|
||||
|
||||
BK4819_PlayDTMFString(
|
||||
gEeprom.DTMF_DOWN_CODE,
|
||||
0,
|
||||
gEeprom.DTMF_FIRST_CODE_PERSIST_TIME,
|
||||
gEeprom.DTMF_HASH_CODE_PERSIST_TIME,
|
||||
gEeprom.DTMF_CODE_PERSIST_TIME,
|
||||
gEeprom.DTMF_CODE_INTERVAL_TIME);
|
||||
|
||||
AUDIO_AudioPathOff();
|
||||
gEnableSpeaker = false;
|
||||
}
|
||||
|
||||
BK4819_ExitDTMF_TX(true);
|
||||
}
|
||||
|
||||
bool DTMF_ValidateCodes(char *pCode, const unsigned int size)
|
||||
{
|
||||
unsigned int i;
|
||||
@@ -410,7 +445,7 @@ void DTMF_Reply(void)
|
||||
sprintf(String, "%s%c%s", gDTMF_String, gEeprom.DTMF_SEPARATE_CODE, gEeprom.ANI_DTMF_ID);
|
||||
pString = String;
|
||||
}
|
||||
else
|
||||
else
|
||||
#endif
|
||||
{
|
||||
pString = gDTMF_String;
|
||||
|
@@ -114,4 +114,6 @@ bool DTMF_FindContact(const char *pContact, char *pResult);
|
||||
void DTMF_HandleRequest(void);
|
||||
#endif
|
||||
|
||||
void DTMF_SendEndOfTransmission(void);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user