diff --git a/app/action.c b/app/action.c index a4cd3ac..7c10326 100644 --- a/app/action.c +++ b/app/action.c @@ -243,29 +243,32 @@ void ACTION_Scan(bool bRestart) #endif #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) - static void ACTION_AlarmOr1750(const bool b1750) - { - (void)b1750; - gInputBoxIndex = 0; +static void ACTION_AlarmOr1750(const bool b1750) +{ - #if defined(ENABLE_ALARM) && defined(ENABLE_TX1750) - gAlarmState = b1750 ? ALARM_STATE_TX1750 : ALARM_STATE_TXALARM; - gAlarmRunningCounter = 0; - #elif defined(ENABLE_ALARM) - gAlarmState = ALARM_STATE_TXALARM; - gAlarmRunningCounter = 0; - #else - gAlarmState = ALARM_STATE_TX1750; - #endif + #if defined(ENABLE_ALARM) + const AlarmState_t alarm_mode = (gEeprom.ALARM_MODE == ALARM_MODE_TONE) ? ALARM_STATE_TXALARM : ALARM_STATE_SITE_ALARM; + gAlarmRunningCounter = 0; + #endif - gFlagPrepareTX = true; + #if defined(ENABLE_ALARM) && defined(ENABLE_TX1750) + gAlarmState = b1750 ? ALARM_STATE_TX1750 : alarm_mode; + #elif defined(ENABLE_ALARM) + gAlarmState = alarm_mode; + #else + gAlarmState = ALARM_STATE_TX1750; + #endif - if (gScreenToDisplay != DISPLAY_MENU) // 1of11 .. don't close the menu - gRequestDisplayScreen = DISPLAY_MAIN; - } + (void)b1750; + gInputBoxIndex = 0; + + gFlagPrepareTX = gAlarmState != ALARM_STATE_OFF; + + if (gScreenToDisplay != DISPLAY_MENU) // 1of11 .. don't close the menu + gRequestDisplayScreen = DISPLAY_MAIN; +} #endif - #ifdef ENABLE_FMRADIO void ACTION_FM(void) { diff --git a/app/app.c b/app/app.c index e8674ce..13f9a25 100644 --- a/app/app.c +++ b/app/app.c @@ -646,36 +646,36 @@ static void CheckRadioInterrupts(void) g_CTCSS_Lost = false; #ifdef ENABLE_VOX - if (interrupt_status_bits & BK4819_REG_02_VOX_LOST) + if (interrupt_status_bits & BK4819_REG_02_VOX_LOST) + { + g_VOX_Lost = true; + gVoxPauseCountdown = 10; + + if (gEeprom.VOX_SWITCH) { - g_VOX_Lost = true; - gVoxPauseCountdown = 10; - - if (gEeprom.VOX_SWITCH) + if (gCurrentFunction == FUNCTION_POWER_SAVE && !gRxIdleMode) { - if (gCurrentFunction == FUNCTION_POWER_SAVE && !gRxIdleMode) - { - gPowerSave_10ms = power_save2_10ms; - gPowerSaveCountdownExpired = 0; - } - - if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && (gScheduleDualWatch || gDualWatchCountdown_10ms < dual_watch_count_after_vox_10ms)) - { - gDualWatchCountdown_10ms = dual_watch_count_after_vox_10ms; - gScheduleDualWatch = false; - - // let the user see DW is not active - gDualWatchActive = false; - gUpdateStatus = true; - } + gPowerSave_10ms = power_save2_10ms; + gPowerSaveCountdownExpired = 0; + } + + if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && (gScheduleDualWatch || gDualWatchCountdown_10ms < dual_watch_count_after_vox_10ms)) + { + gDualWatchCountdown_10ms = dual_watch_count_after_vox_10ms; + gScheduleDualWatch = false; + + // let the user see DW is not active + gDualWatchActive = false; + gUpdateStatus = true; } } + } - if (interrupt_status_bits & BK4819_REG_02_VOX_FOUND) - { - g_VOX_Lost = false; - gVoxPauseCountdown = 0; - } + if (interrupt_status_bits & BK4819_REG_02_VOX_FOUND) + { + g_VOX_Lost = false; + gVoxPauseCountdown = 0; + } #endif if (interrupt_status_bits & BK4819_REG_02_SQUELCH_LOST) @@ -717,87 +717,86 @@ void APP_EndTransmission(void) } #ifdef ENABLE_VOX - static void HandleVox(void) - { +static void HandleVox(void) +{ #ifdef ENABLE_DTMF_CALLING - if (gSetting_KILLED) - return; + if (gSetting_KILLED) + return; #endif - if (gVoxResumeCountdown == 0) - { - if (gVoxPauseCountdown) - return; - } - else - { - g_VOX_Lost = false; - gVoxPauseCountdown = 0; - } - - #ifdef ENABLE_FMRADIO - if (gFmRadioMode) - return; - #endif - - if (gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) + if (gVoxResumeCountdown == 0) + { + if (gVoxPauseCountdown) return; - - if (gScanStateDir != SCAN_OFF) + } + else + { + g_VOX_Lost = false; + gVoxPauseCountdown = 0; + } + + #ifdef ENABLE_FMRADIO + if (gFmRadioMode) return; - - if (gVOX_NoiseDetected) + #endif + + if (gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) + return; + + if (gScanStateDir != SCAN_OFF) + return; + + if (gVOX_NoiseDetected) + { + if (g_VOX_Lost) + gVoxStopCountdown_10ms = vox_stop_count_down_10ms; + else if (gVoxStopCountdown_10ms == 0) + gVOX_NoiseDetected = false; + + if (gCurrentFunction == FUNCTION_TRANSMIT && !gPttIsPressed && !gVOX_NoiseDetected) { - if (g_VOX_Lost) - gVoxStopCountdown_10ms = vox_stop_count_down_10ms; - else - if (gVoxStopCountdown_10ms == 0) - gVOX_NoiseDetected = false; - - if (gCurrentFunction == FUNCTION_TRANSMIT && !gPttIsPressed && !gVOX_NoiseDetected) + if (gFlagEndTransmission) { - if (gFlagEndTransmission) + //if (gCurrentFunction != FUNCTION_FOREGROUND) + FUNCTION_Select(FUNCTION_FOREGROUND); + } + else + { + APP_EndTransmission(); + + if (gEeprom.REPEATER_TAIL_TONE_ELIMINATION == 0) { //if (gCurrentFunction != FUNCTION_FOREGROUND) FUNCTION_Select(FUNCTION_FOREGROUND); } else - { - APP_EndTransmission(); - - if (gEeprom.REPEATER_TAIL_TONE_ELIMINATION == 0) - { - //if (gCurrentFunction != FUNCTION_FOREGROUND) - FUNCTION_Select(FUNCTION_FOREGROUND); - } - else - gRTTECountdown = gEeprom.REPEATER_TAIL_TONE_ELIMINATION * 10; - } - - gUpdateStatus = true; - gUpdateDisplay = true; - gFlagEndTransmission = false; + gRTTECountdown = gEeprom.REPEATER_TAIL_TONE_ELIMINATION * 10; } - return; + + gUpdateStatus = true; + gUpdateDisplay = true; + gFlagEndTransmission = false; } - - if (g_VOX_Lost) + return; + } + + if (g_VOX_Lost) + { + gVOX_NoiseDetected = true; + + if (gCurrentFunction == FUNCTION_POWER_SAVE) + FUNCTION_Select(FUNCTION_FOREGROUND); + + if (gCurrentFunction != FUNCTION_TRANSMIT && gSerialConfigCountDown_500ms == 0) { - gVOX_NoiseDetected = true; - - if (gCurrentFunction == FUNCTION_POWER_SAVE) - FUNCTION_Select(FUNCTION_FOREGROUND); - - if (gCurrentFunction != FUNCTION_TRANSMIT && gSerialConfigCountDown_500ms == 0) - { #ifdef ENABLE_DTMF_CALLING - gDTMF_ReplyState = DTMF_REPLY_NONE; + gDTMF_ReplyState = DTMF_REPLY_NONE; #endif - RADIO_PrepareTX(); - gUpdateDisplay = true; - } + RADIO_PrepareTX(); + gUpdateDisplay = true; } } +} #endif void APP_Update(void) @@ -910,23 +909,20 @@ void APP_Update(void) HandleVox(); #endif - if (gSchedulePowerSave) - { - if ( -#ifdef ENABLE_FMRADIO - gFmRadioMode || -#endif - gPttIsPressed || + if (gSchedulePowerSave) { + if (gPttIsPressed || gKeyBeingHeld || gEeprom.BATTERY_SAVE == 0 || gScanStateDir != SCAN_OFF || - gCssBackgroundScan || + gCssBackgroundScan || gScreenToDisplay != DISPLAY_MAIN +#ifdef ENABLE_FMRADIO + || gFmRadioMode +#endif #ifdef ENABLE_DTMF_CALLING || gDTMF_CallState != DTMF_CALL_STATE_NONE #endif - ) - { + ){ gBatterySaveCountdown_10ms = battery_save_count_10ms; } else @@ -1181,7 +1177,7 @@ void APP_TimeSlice10ms(void) if (gCurrentFunction == FUNCTION_TRANSMIT) { #ifdef ENABLE_ALARM - if (gAlarmState == ALARM_STATE_TXALARM || gAlarmState == ALARM_STATE_ALARM) + if (gAlarmState == ALARM_STATE_TXALARM || gAlarmState == ALARM_STATE_SITE_ALARM) { uint16_t Tone; @@ -1203,7 +1199,7 @@ void APP_TimeSlice10ms(void) if (gAlarmState == ALARM_STATE_TXALARM) { - gAlarmState = ALARM_STATE_ALARM; + gAlarmState = ALARM_STATE_SITE_ALARM; RADIO_EnableCxCSS(); BK4819_SetupPowerAmplifier(0, 0); @@ -1353,14 +1349,14 @@ void APP_TimeSlice500ms(void) // Skipped authentic device check - #ifdef ENABLE_FMRADIO - if (gFmRadioCountdown_500ms > 0) - { - gFmRadioCountdown_500ms--; - if (gFmRadioMode) // 1of11 - return; - } - #endif +#ifdef ENABLE_FMRADIO + if (gFmRadioCountdown_500ms > 0) + { + gFmRadioCountdown_500ms--; + if (gFmRadioMode) // 1of11 + return; + } +#endif if (gBacklightCountdown_500ms > 0 && !gAskToSave && !gCssBackgroundScan && // don't turn off backlight if user is in backlight menu option @@ -1564,30 +1560,29 @@ void APP_TimeSlice500ms(void) } #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) - static void ALARM_Off(void) - { - gAlarmState = ALARM_STATE_OFF; +static void ALARM_Off(void) +{ + AUDIO_AudioPathOff(); + gEnableSpeaker = false; - AUDIO_AudioPathOff(); - gEnableSpeaker = false; - - if (gEeprom.ALARM_MODE == ALARM_MODE_TONE) - { - RADIO_SendEndOfTransmission(); - RADIO_EnableCxCSS(); - } - - #ifdef ENABLE_VOX - gVoxResumeCountdown = 80; - #endif - - SYSTEM_DelayMs(5); - - RADIO_SetupRegisters(true); - - if (gScreenToDisplay != DISPLAY_MENU) // 1of11 .. don't close the menu - gRequestDisplayScreen = DISPLAY_MAIN; + if (gAlarmState == ALARM_STATE_TXALARM) { + RADIO_SendEndOfTransmission(); + RADIO_EnableCxCSS(); } + + gAlarmState = ALARM_STATE_OFF; + +#ifdef ENABLE_VOX + gVoxResumeCountdown = 80; +#endif + + SYSTEM_DelayMs(5); + + RADIO_SetupRegisters(true); + + if (gScreenToDisplay != DISPLAY_MENU) // 1of11 .. don't close the menu + gRequestDisplayScreen = DISPLAY_MAIN; +} #endif @@ -1842,22 +1837,21 @@ static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) } } #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) + else if ((!bKeyHeld && bKeyPressed) || (gAlarmState == ALARM_STATE_TX1750 && bKeyHeld && !bKeyPressed)) + { + ALARM_Off(); + + if (gEeprom.REPEATER_TAIL_TONE_ELIMINATION == 0) + FUNCTION_Select(FUNCTION_FOREGROUND); else - if ((!bKeyHeld && bKeyPressed) || (gAlarmState == ALARM_STATE_TX1750 && bKeyHeld && !bKeyPressed)) - { - ALARM_Off(); + gRTTECountdown = gEeprom.REPEATER_TAIL_TONE_ELIMINATION * 10; - if (gEeprom.REPEATER_TAIL_TONE_ELIMINATION == 0) - FUNCTION_Select(FUNCTION_FOREGROUND); - else - gRTTECountdown = gEeprom.REPEATER_TAIL_TONE_ELIMINATION * 10; - - if (Key == KEY_PTT) - gPttWasPressed = true; - else - if (!bKeyHeld) - gPttWasReleased = true; - } + if (Key == KEY_PTT) + gPttWasPressed = true; + else + if (!bKeyHeld) + gPttWasReleased = true; + } #endif } else if (Key != KEY_SIDE1 && Key != KEY_SIDE2) { diff --git a/functions.c b/functions.c index d2a4d86..5d8107d 100644 --- a/functions.c +++ b/functions.c @@ -174,35 +174,33 @@ void FUNCTION_Select(FUNCTION_Type_t Function) gDTMF_RX_live_timeout = 0; memset(gDTMF_RX_live, 0, sizeof(gDTMF_RX_live)); - #if defined(ENABLE_FMRADIO) - if (gFmRadioMode) - BK1080_Init(0, false); - #endif + #if defined(ENABLE_FMRADIO) + if (gFmRadioMode) + BK1080_Init(0, false); + #endif - #ifdef ENABLE_ALARM - if (gAlarmState == ALARM_STATE_TXALARM && gEeprom.ALARM_MODE != ALARM_MODE_TONE) - { - gAlarmState = ALARM_STATE_ALARM; + #ifdef ENABLE_ALARM + if (gAlarmState == ALARM_STATE_SITE_ALARM) + { + GUI_DisplayScreen(); - GUI_DisplayScreen(); + AUDIO_AudioPathOff(); - AUDIO_AudioPathOff(); + SYSTEM_DelayMs(20); + BK4819_PlayTone(500, 0); + SYSTEM_DelayMs(2); - SYSTEM_DelayMs(20); - BK4819_PlayTone(500, 0); - SYSTEM_DelayMs(2); + AUDIO_AudioPathOn(); - AUDIO_AudioPathOn(); + gEnableSpeaker = true; - gEnableSpeaker = true; + SYSTEM_DelayMs(60); + BK4819_ExitTxMute(); - SYSTEM_DelayMs(60); - BK4819_ExitTxMute(); - - gAlarmToneCounter = 0; - break; - } - #endif + gAlarmToneCounter = 0; + break; + } + #endif gUpdateStatus = true; @@ -219,24 +217,25 @@ void FUNCTION_Select(FUNCTION_Type_t Function) BK4819_PlaySingleTone(2525, 250, 0, gEeprom.DTMF_SIDE_TONE); #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) - if (gAlarmState != ALARM_STATE_OFF) - { - #ifdef ENABLE_TX1750 - if (gAlarmState == ALARM_STATE_TX1750) - BK4819_TransmitTone(true, 1750); - #endif - #ifdef ENABLE_ALARM - if (gAlarmState == ALARM_STATE_TXALARM) - BK4819_TransmitTone(true, 500); - #endif - SYSTEM_DelayMs(2); - AUDIO_AudioPathOn(); - #ifdef ENABLE_ALARM - gAlarmToneCounter = 0; - #endif - gEnableSpeaker = true; - break; - } + if (gAlarmState != ALARM_STATE_OFF) { + #ifdef ENABLE_TX1750 + if (gAlarmState == ALARM_STATE_TX1750) + BK4819_TransmitTone(true, 1750); + #endif + + #ifdef ENABLE_ALARM + if (gAlarmState == ALARM_STATE_TXALARM) + BK4819_TransmitTone(true, 500); + + gAlarmToneCounter = 0; + #endif + + SYSTEM_DelayMs(2); + AUDIO_AudioPathOn(); + gEnableSpeaker = true; + + break; + } #endif if (gCurrentVfo->SCRAMBLING_TYPE > 0 && gSetting_ScrambleEnable) diff --git a/misc.h b/misc.h index 59e70a0..05d4723 100644 --- a/misc.h +++ b/misc.h @@ -63,7 +63,7 @@ enum { enum AlarmState_t { ALARM_STATE_OFF = 0, ALARM_STATE_TXALARM, - ALARM_STATE_ALARM, + ALARM_STATE_SITE_ALARM, ALARM_STATE_TX1750 }; typedef enum AlarmState_t AlarmState_t; diff --git a/radio.c b/radio.c index eaacfa5..b9e6bde 100644 --- a/radio.c +++ b/radio.c @@ -42,18 +42,19 @@ VFO_Info_t *gCurrentVfo; DCS_CodeType_t gCurrentCodeType; VfoState_t VfoState[2]; -const char gModulationStr[][4] = -{ - "FM", - "AM", - "USB", +const char gModulationStr[MODULATION_UKNOWN][4] = { + [MODULATION_FM]="FM", + [MODULATION_AM]="AM", + [MODULATION_USB]="USB", #ifdef ENABLE_BYP_RAW_DEMODULATORS - "BYP", - "RAW" + [MODULATION_BYP]="BYP", + [MODULATION_RAW]="RAW" #endif }; + + bool RADIO_CheckValidChannel(uint16_t Channel, bool bCheckScanList, uint8_t VFO) { // return true if the channel appears valid @@ -955,31 +956,23 @@ void RADIO_SetupAGC(bool listeningAM, bool disable) void RADIO_SetVfoState(VfoState_t State) { - if (State == VFO_STATE_NORMAL) - { + if (State == VFO_STATE_NORMAL) { VfoState[0] = VFO_STATE_NORMAL; VfoState[1] = VFO_STATE_NORMAL; - gVFOStateResumeCountdown_500ms = 0; - } - else - { - if (State == VFO_STATE_VOLTAGE_HIGH) - { - VfoState[0] = VFO_STATE_VOLTAGE_HIGH; - VfoState[1] = VFO_STATE_TX_DISABLE; - } - else - { // 1of11 - const unsigned int vfo = (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? gEeprom.RX_VFO : gEeprom.TX_VFO; - VfoState[vfo] = State; - } - - gVFOStateResumeCountdown_500ms = vfo_state_resume_countdown_500ms; + } else if (State == VFO_STATE_VOLTAGE_HIGH) { + VfoState[0] = VFO_STATE_VOLTAGE_HIGH; + VfoState[1] = VFO_STATE_TX_DISABLE; + } else { + // 1of11 + const unsigned int vfo = (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? gEeprom.RX_VFO : gEeprom.TX_VFO; + VfoState[vfo] = State; } + gVFOStateResumeCountdown_500ms = (State == VFO_STATE_NORMAL) ? 0 : vfo_state_resume_countdown_500ms; gUpdateDisplay = true; } + void RADIO_PrepareTX(void) { VfoState_t State = VFO_STATE_NORMAL; // default to OK to TX @@ -1004,97 +997,84 @@ void RADIO_PrepareTX(void) RADIO_SelectCurrentVfo(); - #if defined(ENABLE_ALARM) && defined(ENABLE_TX1750) - if (gAlarmState == ALARM_STATE_OFF || - gAlarmState == ALARM_STATE_TX1750 || - (gAlarmState == ALARM_STATE_ALARM && gEeprom.ALARM_MODE == ALARM_MODE_TONE)) - #elif defined(ENABLE_ALARM) - if (gAlarmState == ALARM_STATE_OFF || - (gAlarmState == ALARM_STATE_ALARM && gEeprom.ALARM_MODE == ALARM_MODE_TONE)) - #elif defined(ENABLE_TX1750) - if (gAlarmState == ALARM_STATE_OFF || - gAlarmState == ALARM_STATE_TX1750) - #endif - { - #ifndef ENABLE_TX_WHEN_AM - if (gCurrentVfo->Modulation != MODULATION_FM) - { // not allowed to TX if in AM mode - State = VFO_STATE_TX_DISABLE; - } - else + if(TX_freq_check(gCurrentVfo->pTX->Frequency) != 0 + #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) + && gAlarmState != ALARM_STATE_SITE_ALARM #endif - if (gSerialConfigCountDown_500ms > 0) - { // TX is disabled or config upload/download in progress - State = VFO_STATE_TX_DISABLE; - } - else - if (TX_freq_check(gCurrentVfo->pTX->Frequency) == 0) - { // TX frequency is allowed - if (gCurrentVfo->BUSY_CHANNEL_LOCK && gCurrentFunction == FUNCTION_RECEIVE) - State = VFO_STATE_BUSY; // busy RX'ing a station - else - if (gBatteryDisplayLevel == 0) - State = VFO_STATE_BAT_LOW; // charge your battery ! - else - if (gBatteryDisplayLevel > 6) - State = VFO_STATE_VOLTAGE_HIGH; // over voltage .. this is being a pain - } - else - State = VFO_STATE_TX_DISABLE; // TX frequency not allowed + ) { + // TX frequency not allowed + State = VFO_STATE_TX_DISABLE; + } else if (gSerialConfigCountDown_500ms > 0) { + // TX is disabled or config upload/download in progress + State = VFO_STATE_TX_DISABLE; + } else if (gCurrentVfo->BUSY_CHANNEL_LOCK && gCurrentFunction == FUNCTION_RECEIVE) { + // busy RX'ing a station + State = VFO_STATE_BUSY; + } else if (gBatteryDisplayLevel == 0) { + // charge your battery !git co + State = VFO_STATE_BAT_LOW; + } else if (gBatteryDisplayLevel > 6) { + // over voltage .. this is being a pain + State = VFO_STATE_VOLTAGE_HIGH; } + #ifndef ENABLE_TX_WHEN_AM + else if (gCurrentVfo->Modulation != MODULATION_FM) { + // not allowed to TX if in AM mode + State = VFO_STATE_TX_DISABLE; + } + #endif - if (State != VFO_STATE_NORMAL) - { // TX not allowed + if (State != VFO_STATE_NORMAL) { + // TX not allowed RADIO_SetVfoState(State); - #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) - gAlarmState = ALARM_STATE_OFF; - #endif + #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) + gAlarmState = ALARM_STATE_OFF; + #endif -#ifdef ENABLE_DTMF_CALLING + #ifdef ENABLE_DTMF_CALLING gDTMF_ReplyState = DTMF_REPLY_NONE; -#endif + #endif AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL); return; } // TX is allowed -#ifdef ENABLE_DTMF_CALLING + #ifdef ENABLE_DTMF_CALLING if (gDTMF_ReplyState == DTMF_REPLY_ANI) { if (gDTMF_CallMode == DTMF_CALL_MODE_DTMF) { - gDTMF_IsTx = true; - gDTMF_CallState = DTMF_CALL_STATE_NONE; + gDTMF_IsTx = true; + gDTMF_CallState = DTMF_CALL_STATE_NONE; gDTMF_TxStopCountdown_500ms = DTMF_txstop_countdown_500ms; } else { + gDTMF_IsTx = false; gDTMF_CallState = DTMF_CALL_STATE_CALL_OUT; - gDTMF_IsTx = false; } } -#endif + #endif FUNCTION_Select(FUNCTION_TRANSMIT); gTxTimerCountdown_500ms = 0; // no timeout #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) - if (gAlarmState == ALARM_STATE_OFF) + if (gAlarmState == ALARM_STATE_OFF) #endif { if (gEeprom.TX_TIMEOUT_TIMER == 0) gTxTimerCountdown_500ms = 60; // 30 sec - else - if (gEeprom.TX_TIMEOUT_TIMER < (ARRAY_SIZE(gSubMenu_TOT) - 1)) + else if (gEeprom.TX_TIMEOUT_TIMER < (ARRAY_SIZE(gSubMenu_TOT) - 1)) gTxTimerCountdown_500ms = 120 * gEeprom.TX_TIMEOUT_TIMER; // minutes else gTxTimerCountdown_500ms = 120 * 15; // 15 minutes } - gTxTimeoutReached = false; + gTxTimeoutReached = false; gFlagEndTransmission = false; gRTTECountdown = 0; diff --git a/radio.h b/radio.h index 64429c4..3b5f8b2 100644 --- a/radio.h +++ b/radio.h @@ -50,7 +50,8 @@ enum VfoState_t VFO_STATE_TX_DISABLE, VFO_STATE_TIMEOUT, VFO_STATE_ALARM, - VFO_STATE_VOLTAGE_HIGH + VFO_STATE_VOLTAGE_HIGH, + _VFO_STATE_LAST_ELEMENT }; typedef enum VfoState_t VfoState_t; diff --git a/ui/main.c b/ui/main.c index 103f103..6c20ec3 100644 --- a/ui/main.c +++ b/ui/main.c @@ -51,6 +51,16 @@ const int8_t dBmCorrTable[7] = { -1 // band 7 }; +const char *VfoStateStr[] = { + [VFO_STATE_NORMAL]="", + [VFO_STATE_BUSY]="BUSY", + [VFO_STATE_BAT_LOW]="BAT LOW", + [VFO_STATE_TX_DISABLE]="TX DISABLE", + [VFO_STATE_TIMEOUT]="TIMEOUT", + [VFO_STATE_ALARM]="ALARM", + [VFO_STATE_VOLTAGE_HIGH]="VOLT HIGH" +}; + // *************************************************************************** static void DrawSmallAntennaAndBars(uint8_t *p, unsigned int level) @@ -303,10 +313,7 @@ void UI_MAIN_TimeSlice500ms(void) void UI_DisplayMain(void) { - const unsigned int line0 = 0; // text screen line - const unsigned int line1 = 4; char String[22]; - unsigned int vfo_num; center_line = CENTER_LINE_NONE; @@ -329,8 +336,10 @@ void UI_DisplayMain(void) unsigned int activeTxVFO = gRxVfoIsActive ? gEeprom.RX_VFO : gEeprom.TX_VFO; - for (vfo_num = 0; vfo_num < 2; vfo_num++) + for (unsigned int vfo_num = 0; vfo_num < 2; vfo_num++) { + const unsigned int line0 = 0; // text screen line + const unsigned int line1 = 4; const unsigned int line = (vfo_num == 0) ? line0 : line1; const bool isMainVFO = (vfo_num == gEeprom.TX_VFO); uint8_t *p_line0 = gFrameBuffer[line + 0]; @@ -416,7 +425,7 @@ void UI_DisplayMain(void) { // transmitting #ifdef ENABLE_ALARM - if (gAlarmState == ALARM_STATE_ALARM) + if (gAlarmState == ALARM_STATE_SITE_ALARM) mode = 2; else #endif @@ -483,10 +492,10 @@ void UI_DisplayMain(void) // ************ - unsigned int state = VfoState[vfo_num]; + enum VfoState_t state = VfoState[vfo_num]; #ifdef ENABLE_ALARM - if (gCurrentFunction == FUNCTION_TRANSMIT && gAlarmState == ALARM_STATE_ALARM) { + if (gCurrentFunction == FUNCTION_TRANSMIT && gAlarmState == ALARM_STATE_SITE_ALARM) { if (activeTxVFO == vfo_num) state = VFO_STATE_ALARM; } @@ -496,9 +505,8 @@ void UI_DisplayMain(void) if (state != VFO_STATE_NORMAL) { - const char *state_list[] = {"", "BUSY", "BAT LOW", "TX DISABLE", "TIMEOUT", "ALARM", "VOLT HIGH"}; - if (state < ARRAY_SIZE(state_list)) - UI_PrintString(state_list[state], 31, 0, line, 8); + if (state < ARRAY_SIZE(VfoStateStr)) + UI_PrintString(VfoStateStr[state], 31, 0, line, 8); } else if (gInputBoxIndex > 0 && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]) && gEeprom.TX_VFO == vfo_num) { // user entering a frequency