From c2090676d8e3eeb65df70f1cb77a1f99fb58a1a7 Mon Sep 17 00:00:00 2001 From: Krzysiek Egzmont Date: Sat, 21 Oct 2023 00:12:55 +0200 Subject: [PATCH] Side-key functions added: key lock, switch VFOs --- Makefile | 1 + app/action.c | 23 +++++++++++++++-------- app/common.c | 36 ++++++++++++++++++++++++++++++++++++ app/common.h | 12 ++++++++++++ app/generic.c | 16 ++++------------ app/main.c | 16 ++-------------- settings.h | 2 ++ ui/menu.c | 2 ++ 8 files changed, 74 insertions(+), 34 deletions(-) create mode 100644 app/common.c create mode 100644 app/common.h diff --git a/Makefile b/Makefile index d3e34f5..255563a 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,7 @@ ifeq ($(ENABLE_FMRADIO),1) OBJS += app/fm.o endif OBJS += app/generic.o +OBJS += app/common.o OBJS += app/main.o OBJS += app/menu.o ifeq ($(ENABLE_SPECTRUM), 1) diff --git a/app/action.c b/app/action.c index e50767b..8ce66c5 100644 --- a/app/action.c +++ b/app/action.c @@ -18,6 +18,7 @@ #include "app/action.h" #include "app/app.h" +#include "app/common.h" #include "app/dtmf.h" #ifdef ENABLE_FMRADIO #include "app/fm.h" @@ -411,19 +412,25 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) #endif break; case ACTION_OPT_ALARM: - #ifdef ENABLE_ALARM - ACTION_AlarmOr1750(false); - #endif +#ifdef ENABLE_ALARM + ACTION_AlarmOr1750(false); +#endif break; - #ifdef ENABLE_FMRADIO - case ACTION_OPT_FM: - ACTION_FM(); - break; - #endif +#ifdef ENABLE_FMRADIO + case ACTION_OPT_FM: + ACTION_FM(); + break; +#endif case ACTION_OPT_1750: #ifdef ENABLE_TX1750 ACTION_AlarmOr1750(true); #endif break; + case ACTION_OPT_KEYLOCK: + COMMON_KeypadLockToggle(); + break; + case ACTION_OPT_A_B: + COMMON_SwitchVFOs(); + break; } } diff --git a/app/common.c b/app/common.c new file mode 100644 index 0000000..15bf5b3 --- /dev/null +++ b/app/common.c @@ -0,0 +1,36 @@ +#include "functions.h" +#include "misc.h" +#include "settings.h" +#include "ui/ui.h" + +void COMMON_KeypadLockToggle() +{ + + if (gScreenToDisplay != DISPLAY_MENU && + gCurrentFunction != FUNCTION_TRANSMIT) + { // toggle the keyboad lock + + #ifdef ENABLE_VOICE + gAnotherVoiceID = gEeprom.KEY_LOCK ? VOICE_ID_UNLOCK : VOICE_ID_LOCK; + #endif + + gEeprom.KEY_LOCK = !gEeprom.KEY_LOCK; + + gRequestSaveSettings = true; + } +} + +void COMMON_SwitchVFOs() +{ + gEeprom.TX_VFO ^= 1; + + if (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) + gEeprom.CROSS_BAND_RX_TX = gEeprom.TX_VFO + 1; + if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + gEeprom.DUAL_WATCH = gEeprom.TX_VFO + 1; + + gRequestSaveSettings = 1; + gFlagReconfigureVfos = true; + + gRequestDisplayScreen = DISPLAY_MAIN; +} \ No newline at end of file diff --git a/app/common.h b/app/common.h new file mode 100644 index 0000000..506d3c2 --- /dev/null +++ b/app/common.h @@ -0,0 +1,12 @@ + +#ifndef APP_COMMON_H +#define APP_COMMON_H + +#include "functions.h" +#include "settings.h" +#include "ui/ui.h" + +void COMMON_KeypadLockToggle(); +void COMMON_SwitchVFOs(); + +#endif \ No newline at end of file diff --git a/app/generic.c b/app/generic.c index 1e09dae..db64af4 100644 --- a/app/generic.c +++ b/app/generic.c @@ -17,9 +17,12 @@ #include #include "app/app.h" +#include "app/common.h" + #ifdef ENABLE_FMRADIO #include "app/fm.h" #endif + #include "app/generic.h" #include "app/menu.h" #include "app/scanner.h" @@ -52,18 +55,7 @@ void GENERIC_Key_F(bool bKeyPressed, bool bKeyHeld) if (!bKeyPressed) // won't ever pass return; - if (gScreenToDisplay != DISPLAY_MENU && - gCurrentFunction != FUNCTION_TRANSMIT) - { // toggle the keyboad lock - - #ifdef ENABLE_VOICE - gAnotherVoiceID = gEeprom.KEY_LOCK ? VOICE_ID_UNLOCK : VOICE_ID_LOCK; - #endif - - gEeprom.KEY_LOCK = !gEeprom.KEY_LOCK; - - gRequestSaveSettings = true; - } + COMMON_KeypadLockToggle(); } else // released { diff --git a/app/main.c b/app/main.c index 4cd80fa..7703e14 100644 --- a/app/main.c +++ b/app/main.c @@ -18,11 +18,10 @@ #include "app/action.h" #include "app/app.h" - +#include "app/common.h" #ifdef ENABLE_FMRADIO #include "app/fm.h" #endif - #include "app/generic.h" #include "app/main.h" #include "app/scanner.h" @@ -137,21 +136,10 @@ static void processFKeyFunction(const KEY_Code_t Key, const bool beep) break; case KEY_2: - gEeprom.TX_VFO ^= 1; - - if (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) - gEeprom.CROSS_BAND_RX_TX = gEeprom.TX_VFO + 1; - if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) - gEeprom.DUAL_WATCH = gEeprom.TX_VFO + 1; - - gRequestSaveSettings = 1; - gFlagReconfigureVfos = true; - - gRequestDisplayScreen = DISPLAY_MAIN; + COMMON_SwitchVFOs(); if (beep) gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; - break; case KEY_3: diff --git a/settings.h b/settings.h index 7b3f3c9..8805846 100644 --- a/settings.h +++ b/settings.h @@ -80,6 +80,8 @@ enum { ACTION_OPT_ALARM, ACTION_OPT_FM, ACTION_OPT_1750, + ACTION_OPT_KEYLOCK, + ACTION_OPT_A_B, ACTION_OPT_LEN }; diff --git a/ui/menu.c b/ui/menu.c index 12ab3d3..e472023 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -348,6 +348,8 @@ const t_sidefunction SIDEFUNCTIONS[] = #ifdef ENABLE_TX1750 {"1750HZ", ACTION_OPT_1750}, #endif + {"LOCK\nKEYPAD", ACTION_OPT_KEYLOCK}, + {"SWITCH\nVFO", ACTION_OPT_A_B}, }; const t_sidefunction* gSubMenu_SIDEFUNCTIONS = SIDEFUNCTIONS; const uint8_t gSubMenu_SIDEFUNCTIONS_size = ARRAY_SIZE(SIDEFUNCTIONS);