diff --git a/app/app.c b/app/app.c index ab633e6..0c6cbf9 100644 --- a/app/app.c +++ b/app/app.c @@ -417,7 +417,7 @@ Skip: case END_OF_RX_MODE_TTE: if (gEeprom.TAIL_TONE_ELIMINATION) { - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gTailNoteEliminationCountdown_10ms = 20; gFlagTailNoteEliminationComplete = false; @@ -476,7 +476,7 @@ void APP_StartListening(FUNCTION_Type_t Function, const bool reset_am_fix) // clear the other vfo's rssi level (to hide the antenna symbol) gVFO_RSSI_bar_level[(chan + 1) & 1u] = 0; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; if (gSetting_backlight_on_tx_rx >= BACKLIGHT_ON_TR_RX) @@ -1306,7 +1306,7 @@ void APP_TimeSlice10ms(void) RADIO_SetTxParameters(); BK4819_TransmitTone(true, 500); SYSTEM_DelayMs(2); - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; gAlarmToneCounter = 0; @@ -1837,7 +1837,7 @@ void APP_TimeSlice500ms(void) { gAlarmState = ALARM_STATE_OFF; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; if (gEeprom.ALARM_MODE == ALARM_MODE_TONE) @@ -2065,7 +2065,7 @@ static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { if (!bKeyPressed) { - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -2081,7 +2081,7 @@ static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { if (gEeprom.DTMF_SIDE_TONE) { // user will here the DTMF tones in speaker - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; } diff --git a/app/dtmf.c b/app/dtmf.c index d95cbdf..62a2c5e 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -434,7 +434,7 @@ void DTMF_Reply(void) if (gEeprom.DTMF_SIDE_TONE) { // the user will also hear the transmitted tones - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; } @@ -450,7 +450,7 @@ void DTMF_Reply(void) gEeprom.DTMF_CODE_PERSIST_TIME, gEeprom.DTMF_CODE_INTERVAL_TIME); - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; diff --git a/app/fm.c b/app/fm.c index eef6a7e..260e2d4 100644 --- a/app/fm.c +++ b/app/fm.c @@ -96,7 +96,7 @@ void FM_TurnOff(void) gFM_ScanState = FM_SCAN_OFF; gFM_RestoreCountdown_10ms = 0; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -119,7 +119,7 @@ void FM_EraseChannels(void) void FM_Tune(uint16_t Frequency, int8_t Step, bool bFlag) { - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -166,7 +166,7 @@ void FM_PlayAndUpdate(void) gScheduleFM = false; gAskToSave = false; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; } @@ -625,7 +625,7 @@ void FM_Play(void) if (!gEeprom.FM_IsMrMode) gEeprom.FM_SelectedFrequency = gEeprom.FM_FrequencyPlaying; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; GUI_SelectNextDisplay(DISPLAY_FM); @@ -659,7 +659,7 @@ void FM_Start(void) BK1080_Init(gEeprom.FM_FrequencyPlaying, true); - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; gUpdateStatus = true; diff --git a/app/spectrum.c b/app/spectrum.c index f771c00..bfde154 100644 --- a/app/spectrum.c +++ b/app/spectrum.c @@ -16,6 +16,7 @@ #include "app/spectrum.h" #include "driver/backlight.h" +#include "audio.h" struct FrequencyBandInfo { uint32_t lower; @@ -304,9 +305,9 @@ static void ToggleAudio(bool on) { } audioState = on; if (on) { - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); } else { - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); } } diff --git a/audio.c b/audio.c index acecd9d..b48373d 100644 --- a/audio.c +++ b/audio.c @@ -97,7 +97,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) ToneConfig = BK4819_ReadRegister(BK4819_REG_71); - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); if (gCurrentFunction == FUNCTION_POWER_SAVE && gRxIdleMode) BK4819_RX_TurnOn(); @@ -138,7 +138,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) SYSTEM_DelayMs(2); - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); SYSTEM_DelayMs(60); @@ -185,7 +185,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) BK4819_EnterTxMute(); SYSTEM_DelayMs(20); - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); #ifdef ENABLE_VOX gVoxResumeCountdown = 80; @@ -197,7 +197,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) BK4819_WriteRegister(BK4819_REG_71, ToneConfig); if (gEnableSpeaker) - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); #ifdef ENABLE_FMRADIO if (gFmRadioMode) @@ -270,7 +270,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) BK1080_Mute(true); #endif - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); #ifdef ENABLE_VOX gVoxResumeCountdown = 2000; @@ -297,7 +297,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) #endif if (!gEnableSpeaker) - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gVoiceWriteIndex = 0; gVoiceReadIndex = 0; @@ -438,7 +438,7 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) #endif if (!gEnableSpeaker) - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); #ifdef ENABLE_VOX gVoxResumeCountdown = 80; @@ -449,3 +449,4 @@ void AUDIO_PlayBeep(BEEP_Type_t Beep) } #endif + diff --git a/audio.h b/audio.h index 86b5928..19b5487 100644 --- a/audio.h +++ b/audio.h @@ -20,6 +20,9 @@ #include #include +#include "bsp/dp32g030/gpio.h" +#include "driver/gpio.h" + enum BEEP_Type_t { BEEP_NONE = 0, @@ -130,6 +133,14 @@ enum VOICE_ID_t typedef enum VOICE_ID_t VOICE_ID_t; +static inline void AUDIO_AudioPathOn(void) { + GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); +} + +static inline void AUDIO_AudioPathOff(void) { + GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); +} + #ifdef ENABLE_VOICE extern VOICE_ID_t gVoiceID[8]; extern uint8_t gVoiceReadIndex; diff --git a/driver/bk4819.c b/driver/bk4819.c index 40a960f..07db8fc 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -16,6 +16,7 @@ #include // NULL +#include "audio.h" #include "bk4819.h" #include "bsp/dp32g030/gpio.h" #include "bsp/dp32g030/portcon.h" @@ -1000,7 +1001,7 @@ void BK4819_PlaySingleTone(const unsigned int tone_Hz, const unsigned int delay, if (play_speaker) { - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); BK4819_SetAF(BK4819_AF_BEEP); } else @@ -1022,7 +1023,7 @@ void BK4819_PlaySingleTone(const unsigned int tone_Hz, const unsigned int delay, if (play_speaker) { - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); BK4819_SetAF(BK4819_AF_MUTE); } diff --git a/driver/gpio.c b/driver/gpio.c index 03f5053..2478280 100644 --- a/driver/gpio.c +++ b/driver/gpio.c @@ -14,25 +14,5 @@ * limitations under the License. */ -#include "driver/gpio.h" -void GPIO_ClearBit(volatile uint32_t *pReg, uint8_t Bit) -{ - *pReg &= ~(1U << Bit); -} - -uint8_t GPIO_CheckBit(volatile uint32_t *pReg, uint8_t Bit) -{ - return (*pReg >> Bit) & 1U; -} - -void GPIO_FlipBit(volatile uint32_t *pReg, uint8_t Bit) -{ - *pReg ^= 1U << Bit; -} - -void GPIO_SetBit(volatile uint32_t *pReg, uint8_t Bit) -{ - *pReg |= 1U << Bit; -} diff --git a/driver/gpio.h b/driver/gpio.h index 0d9f1d0..4de7e8b 100644 --- a/driver/gpio.h +++ b/driver/gpio.h @@ -58,10 +58,21 @@ enum GPIOC_PINS { GPIOC_PIN_PTT = 5 }; -void GPIO_ClearBit(volatile uint32_t *pReg, uint8_t Bit); -uint8_t GPIO_CheckBit(volatile uint32_t *pReg, uint8_t Bit); -void GPIO_FlipBit( volatile uint32_t *pReg, uint8_t Bit); -void GPIO_SetBit( volatile uint32_t *pReg, uint8_t Bit); +static inline void GPIO_ClearBit(volatile uint32_t *pReg, uint8_t Bit) { + *pReg &= ~(1U << Bit); +} + +static inline uint8_t GPIO_CheckBit(volatile uint32_t *pReg, uint8_t Bit) { + return (*pReg >> Bit) & 1U; +} + +static inline void GPIO_FlipBit(volatile uint32_t *pReg, uint8_t Bit) { + *pReg ^= 1U << Bit; +} + +static inline void GPIO_SetBit(volatile uint32_t *pReg, uint8_t Bit) { + *pReg |= 1U << Bit; +} #endif diff --git a/functions.c b/functions.c index 6ad2443..d0a9497 100644 --- a/functions.c +++ b/functions.c @@ -179,13 +179,13 @@ void FUNCTION_Select(FUNCTION_Type_t Function) GUI_DisplayScreen(); - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); SYSTEM_DelayMs(20); BK4819_PlayTone(500, 0); SYSTEM_DelayMs(2); - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; @@ -223,7 +223,7 @@ void FUNCTION_Select(FUNCTION_Type_t Function) BK4819_TransmitTone(true, 500); #endif SYSTEM_DelayMs(2); - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); #ifdef ENABLE_ALARM gAlarmToneCounter = 0; #endif diff --git a/radio.c b/radio.c index fae2733..3c771fa 100644 --- a/radio.c +++ b/radio.c @@ -576,7 +576,7 @@ void RADIO_SetupRegisters(bool switchToForeground) uint16_t InterruptMask; uint32_t Frequency; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -826,7 +826,7 @@ void RADIO_SetTxParameters(void) { BK4819_FilterBandwidth_t Bandwidth = gCurrentVfo->CHANNEL_BANDWIDTH; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -1071,7 +1071,7 @@ void RADIO_SendEndOfTransmission(void) { // end-of-tx if (gEeprom.DTMF_SIDE_TONE) { - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOn(); gEnableSpeaker = true; SYSTEM_DelayMs(60); } @@ -1086,7 +1086,7 @@ void RADIO_SendEndOfTransmission(void) gEeprom.DTMF_CODE_PERSIST_TIME, gEeprom.DTMF_CODE_INTERVAL_TIME); - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + AUDIO_AudioPathOff(); gEnableSpeaker = false; }