From 613fc482cc4d66d7245e73c090480ee0187d28e7 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Mon, 16 Oct 2023 18:19:28 +0100 Subject: [PATCH] Squelch and backlight adjustments --- app/app.c | 27 +++++++------ driver/backlight.c | 73 +++++++++++++++++++---------------- driver/backlight.h | 2 +- driver/bk4819.c | 4 +- firmware.bin | Bin 61212 -> 61160 bytes firmware.packed.bin | Bin 61230 -> 61178 bytes functions.c | 2 +- helper/battery.c | 2 +- main.c | 4 +- misc.c | 72 ++++++++++++++++++----------------- misc.h | 2 + radio.c | 91 ++++++++++++++++++++++++++++---------------- ui/fmradio.c | 2 +- ui/main.c | 4 +- 14 files changed, 165 insertions(+), 120 deletions(-) diff --git a/app/app.c b/app/app.c index 1907ee5..aceeec5 100644 --- a/app/app.c +++ b/app/app.c @@ -437,6 +437,9 @@ Skip: static void APP_process_function(void) { + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wimplicit-fallthrough=" + switch (g_current_function) { case FUNCTION_FOREGROUND: @@ -444,13 +447,16 @@ static void APP_process_function(void) break; case FUNCTION_TRANSMIT: - break; - - case FUNCTION_MONITOR: + if (g_setting_backlight_on_tx_rx == 1 || g_setting_backlight_on_tx_rx == 3) + backlight_turn_on(backlight_tx_rx_time_500ms); break; case FUNCTION_INCOMING: APP_process_incoming_rx(); + + case FUNCTION_MONITOR: + if (g_setting_backlight_on_tx_rx >= 2) + backlight_turn_on(backlight_tx_rx_time_500ms); break; case FUNCTION_RECEIVE: @@ -465,6 +471,8 @@ static void APP_process_function(void) case FUNCTION_BAND_SCOPE: break; } + + #pragma GCC diagnostic pop } void APP_start_listening(function_type_t Function, const bool reset_am_fix) @@ -487,9 +495,6 @@ void APP_start_listening(function_type_t Function, const bool reset_am_fix) g_enable_speaker = true; - if (g_setting_backlight_on_tx_rx >= 2) - backlight_turn_on(); - if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { // we're scanning @@ -690,7 +695,7 @@ static void APP_next_freq(void) RADIO_setup_registers(true); #ifdef ENABLE_FASTER_CHANNEL_SCAN - g_scan_pause_delay_in_10ms = 9; // 90ms + g_scan_pause_delay_in_10ms = 7; // 70ms #else g_scan_pause_delay_in_10ms = scan_pause_delay_in_6_10ms; #endif @@ -701,7 +706,7 @@ static void APP_next_freq(void) BK4819_set_rf_frequency(frequency, true); #ifdef ENABLE_FASTER_CHANNEL_SCAN - g_scan_pause_delay_in_10ms = 8; // 80ms + g_scan_pause_delay_in_10ms = 10; // 100ms #else g_scan_pause_delay_in_10ms = scan_pause_delay_in_6_10ms; #endif @@ -2401,15 +2406,15 @@ static void APP_process_key(const key_code_t Key, const bool key_pressed, const if (Key == KEY_EXIT && !backlight_was_on && g_eeprom.backlight > 0) { // just turn the light on for now so the user can see what's what - backlight_turn_on(); + backlight_turn_on(0); g_beep_to_play = BEEP_NONE; return; } */ // turn the backlight on if (key_pressed) - if (Key != KEY_PTT || g_setting_backlight_on_tx_rx == 1 || g_setting_backlight_on_tx_rx == 3) - backlight_turn_on(); + if (Key != KEY_PTT) + backlight_turn_on(0); if (g_current_function == FUNCTION_POWER_SAVE) FUNCTION_Select(FUNCTION_FOREGROUND); diff --git a/driver/backlight.c b/driver/backlight.c index aa77597..ae36d43 100644 --- a/driver/backlight.c +++ b/driver/backlight.c @@ -22,39 +22,48 @@ // this is decremented once every 500ms uint16_t g_backlight_count_down = 0; -void backlight_turn_on(void) +void backlight_turn_on(const uint16_t min_ticks) { - if (g_eeprom.backlight == 0) - return; - - // turn the backlight ON - GPIO_SetBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); - - switch (g_eeprom.backlight) + if (min_ticks > 0) { - default: - case 1: // 5 sec - g_backlight_count_down = 5; - break; - case 2: // 10 sec - g_backlight_count_down = 10; - break; - case 3: // 20 sec - g_backlight_count_down = 20; - break; - case 4: // 1 min - g_backlight_count_down = 60; - break; - case 5: // 2 min - g_backlight_count_down = 60 * 2; - break; - case 6: // 4 min - g_backlight_count_down = 60 * 4; - break; - case 7: // always on - g_backlight_count_down = 0; - break; - } + if (g_backlight_count_down < min_ticks) + g_backlight_count_down = min_ticks; - g_backlight_count_down *= 2; + // turn the backlight ON + GPIO_SetBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); + } + else + if (g_eeprom.backlight > 0) + { + // turn the backlight ON + GPIO_SetBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); + + switch (g_eeprom.backlight) + { + default: + case 1: // 5 sec + g_backlight_count_down = 5; + break; + case 2: // 10 sec + g_backlight_count_down = 10; + break; + case 3: // 20 sec + g_backlight_count_down = 20; + break; + case 4: // 1 min + g_backlight_count_down = 60; + break; + case 5: // 2 min + g_backlight_count_down = 60 * 2; + break; + case 6: // 4 min + g_backlight_count_down = 60 * 4; + break; + case 7: // always on + g_backlight_count_down = 0; + break; + } + + g_backlight_count_down *= 2; + } } diff --git a/driver/backlight.h b/driver/backlight.h index da1b02c..7649bbd 100644 --- a/driver/backlight.h +++ b/driver/backlight.h @@ -21,7 +21,7 @@ extern uint16_t g_backlight_count_down; -void backlight_turn_on(void); +void backlight_turn_on(const uint16_t min_ticks); #endif diff --git a/driver/bk4819.c b/driver/bk4819.c index adc986f..4372efc 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -787,7 +787,9 @@ void BK4819_SetupSquelch( #else // faster (but twitchier) (1u << 14) | // 1 ??? - (2u << 11) | // *5 squelch = open delay .. 0 ~ 7 +// (2u << 11) | // *5 squelch = open delay .. 0 ~ 7 +// (1u << 9) | // *3 squelch = close delay .. 0 ~ 3 + (1u << 11) | // *5 squelch = open delay .. 0 ~ 7 (1u << 9) | // *3 squelch = close delay .. 0 ~ 3 squelch_open_glitch_thresh); // 0 ~ 255 #endif diff --git a/firmware.bin b/firmware.bin index 9366d7fd1208efba80dd526109ae521a967366c6..6d24f129d578723a6884a28fb5d0fb8674d64b92 100644 GIT binary patch delta 15017 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