From 23986a8648365366517c3818efb44a746ce839a3 Mon Sep 17 00:00:00 2001 From: wrobepio Date: Mon, 6 Nov 2023 15:51:40 +0100 Subject: [PATCH] Add "BLMIN TMP OFF" function for programmable buttons --- Makefile | 5 ++++- README.md | 1 + app/action.c | 22 +++++++++++++++++++++- app/action.h | 4 ++++ board.c | 3 +++ driver/backlight.c | 13 ++++++++++++- driver/backlight.h | 8 ++++++++ settings.h | 7 +++++++ ui/menu.c | 3 +++ 9 files changed, 63 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 319718e..02ed887 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,7 @@ ENABLE_COPY_CHAN_TO_VFO := 1 ENABLE_SPECTRUM := 1 ENABLE_REDUCE_LOW_MID_TX_POWER:= 0 ENABLE_BYP_RAW_DEMODULATORS := 0 - +ENABLE_BLMIN_TMP_OFF := 0 ############################################################# TARGET = firmware @@ -325,6 +325,9 @@ endif ifeq ($(ENABLE_BYP_RAW_DEMODULATORS),1) CFLAGS += -DENABLE_BYP_RAW_DEMODULATORS endif +ifeq ($(ENABLE_BLMIN_TMP_OFF),1) + CFLAGS += -DENABLE_BLMIN_TMP_OFF +endif LDFLAGS = ifeq ($(ENABLE_CLANG),0) diff --git a/README.md b/README.md index d3c018c..5ddb56a 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ ENABLE_AUDIO_BAR := 0 experimental, display an audo bar level ENABLE_COPY_CHAN_TO_VFO := 1 copy current channel into the other VFO. Long press Menu key ('M') #ENABLE_SINGLE_VFO_CHAN := 1 not yet implemented - single VFO on display when possible #ENABLE_BAND_SCOPE := 1 not yet implemented - spectrum/pan-adapter +ENABLE_BLMIN_TMP_OFF := 0 additional function for configurable buttons that toggles `BLMin` on and off wihout saving it to the EEPROM ``` # New/modified function keys diff --git a/app/action.c b/app/action.c index d3e2861..fa61af7 100644 --- a/app/action.c +++ b/app/action.c @@ -32,6 +32,7 @@ #endif #include "driver/bk4819.h" #include "driver/gpio.h" +#include "driver/backlight.h" #include "functions.h" #include "misc.h" #include "settings.h" @@ -308,6 +309,20 @@ void ACTION_SwitchDemodul(void) gRequestSaveChannel = 1; } +#ifdef ENABLE_BLMIN_TMP_OFF +void ACTION_BlminTmpOff(void) +{ + if(++gEeprom.BACKLIGHT_MIN_STAT == BLMIN_STAT_UNKNOWN) + { + gEeprom.BACKLIGHT_MIN_STAT = BLMIN_STAT_ON; + BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MIN); + } else + { + BACKLIGHT_SetBrightness(0); + } +} +#endif + void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) { if (gScreenToDisplay == DISPLAY_MAIN && gDTMF_InputMode) // entering DTMF code @@ -425,6 +440,11 @@ void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) break; case ACTION_OPT_SWITCH_DEMODUL: ACTION_SwitchDemodul(); - break; + break; +#ifdef ENABLE_BLMIN_TMP_OFF + case ACTION_OPT_BLMIN_TMP_OFF: + ACTION_BlminTmpOff(); + break; +#endif } } diff --git a/app/action.h b/app/action.h index 9cb0d7e..b3e0719 100644 --- a/app/action.h +++ b/app/action.h @@ -34,6 +34,10 @@ void ACTION_Scan(bool bRestart); #endif void ACTION_SwitchDemodul(void); +#ifdef ENABLE_BLMIN_TMP_OFF +void ACTION_BlminTmpOff(void); +#endif + void ACTION_Handle(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld); #endif diff --git a/board.c b/board.c index b9a5275..cf2275b 100644 --- a/board.c +++ b/board.c @@ -537,6 +537,9 @@ void BOARD_EEPROM_Init(void) EEPROM_ReadBuffer(0x0E78, Data, 8); gEeprom.BACKLIGHT_MAX = (Data[0] & 0xF) <= 10 ? (Data[0] & 0xF) : 10; gEeprom.BACKLIGHT_MIN = (Data[0] >> 4) < gEeprom.BACKLIGHT_MAX ? (Data[0] >> 4) : 0; +#ifdef ENABLE_BLMIN_TMP_OFF + gEeprom.BACKLIGHT_MIN_STAT = BLMIN_STAT_ON; +#endif gEeprom.CHANNEL_DISPLAY_MODE = (Data[1] < 4) ? Data[1] : MDF_FREQUENCY; // 4 instead of 3 - extra display mode gEeprom.CROSS_BAND_RX_TX = (Data[2] < 3) ? Data[2] : CROSS_BAND_OFF; gEeprom.BATTERY_SAVE = (Data[3] < 5) ? Data[3] : 4; diff --git a/driver/backlight.c b/driver/backlight.c index 367ba0f..f3c3006 100644 --- a/driver/backlight.c +++ b/driver/backlight.c @@ -94,7 +94,18 @@ void BACKLIGHT_TurnOn(void) void BACKLIGHT_TurnOff() { +#ifdef ENABLE_BLMIN_TMP_OFF + register uint8_t tmp; + + if (gEeprom.BACKLIGHT_MIN_STAT == BLMIN_STAT_ON) + tmp = gEeprom.BACKLIGHT_MIN; + else + tmp = 0; + + BACKLIGHT_SetBrightness(tmp); +#else BACKLIGHT_SetBrightness(gEeprom.BACKLIGHT_MIN); +#endif gBacklightCountdown = 0; backlightOn = false; } @@ -108,4 +119,4 @@ void BACKLIGHT_SetBrightness(uint8_t brigtness) { PWM_PLUS0_CH0_COMP = (1 << brigtness) - 1; //PWM_PLUS0_SWLOAD = 1; -} \ No newline at end of file +} diff --git a/driver/backlight.h b/driver/backlight.h index 303e611..8ab3ee4 100644 --- a/driver/backlight.h +++ b/driver/backlight.h @@ -23,6 +23,14 @@ extern uint16_t gBacklightCountdown; extern uint8_t gBacklightBrightness; +#ifdef ENABLE_BLMIN_TMP_OFF +typedef enum { + BLMIN_STAT_ON, + BLMIN_STAT_OFF, + BLMIN_STAT_UNKNOWN +} BLMIN_STAT_t; +#endif + void BACKLIGHT_InitHardware(); void BACKLIGHT_TurnOn(); void BACKLIGHT_TurnOff(); diff --git a/settings.h b/settings.h index d6cc664..2106fd6 100644 --- a/settings.h +++ b/settings.h @@ -23,6 +23,7 @@ #include "frequencies.h" #include #include "radio.h" +#include enum POWER_OnDisplayMode_t { POWER_ON_DISPLAY_MODE_FULL_SCREEN = 0, @@ -85,6 +86,9 @@ enum { ACTION_OPT_A_B, ACTION_OPT_VFO_MR, ACTION_OPT_SWITCH_DEMODUL, +#ifdef ENABLE_BLMIN_TMP_OFF + ACTION_OPT_BLMIN_TMP_OFF, //BackLight Minimum Temporay OFF +#endif ACTION_OPT_LEN }; @@ -231,6 +235,9 @@ typedef struct { uint8_t KEY_M_LONG_PRESS_ACTION; uint8_t BACKLIGHT_MIN; +#ifdef ENABLE_BLMIN_TMP_OFF + BLMIN_STAT_t BACKLIGHT_MIN_STAT; +#endif uint8_t BACKLIGHT_MAX; BATTERY_Type_t BATTERY_TYPE; } EEPROM_Config_t; diff --git a/ui/menu.c b/ui/menu.c index 80fefc1..f7568a5 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -361,6 +361,9 @@ const t_sidefunction SIDEFUNCTIONS[] = {"SWITCH\nVFO", ACTION_OPT_A_B}, {"VFO/MR", ACTION_OPT_VFO_MR}, {"SWITCH\nDEMODUL", ACTION_OPT_SWITCH_DEMODUL}, +#ifdef ENABLE_BLMIN_TMP_OFF + {"BLMIN\nTMP OFF", ACTION_OPT_BLMIN_TMP_OFF}, //BackLight Minimum Temporay OFF +#endif }; const t_sidefunction* gSubMenu_SIDEFUNCTIONS = SIDEFUNCTIONS; const uint8_t gSubMenu_SIDEFUNCTIONS_size = ARRAY_SIZE(SIDEFUNCTIONS);