From 0b0cf75db6a174898daba55382c8e9817c34525f Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Tue, 24 Oct 2023 18:16:16 +0100 Subject: [PATCH] fix RF scanning --- Makefile | 2 +- app/app.c | 19 +++++++++---------- bitmaps.c | 16 ++++++++-------- driver/backlight.c | 47 ++++++++++++++++------------------------------ driver/backlight.h | 3 ++- ui/menu.c | 31 ++++++++++++++++-------------- ui/menu.h | 2 +- 7 files changed, 54 insertions(+), 66 deletions(-) diff --git a/Makefile b/Makefile index b0b211b..47410d4 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ ENABLE_OVERLAY := 0 ENABLE_LTO := 1 # UART Programming 2.9 kB ENABLE_UART := 1 -ENABLE_UART_DEBUG := 0 +ENABLE_UART_DEBUG := 1 # AirCopy 2.5 kB ENABLE_AIRCOPY := 1 ENABLE_AIRCOPY_REMEMBER_FREQ := 1 diff --git a/app/app.c b/app/app.c index c5dc0cc..0f4de2d 100644 --- a/app/app.c +++ b/app/app.c @@ -244,16 +244,15 @@ static void APP_process_rx(void) goto Skip; } - // why does being a VFO make a difference ??? .. 1of11 - // -/* if (g_scan_state_dir != SCAN_STATE_DIR_OFF && IS_FREQ_CHANNEL(g_scan_next_channel)) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) // && IS_FREQ_CHANNEL(g_scan_next_channel)) { -// return; + if (g_squelch_open) + return; Mode = END_OF_RX_MODE_END; goto Skip; } -*/ + switch (g_current_code_type) { default: @@ -284,6 +283,9 @@ static void APP_process_rx(void) if (g_squelch_open) { + if (g_setting_backlight_on_tx_rx >= 2) + backlight_turn_on(backlight_tx_rx_time_500ms); + if (!g_end_of_rx_detected_maybe && IS_NOT_NOAA_CHANNEL(g_rx_vfo->channel_save)) { switch (g_current_code_type) @@ -1161,18 +1163,15 @@ void APP_process(void) g_current_function == FUNCTION_RECEIVE) && g_screen_to_display != DISPLAY_SEARCH && g_scan_state_dir != SCAN_STATE_DIR_OFF && - g_scan_pause_10ms == 0 && !g_ptt_is_pressed) { // RF scanning - - // TODO: check to see if signal stays present for minimum time before pausing (debounce) - - if (g_current_code_type == CODE_TYPE_NONE && g_current_function == FUNCTION_NEW_RECEIVE && !g_scan_pause_time_mode) + if (g_current_code_type == CODE_TYPE_NONE && g_current_function == FUNCTION_NEW_RECEIVE) // && !g_scan_pause_time_mode) { APP_start_listening(g_monitor_enabled ? FUNCTION_MONITOR : FUNCTION_RECEIVE, true); } else + if (g_scan_pause_10ms == 0) { // switch to next channel g_scan_pause_time_mode = false; g_rx_reception_mode = RX_MODE_NONE; diff --git a/bitmaps.c b/bitmaps.c index 3002fcb..a52349d 100644 --- a/bitmaps.c +++ b/bitmaps.c @@ -397,20 +397,20 @@ const uint8_t BITMAP_VFO_NOT_DEFAULT[8] = const uint8_t BITMAP_SCANLIST1[6] = { // 'I' symbol __extension__ 0b00000000, - __extension__ 0b00111110, - __extension__ 0b01111111, - __extension__ 0b01111111, - __extension__ 0b00111110, + __extension__ 0b00111111, + __extension__ 0b00111111, + __extension__ 0b00000000, + __extension__ 0b00000000, __extension__ 0b00000000 }; const uint8_t BITMAP_SCANLIST2[6] = { // 'II' symbol __extension__ 0b00000000, + __extension__ 0b00111111, + __extension__ 0b00111111, __extension__ 0b00000000, - __extension__ 0b00110110, - __extension__ 0b01110111, - __extension__ 0b01110111, - __extension__ 0b00110110 + __extension__ 0b00111111, + __extension__ 0b00111111 }; #endif diff --git a/driver/backlight.c b/driver/backlight.c index ae36d43..d563c7d 100644 --- a/driver/backlight.c +++ b/driver/backlight.c @@ -22,48 +22,33 @@ // this is decremented once every 500ms uint16_t g_backlight_count_down = 0; +uint16_t backlight_ticks(void) +{ + switch (g_eeprom.backlight) + { + case 1: return 2 * 5; // 5 sec + case 2: return 2 * 10; // 10 sec + case 3: return 2 * 20; // 20 sec + case 4: return 2 * 60; // 1 min + case 5: return 2 * 60 * 2; // 2 min + case 6: return 2 * 60 * 4; // 4 min + default: + case 7: return 0; // always on + } +} + void backlight_turn_on(const uint16_t min_ticks) { if (min_ticks > 0) { if (g_backlight_count_down < min_ticks) g_backlight_count_down = min_ticks; - - // 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; + g_backlight_count_down = backlight_ticks(); } } diff --git a/driver/backlight.h b/driver/backlight.h index 7649bbd..1cd24e7 100644 --- a/driver/backlight.h +++ b/driver/backlight.h @@ -21,7 +21,8 @@ extern uint16_t g_backlight_count_down; -void backlight_turn_on(const uint16_t min_ticks); +uint16_t backlight_ticks(void); +void backlight_turn_on(const uint16_t min_ticks); #endif diff --git a/ui/menu.c b/ui/menu.c index fe93ec5..24009a7 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -61,6 +61,7 @@ const t_menu_item g_menu_list[] = {"Tx TO", VOICE_ID_TRANSMIT_OVER_TIME, MENU_TX_TO }, // was "TOT" {"Tx VFO", VOICE_ID_INVALID, MENU_CROSS_VFO }, // was "WX" {"Dual W", VOICE_ID_DUAL_STANDBY, MENU_DUAL_WATCH }, // was "TDR" + {"SC REV", VOICE_ID_INVALID, MENU_SCAN_CAR_RESUME }, // was "SC_REV" {"S HOLD", VOICE_ID_INVALID, MENU_SCAN_HOLD }, {"SCRAM", VOICE_ID_SCRAMBLER_ON, MENU_SCRAMBLER }, // was "SCR" {"BCL", VOICE_ID_BUSY_LOCKOUT, MENU_BUSY_CHAN_LOCK }, @@ -81,7 +82,6 @@ const t_menu_item g_menu_list[] = #ifdef ENABLE_VOICE {"VOICE", VOICE_ID_VOICE_PROMPT, MENU_VOICE }, #endif - {"SC REV", VOICE_ID_INVALID, MENU_SCAN_CAR_RESUME }, // was "SC_REV" #ifdef ENABLE_KEYLOCK {"KeyLOC", VOICE_ID_INVALID, MENU_AUTO_KEY_LOCK }, // was "AUTOLk" #endif @@ -241,11 +241,12 @@ const char g_sub_menu_cross_vfo[3][10] = }; #endif -const char g_sub_menu_scan_car_resume[3][13] = +const char g_sub_menu_scan_car_resume[3][8] = { - "TIME", + "TIME ", "CARRIER", - "SEARCH" +// "SEARCH" + "NO" }; const char g_sub_menu_mem_disp[4][15] = @@ -881,16 +882,6 @@ void UI_DisplayMenu(void) strcpy(str, g_sub_menu_bat_save[g_sub_menu_selection]); break; - case MENU_DUAL_WATCH: -// strcpy(String, g_sub_menu_dual_watch[g_sub_menu_selection]); - strcpy(str, g_sub_menu_off_on[g_sub_menu_selection]); - break; - - case MENU_SCAN_HOLD: - strcpy(str, "SCAN HOLD\n"); - sprintf(str + strlen(str), "%d.%d sec", g_sub_menu_selection / 2, 5 * (g_sub_menu_selection % 2)); - break; - case MENU_CROSS_VFO: strcpy(str, g_sub_menu_cross_vfo[g_sub_menu_selection]); break; @@ -905,9 +896,21 @@ void UI_DisplayMenu(void) break; #endif + case MENU_DUAL_WATCH: +// strcpy(String, g_sub_menu_dual_watch[g_sub_menu_selection]); + strcpy(str, g_sub_menu_off_on[g_sub_menu_selection]); + break; + case MENU_SCAN_CAR_RESUME: strcpy(str, "SCAN\nRESUME\n"); strcat(str, g_sub_menu_scan_car_resume[g_sub_menu_selection]); + if (g_sub_menu_selection == SCAN_RESUME_TIME) + sprintf(str + strlen(str), "%d.%ds", g_eeprom.scan_hold_time_500ms / 2, 5 * (g_eeprom.scan_hold_time_500ms % 2)); + break; + + case MENU_SCAN_HOLD: + strcpy(str, "SCAN HOLD\n"); + sprintf(str + strlen(str), "%d.%d sec", g_sub_menu_selection / 2, 5 * (g_sub_menu_selection % 2)); break; case MENU_MEM_DISP: diff --git a/ui/menu.h b/ui/menu.h index 7e54a0a..5b656ed 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -169,7 +169,7 @@ extern const char g_sub_menu_cross_vfo[3][10]; #ifdef ENABLE_VOICE extern const char g_sub_menu_voice[3][4]; #endif -extern const char g_sub_menu_scan_car_resume[3][13]; +extern const char g_sub_menu_scan_car_resume[3][8]; extern const char g_sub_menu_mem_disp[4][15]; #ifdef ENABLE_ALARM extern const char g_sub_menu_alarm_mode[2][5];