From 85fb527020d993c43429d3d7018b0b59d94f5aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Ryb=C3=A1rsky?= Date: Fri, 28 Mar 2025 22:07:50 +0100 Subject: [PATCH] Do some stuff --- Makefile | 8 +-- app/action.c | 50 ++++------------- app/action.h | 2 - app/app.c | 46 +-------------- app/flashlight.c | 113 ++++++++++++++++--------------------- app/flashlight.h | 2 - app/main.c | 11 +--- app/menu.c | 95 ++++++++----------------------- driver/backlight.c | 33 ----------- driver/bk4819.c | 26 +++++---- driver/bk4819.h | 4 +- functions.c | 5 +- helper/boot.c | 7 --- misc.c | 7 --- misc.h | 7 --- radio.c | 54 +++++------------- radio.h | 127 +++++++++++++++++++++++------------------- scheduler.c | 7 ++- settings.c | 63 ++++++++------------- settings.h | 8 +-- ui/main.c | 79 ++++---------------------- ui/menu.c | 136 ++++++++------------------------------------- ui/menu.h | 26 ++------- 23 files changed, 258 insertions(+), 658 deletions(-) diff --git a/Makefile b/Makefile index 8631ab2..5e46b50 100644 --- a/Makefile +++ b/Makefile @@ -4,12 +4,12 @@ # 1 = enable # ---- STOCK QUANSHENG FEATURES ---- -ENABLE_FMRADIO ?= 1 +ENABLE_FMRADIO ?= 0 ENABLE_UART ?= 1 ENABLE_AIRCOPY ?= 0 ENABLE_NOAA ?= 0 ENABLE_VOICE ?= 0 -ENABLE_VOX ?= 0 +ENABLE_VOX ?= 1 ENABLE_ALARM ?= 0 ENABLE_TX1750 ?= 1 ENABLE_PWRON_PASSWORD ?= 0 @@ -47,7 +47,6 @@ ENABLE_FEAT_F4HWN_RX_TX_TIMER ?= 0 ENABLE_FEAT_F4HWN_CHARGING_C ?= 1 ENABLE_FEAT_F4HWN_SLEEP ?= 1 ENABLE_FEAT_F4HWN_RESUME_STATE ?= 1 -ENABLE_FEAT_F4HWN_NARROWER ?= 1 ENABLE_FEAT_F4HWN_INV ?= 1 ENABLE_FEAT_F4HWN_CTR ?= 0 ENABLE_FEAT_F4HWN_RESCUE_OPS ?= 0 @@ -449,9 +448,6 @@ endif ifeq ($(ENABLE_FEAT_F4HWN_RESUME_STATE),1) CFLAGS += -DENABLE_FEAT_F4HWN_RESUME_STATE endif -ifeq ($(ENABLE_FEAT_F4HWN_NARROWER),1) - CFLAGS += -DENABLE_FEAT_F4HWN_NARROWER -endif ifeq ($(ENABLE_FEAT_F4HWN_INV),1) CFLAGS += -DENABLE_FEAT_F4HWN_INV endif diff --git a/app/action.c b/app/action.c index aa7ff5c..7792653 100644 --- a/app/action.c +++ b/app/action.c @@ -43,6 +43,7 @@ #include "ui/inputbox.h" #include "ui/ui.h" #include "driver/st7565.h" +#include "ui/menu.h" #ifdef ENABLE_REGA #include "app/rega.h" @@ -128,10 +129,8 @@ void (*action_opt_table[])(void) = { #else [ACTION_OPT_MUTE] = &FUNCTION_NOP, #endif - #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS [ACTION_OPT_POWER_HIGH] = &ACTION_Power_High, [ACTION_OPT_REMOVE_OFFSET] = &ACTION_Remove_Offset, - #endif #else [ACTION_OPT_RXMODE] = &FUNCTION_NOP, #endif @@ -145,8 +144,9 @@ static_assert(ARRAY_SIZE(action_opt_table) == ACTION_OPT_LEN); void ACTION_Power(void) { - if (++gTxVfo->OUTPUT_POWER > OUTPUT_POWER_HIGH) - gTxVfo->OUTPUT_POWER = OUTPUT_POWER_LOW1; + gTxVfo->OUTPUT_POWER++; + if (gTxVfo->OUTPUT_POWER >= ARRAY_SIZE(gSubMenu_TXP)) + gTxVfo->OUTPUT_POWER = 0; gRequestSaveChannel = 1; @@ -561,40 +561,12 @@ void ACTION_Ptt(void) void ACTION_Wn(void) { - #ifdef ENABLE_FEAT_F4HWN_NARROWER - bool narrower = 0; if (FUNCTION_IsRx()) { - gRxVfo->CHANNEL_BANDWIDTH = (gRxVfo->CHANNEL_BANDWIDTH == 0) ? 1: 0; - if(gRxVfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW && gSetting_set_nfm == 1) - { - narrower = 1; + gRxVfo->CHANNEL_BANDWIDTH++; + if (gRxVfo->CHANNEL_BANDWIDTH > BK4819_FILTER_BW_NARROWER) { + gRxVfo->CHANNEL_BANDWIDTH = BK4819_FILTER_BW_WIDE; } - - #ifdef ENABLE_AM_FIX - BK4819_SetFilterBandwidth(gRxVfo->CHANNEL_BANDWIDTH + narrower, true); - #else - BK4819_SetFilterBandwidth(gRxVfo->CHANNEL_BANDWIDTH + narrower, false); - #endif - } - else - { - gTxVfo->CHANNEL_BANDWIDTH = (gTxVfo->CHANNEL_BANDWIDTH == 0) ? 1: 0; - if(gTxVfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW && gSetting_set_nfm == 1) - { - narrower = 1; - } - - #ifdef ENABLE_AM_FIX - BK4819_SetFilterBandwidth(gTxVfo->CHANNEL_BANDWIDTH, true); - #else - BK4819_SetFilterBandwidth(gTxVfo->CHANNEL_BANDWIDTH, false); - #endif - } - #else - if (FUNCTION_IsRx()) - { - gRxVfo->CHANNEL_BANDWIDTH = (gRxVfo->CHANNEL_BANDWIDTH == 0) ? 1: 0; #ifdef ENABLE_AM_FIX BK4819_SetFilterBandwidth(gRxVfo->CHANNEL_BANDWIDTH, true); #else @@ -603,14 +575,16 @@ void ACTION_Wn(void) } else { - gTxVfo->CHANNEL_BANDWIDTH = (gTxVfo->CHANNEL_BANDWIDTH == 0) ? 1: 0; + gRxVfo->CHANNEL_BANDWIDTH++; + if (gRxVfo->CHANNEL_BANDWIDTH > BK4819_FILTER_BW_NARROWER) { + gRxVfo->CHANNEL_BANDWIDTH = BK4819_FILTER_BW_WIDE; + } #ifdef ENABLE_AM_FIX BK4819_SetFilterBandwidth(gTxVfo->CHANNEL_BANDWIDTH, true); #else BK4819_SetFilterBandwidth(gTxVfo->CHANNEL_BANDWIDTH, false); #endif } - #endif } void ACTION_BackLight(void) @@ -667,7 +641,6 @@ void ACTION_BackLightOnDemand(void) } #endif - #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS void ACTION_Power_High(void) { gPowerHigh = !gPowerHigh; @@ -679,5 +652,4 @@ void ACTION_BackLightOnDemand(void) gRemoveOffset = !gRemoveOffset; gVfoConfigureMode = VFO_CONFIGURE_RELOAD; } - #endif #endif \ No newline at end of file diff --git a/app/action.h b/app/action.h index 39b177a..4c0c6a0 100644 --- a/app/action.h +++ b/app/action.h @@ -45,10 +45,8 @@ void ACTION_SwitchDemodul(void); #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) void ACTION_Mute(void); #endif - #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS void ACTION_Power_High(void); void ACTION_Remove_Offset(void); - #endif #endif void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld); diff --git a/app/app.c b/app/app.c index af2fdd3..3c8fd21 100644 --- a/app/app.c +++ b/app/app.c @@ -850,43 +850,6 @@ void APP_Update(void) { } #endif -#ifdef ENABLE_FEAT_F4HWN - if (gCurrentFunction == FUNCTION_TRANSMIT && (gTxTimeoutReachedAlert || SerialConfigInProgress())) { - if (gSetting_set_tot >= 2) { - if (gEeprom.BACKLIGHT_TIME == 0) { - if (gBlinkCounter == 0 || gBlinkCounter == 250) { - GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); - } - } else { - if (gBlinkCounter == 0) { - //BACKLIGHT_TurnOn(); - BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MAX); - } else if (gBlinkCounter == 15000) { - //BACKLIGHT_TurnOff(); - BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MIN); - } - } - } - - gBlinkCounter++; - - if ( - (gSetting_set_tot == 3 && gEeprom.BACKLIGHT_TIME != 0 && gBlinkCounter > 74000) || - (gSetting_set_tot == 3 && gEeprom.BACKLIGHT_TIME == 0 && gBlinkCounter > 79000) || - (gSetting_set_tot != 3 && gBlinkCounter > 76000) - ) // try to calibrate 10 times - { - gBlinkCounter = 0; - - if (gSetting_set_tot == 1 || gSetting_set_tot == 3) { - BK4819_DisableScramble(); - BK4819_PlaySingleTone(gTxTimeoutToneAlert, 30, 1, true); - gTxTimeoutToneAlert += 100; - } - } - } -#endif - if (gCurrentFunction == FUNCTION_TRANSMIT && (gTxTimeoutReached || SerialConfigInProgress())) { // transmitter timed out or must de-key gTxTimeoutReached = false; @@ -1310,11 +1273,9 @@ void APP_TimeSlice10ms(void) { return; #endif -#if !defined(ENABLE_FEAT_F4HWN) || defined(ENABLE_FEAT_F4HWN_RESCUE_OPS) #ifdef ENABLE_FLASHLIGHT FlashlightTimeSlice(); #endif -#endif #ifdef ENABLE_VOX if (gVoxResumeCountdown > 0) @@ -1932,10 +1893,7 @@ static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { BK4819_ExitDTMF_TX(false); - if (gCurrentVfo->SCRAMBLING_TYPE == 0) - BK4819_DisableScramble(); - else - BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1); + BK4819_SetScramble(gCurrentVfo->SCRAMBLING_TYPE); } } else { @@ -1944,7 +1902,7 @@ static void ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { gEnableSpeaker = true; } - BK4819_DisableScramble(); + BK4819_SetScramble(0); if (Code == 0xFE) BK4819_TransmitTone(gEeprom.DTMF_SIDE_TONE, 1750); diff --git a/app/flashlight.c b/app/flashlight.c index 30b8881..d908c99 100644 --- a/app/flashlight.c +++ b/app/flashlight.c @@ -5,79 +5,60 @@ #include "flashlight.h" -#if !defined(ENABLE_FEAT_F4HWN) || defined(ENABLE_FEAT_F4HWN_RESCUE_OPS) - enum FlashlightMode_t gFlashLightState; +enum FlashlightMode_t gFlashLightState; - void FlashlightTimeSlice() - { - if (gFlashLightState == FLASHLIGHT_BLINK && (gFlashLightBlinkCounter & 15u) == 0) { - GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); +void FlashlightTimeSlice() { + if (gFlashLightState == FLASHLIGHT_BLINK && (gFlashLightBlinkCounter & 15u) == 0) { + GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); + return; + } + + if (gFlashLightState == FLASHLIGHT_SOS) { + const uint16_t u = 15; + static uint8_t c; + static uint16_t next; + + if (gFlashLightBlinkCounter - next > 7 * u) { + c = 0; + next = gFlashLightBlinkCounter + 1; return; } - if (gFlashLightState == FLASHLIGHT_SOS) { - const uint16_t u = 15; - static uint8_t c; - static uint16_t next; - - if (gFlashLightBlinkCounter - next > 7 * u) { - c = 0; - next = gFlashLightBlinkCounter + 1; - return; - } - - if (gFlashLightBlinkCounter == next) { - if (c==0) { - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); - } else { - GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); - } - - if (c >= 18) { - next = gFlashLightBlinkCounter + 7 * u; - c = 0; - } else if(c==7 || c==9 || c==11) { - next = gFlashLightBlinkCounter + 3 * u; - } else { - next = gFlashLightBlinkCounter + u; - } - c++; - } - } - } - - void ACTION_FlashLight(void) - { - switch (gFlashLightState) { - case FLASHLIGHT_OFF: - gFlashLightState++; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); - break; - case FLASHLIGHT_ON: - case FLASHLIGHT_BLINK: - gFlashLightState++; - break; - case FLASHLIGHT_SOS: - default: - gFlashLightState = 0; + if (gFlashLightBlinkCounter == next) { + if (c == 0) { GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); + } else { + GPIO_FlipBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); + } + + if (c >= 18) { + next = gFlashLightBlinkCounter + 7 * u; + c = 0; + } else if (c == 7 || c == 9 || c == 11) { + next = gFlashLightBlinkCounter + 3 * u; + } else { + next = gFlashLightBlinkCounter + u; + } + c++; } } -#else - void ACTION_FlashLight(void) - { - static bool gFlashLightState = false; +} - if(gFlashLightState) - { +void ACTION_FlashLight(void) { + switch (gFlashLightState) { + case FLASHLIGHT_OFF: + gFlashLightState++; + GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); + break; + case FLASHLIGHT_ON: + case FLASHLIGHT_BLINK: + gFlashLightState++; + break; + case FLASHLIGHT_SOS: + default: + gFlashLightState = 0; GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); - } - else - { - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); - } - - gFlashLightState = (gFlashLightState) ? false : true; } -#endif -#endif +} + +#endif \ No newline at end of file diff --git a/app/flashlight.h b/app/flashlight.h index 79fe986..bbd26eb 100644 --- a/app/flashlight.h +++ b/app/flashlight.h @@ -5,7 +5,6 @@ #include -#if !defined(ENABLE_FEAT_F4HWN) || defined(ENABLE_FEAT_F4HWN_RESCUE_OPS) enum FlashlightMode_t { FLASHLIGHT_OFF = 0, FLASHLIGHT_ON, @@ -17,7 +16,6 @@ extern volatile uint16_t gFlashLightBlinkCounter; void FlashlightTimeSlice(void); -#endif void ACTION_FlashLight(void); #endif diff --git a/app/main.c b/app/main.c index bd67470..7807c97 100644 --- a/app/main.c +++ b/app/main.c @@ -270,7 +270,7 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep) { break; case KEY_8: - gTxVfo->FrequencyReverse = gTxVfo->FrequencyReverse == false; + gTxVfo->FrequencyReverse = !gTxVfo->FrequencyReverse; gRequestSaveChannel = 1; break; @@ -360,10 +360,8 @@ void channelMove(uint16_t Channel) { //gRequestSaveVFO = true; gVfoConfigureMode = VFO_CONFIGURE_RELOAD; -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS gRemoveOffset = false; gPowerHigh = false; -#endif RADIO_ConfigureChannel(gEeprom.TX_VFO, gVfoConfigureMode); @@ -825,10 +823,8 @@ static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction) } #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS gRemoveOffset = false; gPowerHigh = false; -#endif uint8_t Channel = gEeprom.ScreenChannel[gEeprom.TX_VFO]; @@ -970,10 +966,7 @@ void MAIN_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { if (VfoState[vfo] == VFO_STATE_NORMAL && !TX_freq_check(gCurrentVfo->freq_config_TX.Frequency)) { RADIO_PrepareTX(); - if (gCurrentVfo->SCRAMBLING_TYPE > 0) - BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1); - else - BK4819_DisableScramble(); + BK4819_SetScramble(gCurrentVfo->SCRAMBLING_TYPE); BK4819_ToggleGpioOut(BK4819_GPIO5_PIN1_RED, true); MSG_FSKSendData(&dataPacket); BK4819_ToggleGpioOut(BK4819_GPIO5_PIN1_RED, false); diff --git a/app/menu.c b/app/menu.c index 1665a94..dc304a6 100644 --- a/app/menu.c +++ b/app/menu.c @@ -121,6 +121,11 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax) { *pMax = 9; break; + case MENU_TOT: + *pMin = 0; + *pMax = 179; + break; + case MENU_STEP: //*pMin = 0; *pMax = STEP_N_ELEM - 1; @@ -259,7 +264,7 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax) { case MENU_SCR: //*pMin = 0; - *pMax = 10; + *pMax = 65535; break; case MENU_AUTOLK: @@ -271,11 +276,6 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax) { *pMin = 0; break; - case MENU_TOT: - //*pMin = 0; - *pMin = 5; - *pMax = 179; - break; #ifdef ENABLE_VOX case MENU_VOX: @@ -385,35 +385,18 @@ int MENU_GetLimits(uint8_t menu_id, int32_t *pMin, int32_t *pMax) { //*pMin = 0; *pMax = ARRAY_SIZE(gSubMenu_SET_PTT) - 1; break; - case MENU_SET_TOT: - case MENU_SET_EOT: - //*pMin = 0; - *pMax = ARRAY_SIZE(gSubMenu_SET_TOT) - 1; - break; #ifdef ENABLE_FEAT_F4HWN_INV case MENU_SET_INV: //*pMin = 0; *pMax = ARRAY_SIZE(gSubMenu_OFF_ON) - 1; break; #endif -#ifdef ENABLE_FEAT_F4HWN_NARROWER - case MENU_SET_NFM: - //*pMin = 0; - *pMax = ARRAY_SIZE(gSubMenu_SET_NFM) - 1; - break; -#endif #ifdef ENABLE_FEAT_F4HWN_VOL case MENU_SET_VOL: //*pMin = 0; *pMax = 63; break; #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - case MENU_SET_KEY: - //*pMin = 0; - *pMax = 4; - break; -#endif #endif default: @@ -512,10 +495,7 @@ void MENU_AcceptSetting(void) { case MENU_SCR: gTxVfo->SCRAMBLING_TYPE = gSubMenuSelection; - if (gSubMenuSelection > 0) - BK4819_EnableScramble(gSubMenuSelection - 1); - else - BK4819_DisableScramble(); + BK4819_SetScramble(gSubMenuSelection); gRequestSaveChannel = 1; return; @@ -524,6 +504,10 @@ void MENU_AcceptSetting(void) { gRequestSaveChannel = 1; return; + case MENU_TOT: + gEeprom.TX_TIMEOUT_TIMER = gSubMenuSelection; + break; + case MENU_MEM_CH: gTxVfo->CHANNEL_SAVE = gSubMenuSelection; #if 0 @@ -600,10 +584,6 @@ void MENU_AcceptSetting(void) { gEeprom.BEEP_CONTROL = gSubMenuSelection; break; - case MENU_TOT: - gEeprom.TX_TIMEOUT_TIMER = gSubMenuSelection; - break; - #ifdef ENABLE_VOICE case MENU_VOICE: gEeprom.VOICE_PROMPT = gSubMenuSelection; @@ -843,31 +823,13 @@ void MENU_AcceptSetting(void) { gSetting_set_ptt = gSubMenuSelection; gSetting_set_ptt_session = gSetting_set_ptt; // Special for action break; - case MENU_SET_TOT: - gSetting_set_tot = gSubMenuSelection; - break; - case MENU_SET_EOT: - gSetting_set_eot = gSubMenuSelection; - break; case MENU_SET_INV: gSetting_set_inv = gSubMenuSelection; break; -#ifdef ENABLE_FEAT_F4HWN_NARROWER - case MENU_SET_NFM: - gSetting_set_nfm = gSubMenuSelection; - RADIO_SetTxParameters(); - RADIO_SetupRegisters(true); - break; -#endif #ifdef ENABLE_FEAT_F4HWN_VOL case MENU_SET_VOL: gEeprom.VOLUME_GAIN = gSubMenuSelection; break; -#endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - case MENU_SET_KEY: - gEeprom.SET_KEY = gSubMenuSelection; - break; #endif case MENU_SET_TMR: gSetting_set_tmr = gSubMenuSelection; @@ -978,6 +940,10 @@ void MENU_ShowCurrentSetting(void) { gSubMenuSelection = gTxVfo->BUSY_CHANNEL_LOCK; break; + case MENU_TOT: + gSubMenuSelection = gEeprom.TX_TIMEOUT_TIMER; + break; + case MENU_MEM_CH: #if 0 gSubMenuSelection = gEeprom.MrChannel[0]; @@ -1032,11 +998,6 @@ void MENU_ShowCurrentSetting(void) { case MENU_BEEP: gSubMenuSelection = gEeprom.BEEP_CONTROL; break; - - case MENU_TOT: - gSubMenuSelection = gEeprom.TX_TIMEOUT_TIMER; - break; - #ifdef ENABLE_VOICE case MENU_VOICE: gSubMenuSelection = gEeprom.VOICE_PROMPT; @@ -1242,29 +1203,13 @@ void MENU_ShowCurrentSetting(void) { case MENU_SET_PTT: gSubMenuSelection = gSetting_set_ptt_session; break; - case MENU_SET_TOT: - gSubMenuSelection = gSetting_set_tot; - break; - case MENU_SET_EOT: - gSubMenuSelection = gSetting_set_eot; - break; case MENU_SET_INV: gSubMenuSelection = gSetting_set_inv; break; -#ifdef ENABLE_FEAT_F4HWN_NARROWER - case MENU_SET_NFM: - gSubMenuSelection = gSetting_set_nfm; - break; -#endif #ifdef ENABLE_FEAT_F4HWN_VOL case MENU_SET_VOL: gSubMenuSelection = gEeprom.VOLUME_GAIN; break; -#endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - case MENU_SET_KEY: - gSubMenuSelection = gEeprom.SET_KEY; - break; #endif case MENU_SET_TMR: gSubMenuSelection = gSetting_set_tmr; @@ -1400,7 +1345,15 @@ static void MENU_Key_0_to_9(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { return; } - Offset = (Max >= 100) ? 3 : (Max >= 10) ? 2 : 1; + Offset = (Max >= 1000000000) ? 10 : + (Max >= 100000000) ? 9 : + (Max >= 10000000) ? 8 : + (Max >= 1000000) ? 7 : + (Max >= 100000) ? 6 : + (Max >= 10000) ? 5 : + (Max >= 1000) ? 4 : + (Max >= 100) ? 3 : + (Max >= 10) ? 2 : 1; /* switch (gInputBoxIndex) diff --git a/driver/backlight.c b/driver/backlight.c index a6dc7eb..2f89076 100644 --- a/driver/backlight.c +++ b/driver/backlight.c @@ -66,12 +66,6 @@ void BACKLIGHT_InitHardware() 0; } -static void BACKLIGHT_Sound(void) -{ - gK5startup = false; -} - - void BACKLIGHT_TurnOn(void) { #ifdef ENABLE_FEAT_F4HWN_SLEEP @@ -84,38 +78,11 @@ void BACKLIGHT_TurnOn(void) if (gEeprom.BACKLIGHT_TIME == 0) { BACKLIGHT_TurnOff(); - #ifdef ENABLE_FEAT_F4HWN - if(gK5startup == true) - { - BACKLIGHT_Sound(); - } - #endif return; } backlightOn = true; - -#ifdef ENABLE_FEAT_F4HWN - if(gK5startup == true) { - #if defined(ENABLE_FMRADIO) && defined(ENABLE_SPECTRUM) - BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MAX); - #else - for(uint8_t i = 0; i <= gEeprom.BACKLIGHT_MAX; i++) - { - BACKLIGHT_SetBrightness(i); - SYSTEM_DelayMs(50); - } - #endif - - BACKLIGHT_Sound(); - } - else - { BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MAX); - } -#else - BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MAX); -#endif switch (gEeprom.BACKLIGHT_TIME) { default: diff --git a/driver/bk4819.c b/driver/bk4819.c index ee643ad..275e792 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -48,6 +48,12 @@ __inline uint16_t scale_freq(uint16_t freq) return (((uint32_t)freq * 1353245u) + (1u << 16)) >> 17; // with rounding } +__inline uint16_t inverse_scale_freq(uint16_t scaled_freq) +{ + return (((uint32_t)scaled_freq << 17) - (1u << 16)) / 1353245u; +} + + void BK4819_FskEnableTx(void){ const uint16_t fsk_reg59 = BK4819_ReadRegister(BK4819_REG_59); BK4819_WriteRegister(BK4819_REG_59, (1u << 11) | fsk_reg59); @@ -854,18 +860,18 @@ void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency) } } -void BK4819_DisableScramble(void) +void BK4819_SetScramble(uint16_t Freq) { - const uint16_t Value = BK4819_ReadRegister(BK4819_REG_31); - BK4819_WriteRegister(BK4819_REG_31, Value & ~(1u << 1)); -} + uint16_t Value = BK4819_ReadRegister(BK4819_REG_31); + if (Freq) { + Value |= (1u << 1); + } else { + Value &= ~(1u << 1); + } + BK4819_WriteRegister(BK4819_REG_31, Value); -void BK4819_EnableScramble(uint8_t Type) -{ - const uint16_t Value = BK4819_ReadRegister(BK4819_REG_31); - BK4819_WriteRegister(BK4819_REG_31, Value | (1u << 1)); - - BK4819_WriteRegister(BK4819_REG_71, 0x68DC + (Type * 1032)); // 0110 1000 1101 1100 + //BK4819_WriteRegister(BK4819_REG_71, 0x68DC + (Freq * 1032)); // 0110 1000 1101 1100 + BK4819_WriteRegister(BK4819_REG_71, Freq); } bool BK4819_CompanderEnabled(void) diff --git a/driver/bk4819.h b/driver/bk4819.h index 963afa3..65121b1 100644 --- a/driver/bk4819.h +++ b/driver/bk4819.h @@ -65,6 +65,7 @@ typedef enum BK4819_CssScanResult_t BK4819_CssScanResult_t; // radio is asleep, not listening extern bool gRxIdleMode; +uint16_t inverse_scale_freq(uint16_t scaled_freq); uint16_t scale_freq(uint16_t freq); void BK4819_Init(void); @@ -102,8 +103,7 @@ void BK4819_SetupSquelch( void BK4819_SetAF(BK4819_AF_Type_t AF); void BK4819_RX_TurnOn(void); void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency); -void BK4819_DisableScramble(void); -void BK4819_EnableScramble(uint8_t Type); +void BK4819_SetScramble(uint16_t Freq); bool BK4819_CompanderEnabled(void); void BK4819_SetCompander(const unsigned int mode); diff --git a/functions.c b/functions.c index e9cbe2b..f67f952 100644 --- a/functions.c +++ b/functions.c @@ -251,6 +251,7 @@ void FUNCTION_Transmit() { DTMF_Reply(); + BK4819_SetScramble(gCurrentVfo->SCRAMBLING_TYPE); if (gCurrentVfo->DTMF_PTT_ID_TX_MODE == PTT_ID_APOLLO) BK4819_PlaySingleTone(2525, 250, 0, gEeprom.DTMF_SIDE_TONE); @@ -285,10 +286,6 @@ void FUNCTION_Transmit() { #endif - if (gCurrentVfo->SCRAMBLING_TYPE > 0) - BK4819_EnableScramble(gCurrentVfo->SCRAMBLING_TYPE - 1); - else - BK4819_DisableScramble(); if (gSetting_backlight_on_tx_rx & BACKLIGHT_ON_TR_TX) { BACKLIGHT_TurnOn(); diff --git a/helper/boot.c b/helper/boot.c index acd2cd1..20223a4 100644 --- a/helper/boot.c +++ b/helper/boot.c @@ -44,13 +44,6 @@ BOOT_Mode_t BOOT_GetMode(void) { SYSTEM_DelayMs(20); } -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - if (Keys[0] == (10 + gEeprom.SET_KEY)) - { - return BOOT_MODE_RESCUE_OPS; // Secret KEY pressed - } -#endif - if (Keys[0] == Keys[1]) { gKeyReading0 = Keys[0]; gKeyReading1 = Keys[0]; diff --git a/misc.c b/misc.c index 8001a93..999714a 100644 --- a/misc.c +++ b/misc.c @@ -111,12 +111,7 @@ enum BacklightOnRxTx_t gSetting_backlight_on_tx_rx; #ifdef ENABLE_FEAT_F4HWN bool gSetting_set_ptt = 0; - uint8_t gSetting_set_tot = 0; bool gSetting_set_inv = false; - uint8_t gSetting_set_eot = 0; - #ifdef ENABLE_FEAT_F4HWN_NARROWER - bool gSetting_set_nfm = 0; - #endif bool gSetting_set_tmr = 0; bool gSetting_set_ptt_session; #ifdef ENABLE_FEAT_F4HWN_DEBUG @@ -128,10 +123,8 @@ enum BacklightOnRxTx_t gSetting_backlight_on_tx_rx; uint8_t crc[15] = { 0 }; uint8_t lErrorsDuringAirCopy = 0; uint8_t gAircopyStep = 0; - #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS bool gPowerHigh = false; bool gRemoveOffset = false; - #endif #endif #ifdef ENABLE_AUDIO_BAR diff --git a/misc.h b/misc.h index a560c92..523d068 100644 --- a/misc.h +++ b/misc.h @@ -165,12 +165,7 @@ extern enum BacklightOnRxTx_t gSetting_backlight_on_tx_rx; #ifdef ENABLE_FEAT_F4HWN extern bool gSetting_set_ptt; - extern uint8_t gSetting_set_tot; extern bool gSetting_set_inv; - extern uint8_t gSetting_set_eot; - #ifdef ENABLE_FEAT_F4HWN_NARROWER - extern bool gSetting_set_nfm; - #endif extern bool gSetting_set_tmr; extern bool gSetting_set_ptt_session; #ifdef ENABLE_FEAT_F4HWN_DEBUG @@ -182,10 +177,8 @@ extern enum BacklightOnRxTx_t gSetting_backlight_on_tx_rx; extern uint8_t crc[15]; extern uint8_t lErrorsDuringAirCopy; extern uint8_t gAircopyStep; - #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS extern bool gPowerHigh; extern bool gRemoveOffset; - #endif #endif #ifdef ENABLE_AUDIO_BAR diff --git a/radio.c b/radio.c index e66c272..66a1f6c 100644 --- a/radio.c +++ b/radio.c @@ -229,13 +229,13 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure uint16_t base; if (IS_MR_CHANNEL(channel)) - base = channel * 16; + base = channel * 24; else - base = 0x0C80 + ((channel - FREQ_CHANNEL_FIRST) * 32) + (VFO * 16); + base = 0x0C80 + ((channel - FREQ_CHANNEL_FIRST) * 32) + (VFO * 24); if (configure == VFO_CONFIGURE_RELOAD || IS_FREQ_CHANNEL(channel)) { uint8_t tmp; - uint8_t data[8]; + uint8_t data[10]; // *************** @@ -256,10 +256,10 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure pVfo->STEP_SETTING = tmp; pVfo->StepFrequency = gStepFrequencyTable[tmp]; - tmp = data[7]; - if (tmp > 10) - tmp = 0; - pVfo->SCRAMBLING_TYPE = tmp; + tmp = data[8]; + pVfo->SCRAMBLING_TYPE = tmp ; + tmp = data[9]; + pVfo->SCRAMBLING_TYPE |= tmp << 8; //pVfo->SCRAMBLING_TYPE = 0; pVfo->freq_config_RX.CodeType = (data[2] >> 0) & 0x0F; @@ -314,10 +314,10 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure pVfo->BUSY_CHANNEL_LOCK = false; } else { const uint8_t d4 = data[4]; - pVfo->FrequencyReverse = !!((d4 >> 0) & 1u); - pVfo->CHANNEL_BANDWIDTH = !!((d4 >> 1) & 1u); - pVfo->OUTPUT_POWER = ((d4 >> 2) & 7u); - pVfo->BUSY_CHANNEL_LOCK = !!((d4 >> 5) & 1u); + pVfo->FrequencyReverse = ((d4 >> 0) & 1u) != 0; + pVfo->CHANNEL_BANDWIDTH = ((d4 >> 1) & 3u); + pVfo->OUTPUT_POWER = ((d4 >> 3) & 7u); + pVfo->BUSY_CHANNEL_LOCK = ((d4 >> 6) & 1u) != 0; } if (data[5] == 0xFF) { @@ -388,7 +388,6 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure pVfo->Compander = att.compander; -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS if(gRemoveOffset) { pVfo->pTX = &pVfo->freq_config_RX; @@ -398,7 +397,6 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure { pVfo->OUTPUT_POWER = OUTPUT_POWER_HIGH; } -#endif RADIO_ConfigureSquelchAndOutputPower(pVfo); } @@ -492,7 +490,7 @@ void RADIO_ConfigureSquelchAndOutputPower(VFO_Info_t *pInfo) { } currentPower--; - EEPROM_ReadBuffer(0x1ED0 + (Band * 16) + (Op * 3), Txp, 3); + EEPROM_ReadBuffer(0x1ED0 + (Band * 20) + (Op * 3), Txp, 3); #ifdef ENABLE_FEAT_F4HWN // make low and mid even lower @@ -620,12 +618,6 @@ void RADIO_SelectVfos(void) { void RADIO_SetupRegisters(bool switchToForeground) { BK4819_FilterBandwidth_t Bandwidth = gRxVfo->CHANNEL_BANDWIDTH; -#ifdef ENABLE_FEAT_F4HWN_NARROWER - if (Bandwidth == BK4819_FILTER_BW_NARROW && gSetting_set_nfm == 1) { - Bandwidth = BK4819_FILTER_BW_NARROWER; - } -#endif - AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -746,10 +738,9 @@ void RADIO_SetupRegisters(bool switchToForeground) { break; } - if (gRxVfo->SCRAMBLING_TYPE > 0) - BK4819_EnableScramble(gRxVfo->SCRAMBLING_TYPE - 1); - else - BK4819_DisableScramble(); + BK4819_SetScramble(0); + SYSTEM_DelayMs(10); + BK4819_SetScramble(gRxVfo->SCRAMBLING_TYPE); } } #ifdef ENABLE_NOAA @@ -846,12 +837,6 @@ void RADIO_ConfigureNOAA(void) void RADIO_SetTxParameters(void) { BK4819_FilterBandwidth_t Bandwidth = gCurrentVfo->CHANNEL_BANDWIDTH; -#ifdef ENABLE_FEAT_F4HWN_NARROWER - if (Bandwidth == BK4819_FILTER_BW_NARROW && gSetting_set_nfm == 1) { - Bandwidth = BK4819_FILTER_BW_NARROWER; - } -#endif - AUDIO_AudioPathOff(); gEnableSpeaker = false; @@ -1085,15 +1070,6 @@ void RADIO_PrepareTX(void) { gTxTimerCountdown_500ms = ((gEeprom.TX_TIMEOUT_TIMER + 1) * 5) * 2; - /* - if (gEeprom.TX_TIMEOUT_TIMER == 0) - gTxTimerCountdown_500ms = 60; // 30 sec - 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 - */ - #ifdef ENABLE_FEAT_F4HWN gTxTimerCountdownAlert_500ms = gTxTimerCountdown_500ms; #endif diff --git a/radio.h b/radio.h index 2678859..7fcf489 100644 --- a/radio.h +++ b/radio.h @@ -24,7 +24,7 @@ #include "frequencies.h" enum { - RADIO_CHANNEL_UP = 0x01u, + RADIO_CHANNEL_UP = 0x01u, RADIO_CHANNEL_DOWN = 0xFFu, }; @@ -42,8 +42,7 @@ enum PTT_ID_t { }; typedef enum PTT_ID_t PTT_ID_t; -enum VfoState_t -{ +enum VfoState_t { VFO_STATE_NORMAL = 0, VFO_STATE_BUSY, VFO_STATE_BAT_LOW, @@ -70,18 +69,16 @@ typedef enum { extern const char gModulationStr[MODULATION_UKNOWN][4]; -typedef struct -{ - uint32_t Frequency; +typedef struct { + uint32_t Frequency; DCS_CodeType_t CodeType; - uint8_t Code; - uint8_t Padding[2]; + uint8_t Code; + uint8_t Padding[2]; } FREQ_Config_t; -typedef struct VFO_Info_t -{ - FREQ_Config_t freq_config_RX; - FREQ_Config_t freq_config_TX; +typedef struct VFO_Info_t { + FREQ_Config_t freq_config_RX; + FREQ_Config_t freq_config_TX; // this is for a purpose of the FrequencyReverse function // it points to freq_config_RX normally and to freq_config_TX if reverse function is active @@ -92,81 +89,97 @@ typedef struct VFO_Info_t // it points to freq_config_TX normally and to freq_config_RX if reverse function is active FREQ_Config_t *pTX; - uint32_t TX_OFFSET_FREQUENCY; - uint16_t StepFrequency; + uint32_t TX_OFFSET_FREQUENCY; + uint16_t StepFrequency; - uint8_t CHANNEL_SAVE; + uint8_t CHANNEL_SAVE; - uint8_t TX_OFFSET_FREQUENCY_DIRECTION; + uint8_t TX_OFFSET_FREQUENCY_DIRECTION; - uint8_t SquelchOpenRSSIThresh; - uint8_t SquelchOpenNoiseThresh; - uint8_t SquelchCloseGlitchThresh; - uint8_t SquelchCloseRSSIThresh; - uint8_t SquelchCloseNoiseThresh; - uint8_t SquelchOpenGlitchThresh; + uint8_t SquelchOpenRSSIThresh; + uint8_t SquelchOpenNoiseThresh; + uint8_t SquelchCloseGlitchThresh; + uint8_t SquelchCloseRSSIThresh; + uint8_t SquelchCloseNoiseThresh; + uint8_t SquelchOpenGlitchThresh; STEP_Setting_t STEP_SETTING; - uint8_t OUTPUT_POWER; - uint8_t TXP_CalculatedSetting; - bool FrequencyReverse; + uint8_t OUTPUT_POWER; + uint8_t TXP_CalculatedSetting; + bool FrequencyReverse; - uint8_t SCRAMBLING_TYPE; - uint8_t CHANNEL_BANDWIDTH; + uint16_t SCRAMBLING_TYPE; + uint8_t CHANNEL_BANDWIDTH; - uint8_t SCANLIST1_PARTICIPATION; - uint8_t SCANLIST2_PARTICIPATION; - uint8_t SCANLIST3_PARTICIPATION; + uint8_t SCANLIST1_PARTICIPATION; + uint8_t SCANLIST2_PARTICIPATION; + uint8_t SCANLIST3_PARTICIPATION; - uint8_t Band; + uint8_t Band; #ifdef ENABLE_DTMF_CALLING uint8_t DTMF_DECODING_ENABLE; #endif - PTT_ID_t DTMF_PTT_ID_TX_MODE; + PTT_ID_t DTMF_PTT_ID_TX_MODE; - uint8_t BUSY_CHANNEL_LOCK; + uint8_t BUSY_CHANNEL_LOCK; - ModulationMode_t Modulation; + ModulationMode_t Modulation; - uint8_t Compander; + uint8_t Compander; - char Name[16]; + char Name[16]; } VFO_Info_t; // Settings of the main VFO that is selected by the user // The pointer follows gEeprom.TX_VFO index -extern VFO_Info_t *gTxVfo; +extern VFO_Info_t *gTxVfo; // Settings of the actual VFO that is now used for RX, // It is being alternated by dual watch, and flipped by crossband // The pointer follows gEeprom.RX_VFO -extern VFO_Info_t *gRxVfo; +extern VFO_Info_t *gRxVfo; // Equal to gTxVfo unless dual watch changes it on incomming transmition (this can only happen when XB off and DW on) -extern VFO_Info_t *gCurrentVfo; +extern VFO_Info_t *gCurrentVfo; extern DCS_CodeType_t gCurrentCodeType; -extern VfoState_t VfoState[2]; +extern VfoState_t VfoState[2]; + +bool RADIO_CheckValidChannel(uint16_t channel, bool checkScanList, uint8_t scanList); + +uint8_t RADIO_FindNextChannel(uint8_t ChNum, int8_t Direction, bool bCheckScanList, uint8_t RadioNum); + +void RADIO_InitInfo(VFO_Info_t *pInfo, const uint8_t ChannelSave, const uint32_t Frequency); + +void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure); + +void RADIO_ConfigureSquelchAndOutputPower(VFO_Info_t *pInfo); + +void RADIO_ApplyOffset(VFO_Info_t *pInfo); + +void RADIO_SelectVfos(void); + +void RADIO_SetupRegisters(bool switchToForeground); -bool RADIO_CheckValidChannel(uint16_t channel, bool checkScanList, uint8_t scanList); -uint8_t RADIO_FindNextChannel(uint8_t ChNum, int8_t Direction, bool bCheckScanList, uint8_t RadioNum); -void RADIO_InitInfo(VFO_Info_t *pInfo, const uint8_t ChannelSave, const uint32_t Frequency); -void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure); -void RADIO_ConfigureSquelchAndOutputPower(VFO_Info_t *pInfo); -void RADIO_ApplyOffset(VFO_Info_t *pInfo); -void RADIO_SelectVfos(void); -void RADIO_SetupRegisters(bool switchToForeground); #ifdef ENABLE_NOAA - void RADIO_ConfigureNOAA(void); +void RADIO_ConfigureNOAA(void); #endif -void RADIO_SetTxParameters(void); -void RADIO_SetupAGC(bool listeningAM, bool disable); -void RADIO_SetModulation(ModulationMode_t modulation); -void RADIO_SetVfoState(VfoState_t State); -void RADIO_PrepareTX(void); -void RADIO_SendCssTail(void); -void RADIO_PrepareCssTX(void); -void RADIO_SendEndOfTransmission(void); + +void RADIO_SetTxParameters(void); + +void RADIO_SetupAGC(bool listeningAM, bool disable); + +void RADIO_SetModulation(ModulationMode_t modulation); + +void RADIO_SetVfoState(VfoState_t State); + +void RADIO_PrepareTX(void); + +void RADIO_SendCssTail(void); + +void RADIO_PrepareCssTX(void); + +void RADIO_SendEndOfTransmission(void); #endif diff --git a/scheduler.c b/scheduler.c index bc4ee5c..475baf4 100644 --- a/scheduler.c +++ b/scheduler.c @@ -57,13 +57,14 @@ void SystickHandler(void) gNextTimeslice_500ms = true; #ifdef ENABLE_FEAT_F4HWN - DECREMENT_AND_TRIGGER(gTxTimerCountdownAlert_500ms - ALERT_TOT * 2, gTxTimeoutReachedAlert); #ifdef ENABLE_FEAT_F4HWN_RX_TX_TIMER DECREMENT(gRxTimerCountdown_500ms); #endif #endif - - DECREMENT_AND_TRIGGER(gTxTimerCountdown_500ms, gTxTimeoutReached); + + if (gEeprom.TX_TIMEOUT_TIMER != 0) { + DECREMENT_AND_TRIGGER(gTxTimerCountdown_500ms, gTxTimeoutReached); + } DECREMENT(gSerialConfigCountDown_500ms); } diff --git a/settings.c b/settings.c index c43056c..d064e29 100644 --- a/settings.c +++ b/settings.c @@ -53,12 +53,9 @@ void SETTINGS_InitEEPROM(void) { gEeprom.NOAA_AUTO_SCAN = (Data[3] < 2) ? Data[3] : false; #endif #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - gEeprom.KEY_LOCK = (Data[4] & 0x01) != 0; gEeprom.MENU_LOCK = (Data[4] & 0x02) != 0; - gEeprom.SET_KEY = ((Data[4] >> 2) & 0x0F) > 4 ? 0 : (Data[4] >> 2) & 0x0F; -#else - gEeprom.KEY_LOCK = (Data[4] < 2) ? Data[4] : false; #endif + gEeprom.KEY_LOCK = (Data[4] < 2) != 0 && Data[4]; #ifdef ENABLE_VOX gEeprom.VOX_SWITCH = (Data[5] < 2) ? Data[5] : false; gEeprom.VOX_LEVEL = (Data[6] < 10) ? Data[6] : 1; @@ -77,12 +74,8 @@ void SETTINGS_InitEEPROM(void) { gEeprom.BATTERY_SAVE = (Data[3] < 6) ? Data[3] : 4; gEeprom.DUAL_WATCH = (Data[4] < 3) ? Data[4] : DUAL_WATCH_CHAN_A; gEeprom.BACKLIGHT_TIME = (Data[5] < 62) ? Data[5] : 12; -#ifdef ENABLE_FEAT_F4HWN_NARROWER - gEeprom.TAIL_TONE_ELIMINATION = Data[6] & 0x01; - gSetting_set_nfm = (Data[6] >> 1) & 0x01; -#else - gEeprom.TAIL_TONE_ELIMINATION = (Data[6] < 2) ? Data[6] : false; -#endif + + gEeprom.TAIL_TONE_ELIMINATION = (Data[6] < 2) != 0 && Data[6]; #ifdef ENABLE_FEAT_F4HWN_RESUME_STATE gEeprom.VFO_OPEN = Data[7] & 0x01; @@ -274,10 +267,11 @@ void SETTINGS_InitEEPROM(void) { gEeprom.FSKSRCAddress |= Data[1] << 8; gEeprom.FSKSRCAddress |= Data[2] << 16; gEeprom.FSKSRCAddress |= Data[3] << 24; +#ifdef ENABLE_FMRADIO gEeprom.BK1080_AGC_ENABLED = Data[4] & 0x01; gEeprom.BK1080_BLEND_CONFIG = (Data[4] >> 1) & 0x03; gEeprom.BK1080_DEEMPHASIS_CONFIG = (Data[4] >> 3) & 0x03; - +#endif // 0F40..0F47 EEPROM_ReadBuffer(0x0F40, Data, 8); gSetting_F_LOCK = (Data[0] < F_LOCK_LEN) ? Data[0] : F_LOCK_DEF; @@ -331,9 +325,6 @@ void SETTINGS_InitEEPROM(void) { EEPROM_ReadBuffer(0x1FF0, Data, 8); gSetting_set_ptt = (((Data[7] & 0x0F)) < 2) ? ((Data[7] & 0x0F)) : 0; - gSetting_set_tot = (((Data[6] & 0xF0) >> 4) < 4) ? ((Data[6] & 0xF0) >> 4) : 0; - gSetting_set_eot = (((Data[6] & 0x0F)) < 4) ? ((Data[6] & 0x0F)) : 0; - /* int tmp = ((Data[5] & 0xF0) >> 4); @@ -427,7 +418,7 @@ uint32_t SETTINGS_FetchChannelFrequency(const int channel) { uint32_t offset; } __attribute__((packed)) info; - EEPROM_ReadBuffer(channel * 16, &info, sizeof(info)); + EEPROM_ReadBuffer(channel * 20, &info, sizeof(info)); return info.frequency; } @@ -444,7 +435,7 @@ void SETTINGS_FetchChannelName(char *s, const int channel) { if (!RADIO_CheckValidChannel(channel, false, 0)) return; - EEPROM_ReadBuffer(0x0F50 + (channel * 16), s, 10); + EEPROM_ReadBuffer(0x0F50 + (channel * 20), s, 10); int i; for (i = 0; i < 10; i++) @@ -570,12 +561,7 @@ void SETTINGS_SaveSettings(void) { State[3] = false; #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - State[4] = (gEeprom.KEY_LOCK ? 0x01 : 0) | (gEeprom.MENU_LOCK ? 0x02 :0) | ((gEeprom.SET_KEY & 0x0F) << 2); -#else - State[4] = gEeprom.KEY_LOCK; -#endif - + State[4] = (gEeprom.KEY_LOCK ? 0x01 : 0); #ifdef ENABLE_VOX State[5] = gEeprom.VOX_SWITCH; State[6] = gEeprom.VOX_LEVEL; @@ -606,11 +592,7 @@ void SETTINGS_SaveSettings(void) { State[5] = gEeprom.BACKLIGHT_TIME; #endif -#ifdef ENABLE_FEAT_F4HWN_NARROWER - State[6] = (gEeprom.TAIL_TONE_ELIMINATION & 0x01) | ((gSetting_set_nfm & 0x03) << 1); -#else - State[6] = gEeprom.TAIL_TONE_ELIMINATION; -#endif + State[6] = gEeprom.TAIL_TONE_ELIMINATION & 0x01; #ifdef ENABLE_FEAT_F4HWN_RESUME_STATE State[7] = (gEeprom.VFO_OPEN & 0x01) | ((gEeprom.CURRENT_STATE & 0x07) << 1) | @@ -703,9 +685,11 @@ void SETTINGS_SaveSettings(void) { State[1] = (gEeprom.FSKSRCAddress >> 8) & 0xFF; State[2] = (gEeprom.FSKSRCAddress >> 16) & 0xFF; State[3] = (gEeprom.FSKSRCAddress >> 24) & 0xFF; +#ifdef ENABLE_FMRADIO State[4] = ((gEeprom.BK1080_AGC_ENABLED & 0x01) | ((gEeprom.BK1080_BLEND_CONFIG & 0x03) << 1) | ((gEeprom.BK1080_DEEMPHASIS_CONFIG & 0x03) << 3)); +#endif EEPROM_WriteBuffer(0x0F20, State); @@ -763,7 +747,6 @@ void SETTINGS_SaveSettings(void) { tmp = (gSetting_set_inv << 0); State[5] = (tmp << 4); - State[6] = ((gSetting_set_tot << 4) | (gSetting_set_eot & 0x0F)); State[7] = gSetting_set_ptt & 0x0F; EEPROM_WriteBuffer(0x1FF0, State); @@ -780,10 +763,10 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, return; #endif - uint16_t OffsetVFO = Channel * 16; + uint16_t OffsetVFO = Channel * 24; if (IS_FREQ_CHANNEL(Channel)) { // it's a VFO, not a channel - OffsetVFO = (VFO == 0) ? 0x0C80 : 0x0C90; + OffsetVFO = (VFO == 0) ? 0x0C80 : 0x0C98; OffsetVFO += (Channel - FREQ_CHANNEL_FIRST) * 32; } @@ -791,6 +774,7 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, union { uint8_t _8[8]; uint32_t _32[2]; + uint16_t _16[4]; } State; State._32[0] = pVFO->freq_config_RX.Frequency; @@ -802,8 +786,8 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, State._8[2] = (pVFO->freq_config_TX.CodeType << 4) | pVFO->freq_config_RX.CodeType; State._8[3] = (pVFO->Modulation << 4) | pVFO->TX_OFFSET_FREQUENCY_DIRECTION; State._8[4] = 0 - | (pVFO->BUSY_CHANNEL_LOCK << 5) - | (pVFO->OUTPUT_POWER << 2) + | (pVFO->BUSY_CHANNEL_LOCK << 6) + | (pVFO->OUTPUT_POWER << 3) | (pVFO->CHANNEL_BANDWIDTH << 1) | (pVFO->FrequencyReverse << 0); State._8[5] = ((pVFO->DTMF_PTT_ID_TX_MODE & 7u) << 1) @@ -813,8 +797,10 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, ; State._8[6] = pVFO->STEP_SETTING; - State._8[7] = pVFO->SCRAMBLING_TYPE; - EEPROM_WriteBuffer(OffsetVFO + 8, State._8); + State._16[0] = pVFO->SCRAMBLING_TYPE; + + EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32), State._8); + EEPROM_WriteBuffer(OffsetVFO + sizeof (State._32) + sizeof (State._8), State._16); SETTINGS_UpdateChannel(Channel, pVFO, true, true, true); @@ -842,7 +828,7 @@ void SETTINGS_SaveBatteryCalibration(const uint16_t *batteryCalibration) { } void SETTINGS_SaveChannelName(uint8_t channel, const char *name) { - uint16_t offset = channel * 16; + uint16_t offset = channel * 24; uint8_t buf[16] = {0}; memcpy(buf, name, MIN(strlen(name), 10u)); EEPROM_WriteBuffer(0x0F50 + offset, buf); @@ -950,10 +936,7 @@ void SETTINGS_WriteBuildOptions(void) { #ifdef ENABLE_SPECTRUM | (1 << 5) #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - | (1 << 6) -#endif - ; + | (1 << 6); EEPROM_WriteBuffer(0x1FF0, State); } @@ -986,7 +969,7 @@ void SETTINGS_WriteCurrentVol(void) { void SETTINGS_ResetTxLock(void) { uint8_t State[8]; for (uint8_t channel = 0; channel < 200; channel++) { - uint16_t OffsetVFO = channel * 16; + uint16_t OffsetVFO = channel * 24; EEPROM_ReadBuffer(OffsetVFO + 8, State, sizeof(State)); State[4] |= (1 << 6); EEPROM_WriteBuffer(OffsetVFO + 8, State); diff --git a/settings.h b/settings.h index 4f4f49b..5fed294 100644 --- a/settings.h +++ b/settings.h @@ -98,8 +98,7 @@ enum { }; enum { - OUTPUT_POWER_USER = 0, - OUTPUT_POWER_LOW1, + OUTPUT_POWER_LOW1 = 0, OUTPUT_POWER_LOW2, OUTPUT_POWER_LOW3, OUTPUT_POWER_LOW4, @@ -130,11 +129,9 @@ enum ACTION_OPT_t { ACTION_OPT_WN, ACTION_OPT_BACKLIGHT, ACTION_OPT_MUTE, -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS ACTION_OPT_POWER_HIGH, ACTION_OPT_REMOVE_OFFSET, #endif -#endif #ifdef ENABLE_REGA ACTION_OPT_REGA_ALARM, ACTION_OPT_REGA_TEST, @@ -224,10 +221,7 @@ typedef struct { #ifdef ENABLE_FEAT_F4HWN bool KEY_LOCK_PTT; #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS bool MENU_LOCK; - uint8_t SET_KEY; -#endif bool VOX_SWITCH; uint8_t VOX_LEVEL; #ifdef ENABLE_VOICE diff --git a/ui/main.c b/ui/main.c index 59162ab..e567b5d 100644 --- a/ui/main.c +++ b/ui/main.c @@ -45,6 +45,7 @@ #ifdef ENABLE_FEAT_F4HWN #include "driver/system.h" +#include "app/scanner.h" #endif @@ -418,44 +419,6 @@ void UI_MAIN_TimeSlice500ms(void) { if (FUNCTION_IsRx()) { DisplayRSSIBar(true); } -#ifdef ENABLE_FEAT_F4HWN // Blink Green Led for white... - else if (gSetting_set_eot > 0 && RxBlinkLed == 2) { - if (RxBlinkLedCounter <= 8) { - if (RxBlinkLedCounter % 2 == 0) { - if (gSetting_set_eot > 1) { - BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, false); - } - } else { - if (gSetting_set_eot > 1) { - BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2_GREEN, true); - } - - if (gSetting_set_eot == 1 || gSetting_set_eot == 3) { - switch (RxBlinkLedCounter) { - case 1: - AUDIO_PlayBeep(BEEP_400HZ_30MS); - break; - - case 3: - AUDIO_PlayBeep(BEEP_400HZ_30MS); - break; - - case 5: - AUDIO_PlayBeep(BEEP_500HZ_30MS); - break; - - case 7: - AUDIO_PlayBeep(BEEP_600HZ_30MS); - break; - } - } - } - RxBlinkLedCounter += 1; - } else { - RxBlinkLed = 0; - } - } -#endif } } @@ -1010,7 +973,6 @@ void UI_DisplayMain(void) { #if ENABLE_FEAT_F4HWN const FREQ_Config_t *pConfig = (mode == VFO_MODE_TX) ? vfoInfo->pTX : vfoInfo->pRX; int8_t shift = 0; - switch ((int) pConfig->CodeType) { case 1: sprintf(String, "%u.%u", CTCSS_Options[pConfig->Code] / 10, CTCSS_Options[pConfig->Code] % 10); @@ -1029,6 +991,8 @@ void UI_DisplayMain(void) { shift = -10; } + + UI_PrintStringSmallNormal(s, 50, 0, line + 2); UI_PrintStringSmallNormal(t, 2, 0, line + 2); @@ -1047,25 +1011,20 @@ void UI_DisplayMain(void) { #endif if (state == VFO_STATE_NORMAL || state == VFO_STATE_ALARM) { // show the TX power - uint8_t currentPower = vfoInfo->OUTPUT_POWER % 8; const char pwr_short[][3] = {"L1", "L2", "L3", "L4", "L5", "ME", - "HI"}; - UI_PrintStringSmallNormal(pwr_short[currentPower], LCD_WIDTH + 25, 0, line + 1); + "HI", "UN"}; + UI_PrintStringSmallNormal(pwr_short[vfoInfo->OUTPUT_POWER], LCD_WIDTH + 25, 0, line + 1); } if (vfoInfo->freq_config_RX.Frequency != vfoInfo->freq_config_TX.Frequency) { // show the TX offset symbol int i = vfoInfo->TX_OFFSET_FREQUENCY_DIRECTION % 3; -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS const char dir_list[][2] = {"", "+", "-", "D"}; if(gTxVfo->TX_OFFSET_FREQUENCY_DIRECTION != 0 && gTxVfo->pTX == &gTxVfo->freq_config_RX && !vfoInfo->FrequencyReverse) { i = 3; } -#else - const char dir_list[][2] = {"", "+", "-"}; -#endif #if ENABLE_FEAT_F4HWN UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 60, 0, line + 1); @@ -1078,34 +1037,18 @@ void UI_DisplayMain(void) { if (vfoInfo->FrequencyReverse) #if ENABLE_FEAT_F4HWN { - UI_PrintStringSmallNormal("R", LCD_WIDTH + 68, 0, line + 1); + UI_PrintStringSmallNormal("R", LCD_WIDTH + 110, 0, line + 1); } #else - UI_PrintStringSmallNormal("R", LCD_WIDTH + 62, 0, line + 1); + UI_PrintStringSmallNormal("R", LCD_WIDTH + 110, 0, line + 1); #endif #if ENABLE_FEAT_F4HWN -#ifdef ENABLE_FEAT_F4HWN_NARROWER - bool narrower = 0; - if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW && gSetting_set_nfm == 1) { - narrower = 1; - } const char *bandWidthNames[] = {"WID", "NAR", "NR+"}; - UI_PrintStringSmallNormal(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH + narrower], LCD_WIDTH + 30, 0, + UI_PrintStringSmallNormal(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH], LCD_WIDTH + 30, 0, line); -#else - if (gSetting_set_gui) - { - const char *bandWidthNames[] = {"W", "N"}; - UI_PrintStringSmallNormal(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH], LCD_WIDTH + 80, 0, line + 1); - } - else - { - const char *bandWidthNames[] = {"WIDE", "NAR"}; - GUI_DisplaySmallest(bandWidthNames[vfoInfo->CHANNEL_BANDWIDTH], 91, line == 0 ? 17 : 49, false, true); - } -#endif + #else if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW) UI_PrintStringSmallNormal("N", LCD_WIDTH + 70, 0, line + 1); @@ -1119,8 +1062,8 @@ void UI_DisplayMain(void) { // show the audio scramble symbol if (vfoInfo->SCRAMBLING_TYPE > 0) { - sprintf(String, "S%d", vfoInfo->SCRAMBLING_TYPE + 25); - UI_PrintStringSmallNormal(String, 105, 0, line + 2); + sprintf(String, "S%d", inverse_scale_freq(vfoInfo->SCRAMBLING_TYPE)); + UI_PrintStringSmallNormal(String, 90, 0, line + 2); } #ifdef ENABLE_FEAT_F4HWN diff --git a/ui/menu.c b/ui/menu.c index deaf0fc..6e5107a 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -48,7 +48,7 @@ const t_menu_item MenuList[] = {"TCTCS", MENU_T_CTCS}, // was "T_CTCS" {"TxODir", MENU_SFT_D}, // was "SFT_D" {"TxOffs", MENU_OFFSET}, // was "OFFSET" - {"W/N", MENU_W_N}, + {"WID", MENU_W_N}, {"SCR", MENU_SCR}, // was "SCR" {"BusyL", MENU_BCL}, // was "BCL" {"COMP", MENU_COMPAND}, @@ -79,7 +79,7 @@ const t_menu_item MenuList[] = {"ML", MENU_MLONG}, {"KeyLck", MENU_AUTOLK}, // was "AUTOLk" - {"TxTOut", MENU_TOT}, // was "TOT" + {"TXTime", MENU_TOT}, {"BatSav", MENU_SAVE}, // was "SAVE" {"BatTxt", MENU_BAT_TXT}, {"Mic", MENU_MIC}, @@ -131,22 +131,14 @@ const t_menu_item MenuList[] = {"Sql", MENU_SQL}, #ifdef ENABLE_FEAT_F4HWN {"SPTT", MENU_SET_PTT}, - {"STOT", MENU_SET_TOT}, - {"SEOT", MENU_SET_EOT}, {"SInv", MENU_SET_INV}, {"STmr", MENU_SET_TMR}, #ifdef ENABLE_FEAT_F4HWN_SLEEP {"SOff", MENU_SET_OFF}, #endif -#ifdef ENABLE_FEAT_F4HWN_NARROWER - {"SNFM", MENU_SET_NFM}, -#endif #ifdef ENABLE_FEAT_F4HWN_VOL {"SVol", MENU_SET_VOL}, #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - {"SKey", MENU_SET_KEY }, -#endif #ifdef ENABLE_NOAA {"SNWR", MENU_NOAA_S }, #endif @@ -182,10 +174,11 @@ const char gSubMenu_SFT_D[][4] = "-" }; -const char gSubMenu_W_N[][7] = +const char gSubMenu_W_N[][5] = { "WIDE", - "NARR" + "NARR", + "NAR+" }; const char gSubMenu_OFF_ON[][4] = @@ -203,8 +196,8 @@ const char *const gSubMenu_RXMode[] = { "MAIN", // TX and RX on main only "RESP", // Watch both and respond - "XBAND ONLY", // TX on main, RX on secondary - "DUALMON" // always TX on main, but RX on both + "XBAND", // TX on main, RX on secondary + "DMON" // always TX on main, but RX on both }; #ifdef ENABLE_VOICE @@ -219,7 +212,7 @@ const char gSubMenu_VOICE[][4] = const char *const gSubMenu_MDF[] = { "FREQ", - "CHNUMB", + "CHNUM", "NAME", "NAME\n+\nFREQ" }; @@ -303,14 +296,14 @@ const char gSubMenu_RX_TX[][6] = "TX/RX" }; -const char gSubMenu_BAT_TXT[][8] = +const char gSubMenu_BAT_TXT[][5] = { "NONE", "VLT", "PRC" }; -const char gSubMenu_BATTYP[][9] = +const char gSubMenu_BATTYP[][3] = { "16", "22", @@ -319,38 +312,11 @@ const char gSubMenu_BATTYP[][9] = #ifdef ENABLE_FEAT_F4HWN -const char gSubMenu_SET_PTT[][8] = +const char gSubMenu_SET_PTT[][4] = { - "HOLD", - "TAP" + "HOL", + "TOG", }; - -const char gSubMenu_SET_TOT[][7] = // Use by SET_EOT too - { - "OFF", - "SND", - "VIS", - "ALL" - }; - -#ifdef ENABLE_FEAT_F4HWN_NARROWER -const char gSubMenu_SET_NFM[][9] = - { - "NRW", - "NRWER" - }; -#endif - -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS -const char gSubMenu_SET_KEY[][9] = -{ - "KEY_MENU", - "KEY_UP", - "KEY_DOWN", - "KEY_EXIT", - "KEY_STAR" -}; -#endif #endif const t_sidefunction gSubMenu_SIDEFUNCTIONS[] = @@ -393,10 +359,8 @@ const t_sidefunction gSubMenu_SIDEFUNCTIONS[] = #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) {"MUTE", ACTION_OPT_MUTE}, #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS {"POWER\nHIGH", ACTION_OPT_POWER_HIGH}, {"REMOVE\nOFFSET", ACTION_OPT_REMOVE_OFFSET}, -#endif #endif {"SSTV", ACTION_REQ_SSTV}, }; @@ -543,12 +507,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); BACKLIGHT_TurnOn(); -#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) - uint8_t gaugeLine = 0; - uint8_t gaugeMin = 0; - uint8_t gaugeMax = 0; -#endif - switch (UI_MENU_GetCurrentMenuId()) { case MENU_SQL: sprintf(String, "%ld", gSubMenuSelection); @@ -623,12 +581,11 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); case MENU_SCR: if (gSubMenuSelection > 0) { - sprintf(String, "%ld00", gSubMenuSelection + 25); - BK4819_EnableScramble(gSubMenuSelection - 1); + sprintf(String, "%huHz\n%ld", inverse_scale_freq(gSubMenuSelection), gSubMenuSelection); } else { strcpy(String, "OFF"); - BK4819_DisableScramble(); } + BK4819_SetScramble(gSubMenuSelection); break; case MENU_VOX: @@ -644,12 +601,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); strcpy(String, gSubMenu_OFF_ON[0]); } else if (gSubMenuSelection < 61) { sprintf(String, "%02ldm:%02lds", (((gSubMenuSelection) * 5) / 60), (((gSubMenuSelection) * 5) % 60)); -#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) - //ST7565_Gauge(4, 1, 60, gSubMenuSelection); - gaugeLine = 4; - gaugeMin = 1; - gaugeMax = 60; -#endif } else { strcpy(String, "ON"); } @@ -673,17 +624,19 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); strcpy(String, gModulationStr[gSubMenuSelection]); break; + case MENU_TOT: + if (gSubMenuSelection == 0) { + strcpy(String, "OFF"); + } else { + sprintf(String, "%02ldm:%02lds", (((gSubMenuSelection + 1) * 5) / 60), (((gSubMenuSelection + 1) * 5) % 60)); + } + break; + case MENU_AUTOLK: if (gSubMenuSelection == 0) strcpy(String, gSubMenu_OFF_ON[0]); else { sprintf(String, "%02ldm:%02lds", ((gSubMenuSelection * 15) / 60), ((gSubMenuSelection * 15) % 60)); -#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) - //ST7565_Gauge(4, 1, 40, gSubMenuSelection); - gaugeLine = 4; - gaugeMin = 1; - gaugeMax = 40; -#endif } break; @@ -783,16 +736,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); strcpy(String, gSubMenu_RXMode[gSubMenuSelection]); break; - case MENU_TOT: - sprintf(String, "%02ldm:%02lds", (((gSubMenuSelection + 1) * 5) / 60), (((gSubMenuSelection + 1) * 5) % 60)); -#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) - //ST7565_Gauge(4, 5, 179, gSubMenuSelection); - gaugeLine = 4; - gaugeMin = 5; - gaugeMax = 179; -#endif - break; - #ifdef ENABLE_VOICE case MENU_VOICE: strcpy(String, gSubMenu_VOICE[gSubMenuSelection]); @@ -807,18 +750,12 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); ((gSubMenuSelection * 250) % 1000)); #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) //ST7565_Gauge(5, 1, 80, gSubMenuSelection); - gaugeLine = 5; - gaugeMin = 1; - gaugeMax = 80; #endif } else { sprintf(String, "TIMEOUT\n%02ldm:%02lds", (((gSubMenuSelection - 80) * 5) / 60), (((gSubMenuSelection - 80) * 5) % 60)); #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) //ST7565_Gauge(5, 80, 104, gSubMenuSelection); - gaugeLine = 5; - gaugeMin = 80; - gaugeMax = 104; #endif } break; @@ -946,12 +883,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); strcpy(String, gSubMenu_OFF_ON[0]); } else if (gSubMenuSelection < 121) { sprintf(String, "%ldh:%02ldm", (gSubMenuSelection / 60), (gSubMenuSelection % 60)); -#if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) - //ST7565_Gauge(4, 1, 120, gSubMenuSelection); - gaugeLine = 4; - gaugeMin = 1; - gaugeMax = 120; -#endif } break; #endif @@ -961,11 +892,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); strcpy(String, gSubMenu_SET_PTT[gSubMenuSelection]); break; - case MENU_SET_TOT: - case MENU_SET_EOT: - strcpy(String, gSubMenu_SET_TOT[gSubMenuSelection]); // Same as SET_TOT - break; - case MENU_SET_INV: #ifdef ENABLE_FEAT_F4HWN_INV strcpy(String, gSubMenu_OFF_ON[gSubMenuSelection]); @@ -975,12 +901,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); #endif break; -#ifdef ENABLE_FEAT_F4HWN_NARROWER - case MENU_SET_NFM: - strcpy(String, gSubMenu_SET_NFM[gSubMenuSelection]); - break; -#endif - #ifdef ENABLE_FEAT_F4HWN_VOL case MENU_SET_VOL: if (gSubMenuSelection == 0) { @@ -988,10 +908,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); } else if (gSubMenuSelection < 64) { sprintf(String, "%02lu", gSubMenuSelection); #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) - //ST7565_Gauge(4, 1, 63, gSubMenuSelection); - gaugeLine = 4; - gaugeMin = 1; - gaugeMax = 63; #endif } gEeprom.VOLUME_GAIN = gSubMenuSelection; @@ -1002,12 +918,6 @@ UI_PrintStringSmallNormal(String, 2, 0, 6); (gEeprom.DAC_GAIN << 0)); // AF DAC Gain (after Gain-1 and Gain-2) break; #endif - -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - case MENU_SET_KEY: - strcpy(String, gSubMenu_SET_KEY[gSubMenuSelection]); - break; -#endif #endif } diff --git a/ui/menu.h b/ui/menu.h index ac943bb..c65fa0e 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -115,21 +115,11 @@ enum { #endif #ifdef ENABLE_FEAT_F4HWN MENU_SET_PTT, - MENU_SET_TOT, - MENU_SET_EOT, - MENU_SET_CTR, MENU_SET_INV, - MENU_SET_LCK, MENU_SET_TMR, -#ifdef ENABLE_FEAT_F4HWN_NARROWER - MENU_SET_NFM, -#endif #ifdef ENABLE_FEAT_F4HWN_VOL MENU_SET_VOL, #endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS - MENU_SET_KEY, -#endif #ifdef ENABLE_NOAA MENU_NOAA_S, #endif @@ -147,10 +137,9 @@ extern const t_menu_item MenuList[]; extern const char gSubMenu_TXP[7][5]; extern const char gSubMenu_SFT_D[3][4]; -extern const char gSubMenu_W_N[2][7]; +extern const char gSubMenu_W_N[3][5]; extern const char gSubMenu_OFF_ON[2][4]; extern const char gSubMenu_NA[4]; -extern const char gSubMenu_TOT[11][7]; extern const char *const gSubMenu_RXMode[4]; #ifdef ENABLE_VOICE @@ -165,14 +154,7 @@ extern const char gSubMenu_D_RSP[4][11]; #endif #ifdef ENABLE_FEAT_F4HWN -extern const char gSubMenu_SET_PTT[2][8]; -extern const char gSubMenu_SET_TOT[4][7]; -#ifdef ENABLE_FEAT_F4HWN_NARROWER -extern const char gSubMenu_SET_NFM[2][9]; -#endif -#ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS -extern const char gSubMenu_SET_KEY[][9]; -#endif +extern const char gSubMenu_SET_PTT[2][4]; #endif extern const char *const gSubMenu_PTT_ID[5]; @@ -181,8 +163,8 @@ extern const char gSubMenu_ROGER[3][6]; extern const char gSubMenu_RESET[2][4]; extern const char *const gSubMenu_F_LOCK[F_LOCK_LEN]; extern const char gSubMenu_RX_TX[4][6]; -extern const char gSubMenu_BAT_TXT[3][8]; -extern const char gSubMenu_BATTYP[3][9]; +extern const char gSubMenu_BAT_TXT[3][5]; +extern const char gSubMenu_BATTYP[3][3]; typedef struct { char *name;