From d87e20186c8e1f928a0476d9ffd8dcb624beb0e1 Mon Sep 17 00:00:00 2001 From: Armel FAUVEAU Date: Mon, 10 Feb 2025 02:28:35 +0100 Subject: [PATCH] Refactoring Mute and Gauge conditions --- app/action.c | 40 +++++++++++++++++++++++----------------- app/action.h | 2 ++ compile-with-docker.sh | 4 ++++ driver/st7565.c | 2 ++ driver/st7565.h | 2 ++ ui/menu.c | 16 ++++++++++++++++ 6 files changed, 49 insertions(+), 17 deletions(-) diff --git a/app/action.c b/app/action.c index fdf32c5..9d0d580 100644 --- a/app/action.c +++ b/app/action.c @@ -111,7 +111,11 @@ void (*action_opt_table[])(void) = { [ACTION_OPT_PTT] = &ACTION_Ptt, [ACTION_OPT_WN] = &ACTION_Wn, [ACTION_OPT_BACKLIGHT] = &ACTION_BackLight, - [ACTION_OPT_MUTE] = &ACTION_Mute, + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) + [ACTION_OPT_MUTE] = &ACTION_Mute, + #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, @@ -626,24 +630,26 @@ void ACTION_BackLightOnDemand(void) BACKLIGHT_TurnOn(); } -void ACTION_Mute(void) -{ - // Toggle mute state - gMute = !gMute; + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) + void ACTION_Mute(void) + { + // Toggle mute state + gMute = !gMute; - // Update the registers - #ifdef ENABLE_FMRADIO - BK1080_WriteRegister(BK1080_REG_05_SYSTEM_CONFIGURATION2, gMute ? 0x0A10 : 0x0A1F); + // Update the registers + #ifdef ENABLE_FMRADIO + BK1080_WriteRegister(BK1080_REG_05_SYSTEM_CONFIGURATION2, gMute ? 0x0A10 : 0x0A1F); + #endif + gEeprom.VOLUME_GAIN = gMute ? 0 : gEeprom.VOLUME_GAIN_BACKUP; + BK4819_WriteRegister(BK4819_REG_48, + (11u << 12) | // ??? .. 0 ~ 15, doesn't seem to make any difference + (0u << 10) | // AF Rx Gain-1 + (gEeprom.VOLUME_GAIN << 4) | // AF Rx Gain-2 + (gEeprom.DAC_GAIN << 0)); // AF DAC Gain (after Gain-1 and Gain-2) + + gUpdateStatus = true; + } #endif - gEeprom.VOLUME_GAIN = gMute ? 0 : gEeprom.VOLUME_GAIN_BACKUP; - BK4819_WriteRegister(BK4819_REG_48, - (11u << 12) | // ??? .. 0 ~ 15, doesn't seem to make any difference - (0u << 10) | // AF Rx Gain-1 - (gEeprom.VOLUME_GAIN << 4) | // AF Rx Gain-2 - (gEeprom.DAC_GAIN << 0)); // AF DAC Gain (after Gain-1 and Gain-2) - - gUpdateStatus = true; -} #ifdef ENABLE_FEAT_F4HWN_RESCUE_OPS void ACTION_Power_High(void) diff --git a/app/action.h b/app/action.h index d4dad6f..39b177a 100644 --- a/app/action.h +++ b/app/action.h @@ -42,7 +42,9 @@ void ACTION_SwitchDemodul(void); void ACTION_Wn(void); void ACTION_BackLightOnDemand(void); void ACTION_BackLight(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); diff --git a/compile-with-docker.sh b/compile-with-docker.sh index 33d53ea..ae2b0ed 100755 --- a/compile-with-docker.sh +++ b/compile-with-docker.sh @@ -36,6 +36,7 @@ bandscope() { ENABLE_SPECTRUM=1 \ ENABLE_FMRADIO=0 \ ENABLE_AIRCOPY=0 \ + ENABLE_FEAT_F4HWN_PMR=1 \ ENABLE_NOAA=0 \ ENABLE_FEAT_F4HWN_RESCUE_OPS=0 \ EDITION_STRING=Bandscope \ @@ -49,6 +50,7 @@ broadcast() { ENABLE_SPECTRUM=0 \ ENABLE_FMRADIO=1 \ ENABLE_AIRCOPY=1 \ + ENABLE_FEAT_F4HWN_PMR=1 \ ENABLE_NOAA=0 \ EDITION_STRING=Broadcast \ ENABLE_FEAT_F4HWN_RESCUE_OPS=0 \ @@ -65,6 +67,7 @@ voxless() { ENABLE_AIRCOPY=0 \ ENABLE_AUDIO_BAR=0 \ ENABLE_FEAT_F4HWN_SPECTRUM=0 \ + ENABLE_FEAT_F4HWN_PMR=1 \ ENABLE_NOAA=0 \ ENABLE_FEAT_F4HWN_RESTORE_SCAN=0 \ ENABLE_FEAT_F4HWN_CHARGING_C=0 \ @@ -81,6 +84,7 @@ rescueops() { ENABLE_SPECTRUM=0 \ ENABLE_FMRADIO=0 \ ENABLE_AIRCOPY=1 \ + ENABLE_FEAT_F4HWN_PMR=1 \ ENABLE_NOAA=1 \ ENABLE_FEAT_F4HWN_RESCUE_OPS=1 \ EDITION_STRING=RescueOps \ diff --git a/driver/st7565.c b/driver/st7565.c index 5e49e49..80670cb 100644 --- a/driver/st7565.c +++ b/driver/st7565.c @@ -224,6 +224,7 @@ uint8_t cmds[] = { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) void ST7565_Gauge(uint8_t line, uint8_t min, uint8_t max, uint8_t value) { gFrameBuffer[line][54] = 0x0c; @@ -238,6 +239,7 @@ uint8_t cmds[] = { gFrameBuffer[line][i] = (i <= filled) ? 0x2d : 0x21; } } + #endif #endif void ST7565_Init(void) diff --git a/driver/st7565.h b/driver/st7565.h index 42c69e4..8d4a6e8 100644 --- a/driver/st7565.h +++ b/driver/st7565.h @@ -43,7 +43,9 @@ void ST7565_WriteByte(uint8_t Value); #ifdef ENABLE_FEAT_F4HWN void ST7565_ContrastAndInv(void); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) void ST7565_Gauge(uint8_t line, uint8_t min, uint8_t max, uint8_t value); + #endif int16_t map(int16_t x, int16_t in_min, int16_t in_max, int16_t out_min, int16_t out_max); #endif diff --git a/ui/menu.c b/ui/menu.c index e760f55..83f95a3 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -451,7 +451,9 @@ const t_sidefunction gSubMenu_SIDEFUNCTIONS[] = {"MAIN ONLY", ACTION_OPT_MAINONLY}, {"PTT", ACTION_OPT_PTT}, {"WIDE\nNARROW", ACTION_OPT_WN}, + #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}, @@ -707,7 +709,9 @@ void UI_DisplayMenu(void) else if(gSubMenuSelection < 61) { sprintf(String, "%02dm:%02ds", (((gSubMenuSelection) * 5) / 60), (((gSubMenuSelection) * 5) % 60)); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(4, 1, 60, gSubMenuSelection); + #endif } else { @@ -739,7 +743,9 @@ void UI_DisplayMenu(void) else { sprintf(String, "%02dm:%02ds", ((gSubMenuSelection * 15) / 60), ((gSubMenuSelection * 15) % 60)); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(4, 1, 40, gSubMenuSelection); + #endif } break; @@ -854,7 +860,9 @@ void UI_DisplayMenu(void) case MENU_TOT: sprintf(String, "%02dm:%02ds", (((gSubMenuSelection + 1) * 5) / 60), (((gSubMenuSelection + 1) * 5) % 60)); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(4, 5, 179, gSubMenuSelection); + #endif break; #ifdef ENABLE_VOICE @@ -871,12 +879,16 @@ void UI_DisplayMenu(void) else if(gSubMenuSelection < 81) { sprintf(String, "CARRIER\n%02ds:%03dms", ((gSubMenuSelection * 250) / 1000), ((gSubMenuSelection * 250) % 1000)); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(5, 1, 80, gSubMenuSelection); + #endif } else { sprintf(String, "TIMEOUT\n%02dm:%02ds", (((gSubMenuSelection - 80) * 5) / 60), (((gSubMenuSelection - 80) * 5) % 60)); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(5, 80, 104, gSubMenuSelection); + #endif } break; @@ -1028,7 +1040,9 @@ void UI_DisplayMenu(void) else if(gSubMenuSelection < 121) { sprintf(String, "%dh:%02dm", (gSubMenuSelection / 60), (gSubMenuSelection % 60)); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(4, 1, 120, gSubMenuSelection); + #endif } break; #endif @@ -1095,7 +1109,9 @@ void UI_DisplayMenu(void) else if(gSubMenuSelection < 64) { sprintf(String, "%02u", gSubMenuSelection); + #if !defined(ENABLE_SPECTRUM) || !defined(ENABLE_FMRADIO) ST7565_Gauge(4, 1, 63, gSubMenuSelection); + #endif } gEeprom.VOLUME_GAIN = gSubMenuSelection; BK4819_WriteRegister(BK4819_REG_48,