From 1517cfc6556dd39bd6f62b16b17b756d4a1ba3f8 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Mon, 30 Oct 2023 14:12:27 +0000 Subject: [PATCH] more renaming to ease the pain --- app/action.c | 29 ++--- app/app.c | 18 +-- app/dtmf.c | 2 +- app/fm.c | 295 +++++++++++++++++++++++--------------------- app/fm.h | 58 ++++----- app/generic.c | 8 +- board.c | 2 +- driver/bk1080.c | 38 +++--- firmware.bin | Bin 60240 -> 60296 bytes firmware.packed.bin | Bin 60258 -> 60314 bytes scheduler.c | 2 +- ui/fmradio.c | 6 +- ui/ui.c | 4 +- 13 files changed, 241 insertions(+), 221 deletions(-) diff --git a/app/action.c b/app/action.c index 08cca36..4c0397e 100644 --- a/app/action.c +++ b/app/action.c @@ -138,7 +138,7 @@ void ACTION_Monitor(void) #ifdef ENABLE_FMRADIO if (g_fm_radio_mode) { - FM_Start(); + FM_turn_on(); g_request_display_screen = DISPLAY_FM; } else @@ -157,12 +157,10 @@ void ACTION_Scan(bool bRestart) { GUI_SelectNextDisplay(DISPLAY_FM); -// g_monitor_enabled = false; + if (g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF) + { // already scanning - stop - if (g_fm_scan_state != FM_SCAN_OFF) - { // already scanning - - FM_PlayAndUpdate(); + FM_stop_scan(); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_STOP; @@ -174,21 +172,20 @@ void ACTION_Scan(bool bRestart) if (bRestart) { // scan with auto store - FM_EraseChannels(); - g_fm_auto_scan = true; - g_fm_channel_position = 0; - Frequency = BK1080_freq_lower; + FM_erase_channels(); + g_fm_auto_scan = true; + Frequency = BK1080_freq_lower; } else { // scan without auto store - g_fm_auto_scan = false; - g_fm_channel_position = 0; - Frequency = g_eeprom.fm_frequency_playing; + g_fm_auto_scan = false; + Frequency = g_eeprom.fm_frequency_playing; } + g_fm_channel_position = 0; BK1080_GetFrequencyDeviation(Frequency); - FM_Tune(Frequency, 1, bRestart); + FM_tune(Frequency, FM_SCAN_STATE_DIR_UP, bRestart); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_BEGIN; @@ -348,7 +345,7 @@ void ACTION_Scan(bool bRestart) if (g_fm_radio_mode) { // return normal service - FM_TurnOff(); + FM_turn_off(); g_input_box_index = 0; #ifdef ENABLE_VOX @@ -367,7 +364,7 @@ void ACTION_Scan(bool bRestart) RADIO_select_vfos(); RADIO_setup_registers(true); - FM_Start(); + FM_turn_on(); g_input_box_index = 0; diff --git a/app/app.c b/app/app.c index 59c1f9c..2b0441f 100644 --- a/app/app.c +++ b/app/app.c @@ -1909,7 +1909,7 @@ void APP_time_slice_500ms(void) if (g_fm_radio_tick_500ms > 0) g_fm_radio_tick_500ms--; - if (g_fm_radio_mode && g_current_display_screen == DISPLAY_FM && g_fm_scan_state != FM_SCAN_OFF) + if (g_fm_radio_mode && g_current_display_screen == DISPLAY_FM && g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF) g_update_display = true; // can't do this if not FM scanning, it causes audio clicks #endif @@ -1962,7 +1962,7 @@ void APP_time_slice_500ms(void) } #ifdef ENABLE_FMRADIO - if (g_fm_scan_state == FM_SCAN_OFF || g_ask_to_save) + if (g_fm_scan_state_dir == FM_SCAN_STATE_DIR_OFF || g_ask_to_save) #endif { #ifdef ENABLE_AIRCOPY @@ -2122,7 +2122,7 @@ void APP_time_slice_500ms(void) !g_monitor_enabled && g_fm_radio_mode) { // switch back to FM radio mode - FM_Start(); + FM_turn_on(); GUI_SelectNextDisplay(DISPLAY_FM); } } @@ -2360,13 +2360,13 @@ void APP_time_slice_10ms(void) APP_process_transmit(); #ifdef ENABLE_FMRADIO - if (g_schedule_fm && - g_fm_scan_state != FM_SCAN_OFF && - !g_monitor_enabled && - g_current_function != FUNCTION_RECEIVE && + if (g_schedule_fm && + g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF && + !g_monitor_enabled && + g_current_function != FUNCTION_RECEIVE && g_current_function != FUNCTION_TRANSMIT) { // switch to FM radio mode - FM_Play(); + FM_scan(); g_schedule_fm = false; } #endif @@ -2378,7 +2378,7 @@ void APP_time_slice_10ms(void) { if (--g_fm_restore_tick_10ms == 0) { // switch back to FM radio mode - FM_Start(); + FM_turn_on(); GUI_SelectNextDisplay(DISPLAY_FM); } } diff --git a/app/dtmf.c b/app/dtmf.c index c3b3a16..8c5858f 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -251,7 +251,7 @@ void DTMF_HandleRequest(void) #ifdef ENABLE_FMRADIO if (g_fm_radio_mode) { - FM_TurnOff(); + FM_turn_off(); GUI_SelectNextDisplay(DISPLAY_MAIN); } #endif diff --git a/app/fm.c b/app/fm.c index d841db1..0fca7c2 100644 --- a/app/fm.c +++ b/app/fm.c @@ -38,51 +38,51 @@ #define STATE_USER_MODE 1 #define STATE_SAVE 2 -uint16_t g_fm_channels[20]; -bool g_fm_radio_mode; -uint8_t g_fm_radio_tick_500ms; -volatile uint16_t g_fm_play_tick_10ms; -volatile int8_t g_fm_scan_state; -bool g_fm_auto_scan; -uint8_t g_fm_channel_position; -bool g_fm_found_frequency; -bool g_fm_auto_scan; -uint8_t g_fm_resume_tick_500ms; -uint16_t g_fm_restore_tick_10ms; +uint16_t g_fm_channels[20]; +bool g_fm_radio_mode; +uint8_t g_fm_radio_tick_500ms; +volatile uint16_t g_fm_play_tick_10ms; +fm_scan_state_dir_t g_fm_scan_state_dir; +bool g_fm_auto_scan; +uint8_t g_fm_channel_position; +bool g_fm_found_frequency; +bool g_fm_auto_scan; +uint8_t g_fm_resume_tick_500ms; +uint16_t g_fm_restore_tick_10ms; -bool FM_CheckValidChannel(uint8_t Channel) +bool FM_check_valid_channel(const unsigned int Channel) { return (Channel < ARRAY_SIZE(g_fm_channels) && (g_fm_channels[Channel] >= BK1080_freq_lower && g_fm_channels[Channel] < BK1080_freq_upper)) ? true : false; } -uint8_t FM_FindNextChannel(uint8_t Channel, uint8_t Direction) +unsigned int FM_find_next_channel(unsigned int Channel, const fm_scan_state_dir_t scan_state_dir) { unsigned int i; for (i = 0; i < ARRAY_SIZE(g_fm_channels); i++) { - if (Channel == 0xFF) - Channel = ARRAY_SIZE(g_fm_channels) - 1; + if (Channel > ARRAY_SIZE(g_fm_channels)) + Channel = ARRAY_SIZE(g_fm_channels) - 1; else if (Channel >= ARRAY_SIZE(g_fm_channels)) Channel = 0; - if (FM_CheckValidChannel(Channel)) + if (FM_check_valid_channel(Channel)) return Channel; - Channel += Direction; + Channel += scan_state_dir; } return 0xFF; } -int FM_ConfigureChannelState(void) +int FM_configure_channel_state(void) { g_eeprom.fm_frequency_playing = g_eeprom.fm_selected_frequency; if (g_eeprom.fm_channel_mode) { - const uint8_t Channel = FM_FindNextChannel(g_eeprom.fm_selected_channel, FM_CHANNEL_UP); + const uint8_t Channel = FM_find_next_channel(g_eeprom.fm_selected_channel, FM_CHANNEL_UP); if (Channel == 0xFF) { g_eeprom.fm_channel_mode = false; @@ -96,25 +96,7 @@ int FM_ConfigureChannelState(void) return 0; } -void FM_TurnOff(void) -{ - g_fm_radio_mode = false; - g_fm_scan_state = FM_SCAN_OFF; - g_fm_restore_tick_10ms = 0; - - if (!g_monitor_enabled) - { - g_speaker_enabled = false; - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); - } - - BK1080_Init(0, false); - - g_update_display = true; - g_update_status = true; -} - -void FM_EraseChannels(void) +void FM_erase_channels(void) { unsigned int i; uint8_t Template[8]; @@ -126,48 +108,52 @@ void FM_EraseChannels(void) memset(g_fm_channels, 0xFF, sizeof(g_fm_channels)); } -void FM_Tune(uint16_t Frequency, int8_t Step, bool flag) +void FM_tune(uint16_t frequency, const fm_scan_state_dir_t scan_state_dir, const bool flag) { g_speaker_enabled = false; GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); - g_fm_play_tick_10ms = (g_fm_scan_state == FM_SCAN_OFF) ? fm_play_noscan_10ms : fm_play_scan_10ms; + g_fm_play_tick_10ms = (g_fm_scan_state_dir == FM_SCAN_STATE_DIR_OFF) ? fm_play_noscan_10ms : fm_play_scan_10ms; g_schedule_fm = false; g_fm_found_frequency = false; g_ask_to_save = false; g_ask_to_delete = false; - g_eeprom.fm_frequency_playing = Frequency; + g_eeprom.fm_frequency_playing = frequency; if (!flag) - { - Frequency += Step; - if (Frequency < BK1080_freq_lower) - Frequency = BK1080_freq_upper - 1u; - else - if (Frequency > (BK1080_freq_upper - 1u)) - Frequency = BK1080_freq_lower; + { // wrap-a-around - g_eeprom.fm_frequency_playing = Frequency; + frequency += scan_state_dir; + if (frequency < BK1080_freq_lower) + frequency = BK1080_freq_upper - 1u; + else + if (frequency >= BK1080_freq_upper) + frequency = BK1080_freq_lower; + + g_eeprom.fm_frequency_playing = frequency; } - g_fm_scan_state = Step; + g_fm_scan_state_dir = scan_state_dir; BK1080_SetFrequency(g_eeprom.fm_frequency_playing); } -void FM_PlayAndUpdate(void) +void FM_stop_scan(void) { - g_fm_scan_state = FM_SCAN_OFF; + // stop scanning + g_fm_scan_state_dir = FM_SCAN_STATE_DIR_OFF; if (g_fm_auto_scan) - { - g_eeprom.fm_channel_mode = true; + { // switch to channel mode + g_eeprom.fm_channel_mode = true; g_eeprom.fm_selected_channel = 0; } - FM_ConfigureChannelState(); + FM_configure_channel_state(); + BK1080_SetFrequency(g_eeprom.fm_frequency_playing); + SETTINGS_save_fm(); g_fm_play_tick_10ms = 0; @@ -180,7 +166,7 @@ void FM_PlayAndUpdate(void) g_update_display = true; } -int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit) +int FM_check_frequency_lock(uint16_t Frequency, uint16_t LowerLimit) { int ret = -1; @@ -230,14 +216,87 @@ Bail: return ret; } -static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) +void FM_scan(void) +{ + if (!FM_check_frequency_lock(g_eeprom.fm_frequency_playing, BK1080_freq_lower)) + { + if (!g_fm_auto_scan) + { + g_fm_play_tick_10ms = 0; + g_fm_found_frequency = true; + + if (!g_eeprom.fm_channel_mode) + g_eeprom.fm_selected_frequency = g_eeprom.fm_frequency_playing; + + g_speaker_enabled = true; + GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); + + GUI_SelectNextDisplay(DISPLAY_FM); + return; + } + + if (g_fm_channel_position < ARRAY_SIZE(g_fm_channels)) + g_fm_channels[g_fm_channel_position++] = g_eeprom.fm_frequency_playing; + + if (g_fm_channel_position >= ARRAY_SIZE(g_fm_channels)) + { + FM_stop_scan(); + GUI_SelectNextDisplay(DISPLAY_FM); + return; + } + } + + if (g_fm_auto_scan && g_eeprom.fm_frequency_playing >= (BK1080_freq_upper - 1u)) + FM_stop_scan(); + else + FM_tune(g_eeprom.fm_frequency_playing, g_fm_scan_state_dir, false); + + GUI_SelectNextDisplay(DISPLAY_FM); +} + +void FM_turn_on(void) +{ + g_fm_radio_mode = true; + g_fm_scan_state_dir = FM_SCAN_STATE_DIR_OFF; + g_fm_restore_tick_10ms = 0; + + // enable the FM radio chip + BK1080_Init(g_eeprom.fm_frequency_playing, true); + + g_speaker_enabled = true; + GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); + + g_update_display = true; + g_update_status = true; +} + +void FM_turn_off(void) +{ + g_fm_radio_mode = false; + g_fm_scan_state_dir = FM_SCAN_STATE_DIR_OFF; + g_fm_restore_tick_10ms = 0; + + if (!g_monitor_enabled) + { + g_speaker_enabled = false; + GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); + } + + // disable the FM chip + BK1080_Init(0, false); + + g_update_display = true; + g_update_status = true; +} + +// *************************************** + +static void FM_Key_DIGITS(const key_code_t Key, const bool key_pressed, const bool key_held) { - - // beeps cause bad audio clicks anf audio breaks :( + // beeps cause bad audio clicks anf audio breaks // so don't use them - g_key_input_count_down = key_input_timeout_500ms; if (key_held && !key_pressed) @@ -248,6 +307,8 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) return; } + // long press key or short key release + if (!g_fkey_pressed && !key_held) { // short key release uint8_t State; @@ -261,7 +322,7 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) } else { - if (g_fm_scan_state != FM_SCAN_OFF) + if (g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF) return; State = g_eeprom.fm_channel_mode ? STATE_USER_MODE : STATE_FREQ_MODE; @@ -296,7 +357,7 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) if (Frequency < BK1080_freq_lower) Frequency = BK1080_freq_lower; - if (Frequency > (BK1080_freq_upper - 1u)) + if (Frequency >= BK1080_freq_upper) Frequency = BK1080_freq_upper - 1u; g_eeprom.fm_selected_frequency = (uint16_t)Frequency; @@ -307,8 +368,8 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) g_eeprom.fm_frequency_playing = g_eeprom.fm_selected_frequency; BK1080_SetFrequency(g_eeprom.fm_frequency_playing); - g_request_save_fm = true; + g_request_save_fm = true; return; } } @@ -323,27 +384,31 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) if (State == STATE_USER_MODE) { - if (FM_CheckValidChannel(Channel)) + if (FM_check_valid_channel(Channel)) { #ifdef ENABLE_VOICE g_another_voice_id = (voice_id_t)Key; #endif - g_eeprom.fm_selected_channel = Channel; + + g_eeprom.fm_selected_channel = Channel; g_eeprom.fm_frequency_playing = g_fm_channels[Channel]; + BK1080_SetFrequency(g_eeprom.fm_frequency_playing); + g_request_save_fm = true; return; } } else - if (Channel < 20) + if (Channel < ARRAY_SIZE(g_fm_channels)) { #ifdef ENABLE_VOICE g_another_voice_id = (voice_id_t)Key; #endif + g_request_display_screen = DISPLAY_FM; - g_input_box_index = 0; - g_fm_channel_position = Channel; + g_input_box_index = 0; + g_fm_channel_position = Channel; return; } @@ -372,7 +437,7 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) case KEY_3: g_eeprom.fm_channel_mode = !g_eeprom.fm_channel_mode; - if (!FM_ConfigureChannelState()) + if (!FM_configure_channel_state()) { BK1080_SetFrequency(g_eeprom.fm_frequency_playing); g_request_save_fm = true; @@ -384,7 +449,7 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) } } -static void FM_Key_STAR(bool key_pressed, bool key_held) +static void FM_Key_STAR(const bool key_pressed, const bool key_held) { g_key_input_count_down = key_input_timeout_500ms; @@ -402,7 +467,7 @@ static void FM_Key_STAR(bool key_pressed, bool key_held) g_update_status = true; } -static void FM_Key_EXIT(bool key_pressed, bool key_held) +static void FM_Key_EXIT(const bool key_pressed, const bool key_held) { (void)key_held; @@ -412,7 +477,7 @@ static void FM_Key_EXIT(bool key_pressed, bool key_held) if (key_pressed) return; - if (g_fm_scan_state == FM_SCAN_OFF) + if (g_fm_scan_state_dir == FM_SCAN_STATE_DIR_OFF) { if (g_input_box_index == 0) { @@ -453,7 +518,7 @@ static void FM_Key_EXIT(bool key_pressed, bool key_held) } else { - FM_PlayAndUpdate(); + FM_stop_scan(); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_STOP; @@ -463,10 +528,10 @@ static void FM_Key_EXIT(bool key_pressed, bool key_held) g_request_display_screen = DISPLAY_FM; } -static void FM_Key_MENU(bool key_pressed, bool key_held) +static void FM_Key_MENU(const bool key_pressed, const bool key_held) { (void)key_held; - + unsigned int i; int channel = -1; @@ -487,7 +552,7 @@ static void FM_Key_MENU(bool key_pressed, bool key_held) //UART_SendText("fm menu 1\r\n"); #endif - if (g_fm_scan_state == FM_SCAN_OFF) + if (g_fm_scan_state_dir == FM_SCAN_STATE_DIR_OFF) { // not scanning if (!g_eeprom.fm_channel_mode) @@ -512,7 +577,7 @@ static void FM_Key_MENU(bool key_pressed, bool key_held) { g_fm_channels[g_eeprom.fm_selected_channel] = 0xFFFF; - FM_ConfigureChannelState(); + FM_configure_channel_state(); BK1080_SetFrequency(g_eeprom.fm_frequency_playing); g_request_save_fm = true; @@ -557,7 +622,7 @@ static void FM_Key_MENU(bool key_pressed, bool key_held) g_ask_to_save = true; } -static void FM_Key_UP_DOWN(bool key_pressed, bool key_held, int8_t Step) +static void FM_Key_UP_DOWN(const bool key_pressed, const bool key_held, const fm_scan_state_dir_t scan_state_dir) { g_key_input_count_down = key_input_timeout_500ms; @@ -576,23 +641,25 @@ static void FM_Key_UP_DOWN(bool key_pressed, bool key_held, int8_t Step) if (g_ask_to_save) { g_request_display_screen = DISPLAY_FM; - g_fm_channel_position = NUMBER_AddWithWraparound(g_fm_channel_position, Step, 0, 19); + g_fm_channel_position = NUMBER_AddWithWraparound(g_fm_channel_position, scan_state_dir, 0, 19); return; } - if (g_fm_scan_state != FM_SCAN_OFF) - { + if (g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF) + { // scanning + if (g_fm_auto_scan) return; - FM_Tune(g_eeprom.fm_frequency_playing, Step, false); + FM_tune(g_eeprom.fm_frequency_playing, scan_state_dir, false); + g_request_display_screen = DISPLAY_FM; return; } if (g_eeprom.fm_channel_mode) { // we're in channel mode - const uint8_t Channel = FM_FindNextChannel(g_eeprom.fm_selected_channel + Step, Step); + const uint8_t Channel = FM_find_next_channel(g_eeprom.fm_selected_channel + scan_state_dir, scan_state_dir); if (Channel == 0xFF || g_eeprom.fm_selected_channel == Channel) goto Bail; @@ -601,11 +668,11 @@ static void FM_Key_UP_DOWN(bool key_pressed, bool key_held, int8_t Step) } else { // no, frequency mode - uint16_t Frequency = g_eeprom.fm_selected_frequency + Step; + uint16_t Frequency = g_eeprom.fm_selected_frequency + scan_state_dir; if (Frequency < BK1080_freq_lower) Frequency = BK1080_freq_upper - 1u; else - if (Frequency > (BK1080_freq_upper - 1u)) + if (Frequency >= BK1080_freq_upper) Frequency = BK1080_freq_lower; g_eeprom.fm_frequency_playing = Frequency; @@ -640,10 +707,10 @@ void FM_process_key(key_code_t Key, bool key_pressed, bool key_held) FM_Key_MENU(key_pressed, key_held); return; case KEY_UP: - FM_Key_UP_DOWN(key_pressed, key_held, 1); + FM_Key_UP_DOWN(key_pressed, key_held, FM_SCAN_STATE_DIR_UP); break; case KEY_DOWN: - FM_Key_UP_DOWN(key_pressed, key_held, -1); + FM_Key_UP_DOWN(key_pressed, key_held, FM_SCAN_STATE_DIR_DOWN); break;; case KEY_STAR: FM_Key_STAR(key_pressed, key_held); @@ -661,57 +728,3 @@ void FM_process_key(key_code_t Key, bool key_pressed, bool key_held) break; } } - -void FM_Play(void) -{ - if (!FM_CheckFrequencyLock(g_eeprom.fm_frequency_playing, BK1080_freq_lower)) - { - if (!g_fm_auto_scan) - { - g_fm_play_tick_10ms = 0; - g_fm_found_frequency = true; - - if (!g_eeprom.fm_channel_mode) - g_eeprom.fm_selected_frequency = g_eeprom.fm_frequency_playing; - - g_speaker_enabled = true; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); - - GUI_SelectNextDisplay(DISPLAY_FM); - return; - } - - if (g_fm_channel_position < ARRAY_SIZE(g_fm_channels)) - g_fm_channels[g_fm_channel_position++] = g_eeprom.fm_frequency_playing; - - if (g_fm_channel_position >= ARRAY_SIZE(g_fm_channels)) - { - FM_PlayAndUpdate(); - GUI_SelectNextDisplay(DISPLAY_FM); - return; - } - } - - if (g_fm_auto_scan && g_eeprom.fm_frequency_playing > (BK1080_freq_upper - 1)) - FM_PlayAndUpdate(); - else - FM_Tune(g_eeprom.fm_frequency_playing, g_fm_scan_state, false); - - GUI_SelectNextDisplay(DISPLAY_FM); -} - -void FM_Start(void) -{ - g_fm_radio_mode = true; - g_fm_scan_state = FM_SCAN_OFF; - g_fm_restore_tick_10ms = 0; - - // enable the FM radio chip and audio - BK1080_Init(g_eeprom.fm_frequency_playing, true); - - g_speaker_enabled = true; - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); - - g_update_display = true; - g_update_status = true; -} diff --git a/app/fm.h b/app/fm.h index 6f3416c..7e66d01 100644 --- a/app/fm.h +++ b/app/fm.h @@ -22,38 +22,38 @@ #define FM_CHANNEL_UP 0x01 #define FM_CHANNEL_DOWN 0xFF -enum { - FM_SCAN_OFF = 0, +enum fm_scan_state_dir_e { + FM_SCAN_STATE_DIR_DOWN = -1, + FM_SCAN_STATE_DIR_OFF = 0, + FM_SCAN_STATE_DIR_UP, }; +typedef enum fm_scan_state_dir_e fm_scan_state_dir_t; -extern uint16_t g_fm_channels[20]; -extern bool g_fm_radio_mode; -extern uint8_t g_fm_radio_tick_500ms; -extern volatile uint16_t g_fm_play_tick_10ms; -extern volatile int8_t g_fm_scan_state; -extern bool g_fm_auto_scan; -extern uint8_t g_fm_channel_position; -// Doubts about whether this should be signed or not -extern uint16_t g_fm_frequency_deviation; -extern bool g_fm_found_frequency; -extern bool g_fm_auto_scan; -extern uint8_t g_fm_resume_tick_500ms; -extern uint16_t g_fm_restore_tick_10ms; +extern uint16_t g_fm_channels[20]; +extern bool g_fm_radio_mode; +extern uint8_t g_fm_radio_tick_500ms; +extern volatile uint16_t g_fm_play_tick_10ms; +extern fm_scan_state_dir_t g_fm_scan_state_dir; +extern bool g_fm_auto_scan; +extern uint8_t g_fm_channel_position; +// Doubts about whether this should be signed or not +extern uint16_t g_fm_frequency_deviation; +extern bool g_fm_found_frequency; +extern bool g_fm_auto_scan; +extern uint8_t g_fm_resume_tick_500ms; +extern uint16_t g_fm_restore_tick_10ms; -bool FM_CheckValidChannel(uint8_t Channel); -uint8_t FM_FindNextChannel(uint8_t Channel, uint8_t Direction); -int FM_ConfigureChannelState(void); -void FM_TurnOff(void); -void FM_EraseChannels(void); - -void FM_Tune(uint16_t Frequency, int8_t Step, bool bFlag); -void FM_PlayAndUpdate(void); -int FM_CheckFrequencyLock(uint16_t Frequency, uint16_t LowerLimit); - -void FM_process_key(key_code_t Key, bool bKeyPressed, bool bKeyHeld); - -void FM_Play(void); -void FM_Start(void); +bool FM_check_valid_channel(const unsigned int Channel); +unsigned int FM_find_next_channel(unsigned int Channel, const fm_scan_state_dir_t scan_state_dir); +int FM_configure_channel_state(void); +void FM_erase_channels(void); +void FM_tune(uint16_t frequency, const fm_scan_state_dir_t scan_state_dir, const bool flag); +void FM_stop_scan(void); +int FM_check_frequency_lock(uint16_t Frequency, uint16_t LowerLimit); +void FM_scan(void); +void FM_turn_on(void); +void FM_turn_off(void); +void FM_process_key(key_code_t Key, bool bKeyPressed, bool bKeyHeld); #endif diff --git a/app/generic.c b/app/generic.c index 795ba60..9c4167d 100644 --- a/app/generic.c +++ b/app/generic.c @@ -142,9 +142,9 @@ void GENERIC_Key_PTT(bool key_pressed) // UART_printf("gene key 1 %u\r\n", key_pressed); #endif - if (g_scan_state_dir != SCAN_STATE_DIR_OFF || // freq/chan scanning + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || // freq/chan scanning g_current_display_screen == DISPLAY_SEARCH || // CTCSS/CDCSS scanning - g_css_scan_mode != CSS_SCAN_MODE_OFF) // " " + g_css_scan_mode != CSS_SCAN_MODE_OFF) // " " { // we're scanning .. stop if (g_current_display_screen == DISPLAY_SEARCH) @@ -174,9 +174,9 @@ void GENERIC_Key_PTT(bool key_pressed) } #ifdef ENABLE_FMRADIO - if (g_fm_scan_state != FM_SCAN_OFF) + if (g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF) { // FM radio is scanning .. stop - FM_PlayAndUpdate(); + FM_stop_scan(); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_STOP; #endif diff --git a/board.c b/board.c index 979a432..7b6efa3 100644 --- a/board.c +++ b/board.c @@ -584,7 +584,7 @@ void BOARD_eeprom_load(void) // 0E40..0E67 EEPROM_ReadBuffer(0x0E40, g_fm_channels, sizeof(g_fm_channels)); - FM_ConfigureChannelState(); + FM_configure_channel_state(); #endif // 0E90..0E97 diff --git a/driver/bk1080.c b/driver/bk1080.c index c956f32..dcd06bb 100644 --- a/driver/bk1080.c +++ b/driver/bk1080.c @@ -33,10 +33,10 @@ #if defined(ENABLE_FMRADIO_64_108) const freq_band_table_t FM_RADIO_FREQ_BAND_TABLE[] = { - {875, 1080}, - {760, 1080}, - {760, 900}, - {640, 760} + {875, 1080}, // 87.5 ~ 108 MHz + {760, 1080}, // 76 ~ 108 MHz + {760, 900}, // 76 ~ 90 MHz + {640, 760} // 64 ~ 76 MHz }; #elif defined(ENABLE_FMRADIO_875_108) const freq_band_table_t FM_RADIO_FREQ_BAND_TABLE[] = @@ -108,26 +108,32 @@ void BK1080_Init(const uint16_t frequency, const bool initialise) { unsigned int i; +// #if (ARRAY_SIZE(FM_RADIO_FREQ_BAND_TABLE) > 1) // compiler doesn't like this :( #if defined(ENABLE_FMRADIO_64_108) - // determine the lower and upper frequency limits + + // determine the lower and upper frequency limits when multiple bands are used + BK1080_freq_lower = 0xffff; BK1080_freq_upper = 0; + for (i = 0; i < ARRAY_SIZE(FM_RADIO_FREQ_BAND_TABLE); i++) { - const unsigned int lower = FM_RADIO_FREQ_BAND_TABLE[i].lower; - const unsigned int upper = FM_RADIO_FREQ_BAND_TABLE[i].upper; + const uint16_t lower = FM_RADIO_FREQ_BAND_TABLE[i].lower; + const uint16_t upper = FM_RADIO_FREQ_BAND_TABLE[i].upper; if (BK1080_freq_lower > lower) BK1080_freq_lower = lower; - if (BK1080_freq_lower > upper) - BK1080_freq_lower = upper; +// if (BK1080_freq_lower > upper) +// BK1080_freq_lower = upper; - if (BK1080_freq_upper < lower) - BK1080_freq_upper = lower; +// if (BK1080_freq_upper < lower) +// BK1080_freq_upper = lower; if (BK1080_freq_upper < upper) BK1080_freq_upper = upper; } + #else + // only 1 band is used BK1080_freq_lower = FM_RADIO_FREQ_BAND_TABLE[0].lower; BK1080_freq_upper = FM_RADIO_FREQ_BAND_TABLE[0].upper; #endif @@ -144,8 +150,8 @@ void BK1080_Init(const uint16_t frequency, const bool initialise) SYSTEM_DelayMs(250); - BK1080_WriteRegister(BK1080_REG_25_INTERNAL, 0xA83C); - BK1080_WriteRegister(BK1080_REG_25_INTERNAL, 0xA8BC); + BK1080_WriteRegister(BK1080_REG_25_INTERNAL, 0xA83C); // 1010 1000 0011 1100 + BK1080_WriteRegister(BK1080_REG_25_INTERNAL, 0xA8BC); // 1010 1000 1011 1100 SYSTEM_DelayMs(60); @@ -199,18 +205,22 @@ void BK1080_SetFrequency(uint16_t Frequency) // #if (ARRAY_SIZE(FM_RADIO_FREQ_BAND_TABLE) > 1) // compiler doesn't like this :( #if defined(ENABLE_FMRADIO_64_108) + // determine which band to use + for (band = 0; band < ARRAY_SIZE(FM_RADIO_FREQ_BAND_TABLE); band++) if (Frequency >= FM_RADIO_FREQ_BAND_TABLE[band].lower && Frequency < FM_RADIO_FREQ_BAND_TABLE[band].upper) break; if (band >= ARRAY_SIZE(FM_RADIO_FREQ_BAND_TABLE)) - { + { // out of band + Frequency = BK1080_freq_lower; // return; } BK1080_WriteRegister(BK1080_REG_05_SYSTEM_CONFIGURATION2, (SEEK_THRESHOLD << 8) | (band << 6) | (CHAN_SPACING << 4) | (VOLUME << 0)); + #endif channel = Frequency - FM_RADIO_FREQ_BAND_TABLE[band].lower; // 100kHz channel spacing diff --git a/firmware.bin b/firmware.bin index 6f2b9ce5c413a8b4a7f608dcefd093ed0f320c09..4c3222b036c4c2d3c3988a9f77325ad7c608b105 100644 GIT binary patch delta 17618 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 delta 17293 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 delta 40798 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 v`~5IQ%o{1p>chBJ0q*d|ngTRHC34Xbk@kefQNJ diff --git a/scheduler.c b/scheduler.c index b30e2bb..ad9c875 100644 --- a/scheduler.c +++ b/scheduler.c @@ -110,7 +110,7 @@ void SystickHandler(void) #endif #ifdef ENABLE_FMRADIO - if (g_fm_scan_state != FM_SCAN_OFF && + if (g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF && !g_monitor_enabled && g_current_function != FUNCTION_TRANSMIT && g_current_function != FUNCTION_RECEIVE) diff --git a/ui/fmradio.c b/ui/fmradio.c index e574b8c..3158b16 100644 --- a/ui/fmradio.c +++ b/ui/fmradio.c @@ -68,7 +68,7 @@ void UI_DisplayFM(void) { memset(str, 0, sizeof(str)); - if (g_fm_scan_state == FM_SCAN_OFF) + if (g_fm_scan_state_dir == FM_SCAN_STATE_DIR_OFF) { if (!g_eeprom.fm_channel_mode) { @@ -106,7 +106,7 @@ void UI_DisplayFM(void) const unsigned int chan = g_fm_channel_position; const uint32_t freq = g_fm_channels[chan]; UI_GenerateChannelString(str, chan, ' '); - if (FM_CheckValidChannel(chan)) + if (FM_check_valid_channel(chan)) sprintf(str + strlen(str), " (%u.%u)", freq / 10, freq % 10); } else @@ -144,7 +144,7 @@ void UI_DisplayFM(void) // ************************************* // can't do this during FM radio - audio clicks else - if (g_fm_scan_state != FM_SCAN_OFF) + if (g_fm_scan_state_dir != FM_SCAN_STATE_DIR_OFF) { const uint16_t val_07 = BK1080_ReadRegister(0x07); const uint16_t val_0A = BK1080_ReadRegister(0x0A); diff --git a/ui/ui.c b/ui/ui.c index e9b3fc0..01bfa35 100644 --- a/ui/ui.c +++ b/ui/ui.c @@ -90,8 +90,8 @@ void GUI_SelectNextDisplay(gui_display_type_t Display) g_css_scan_mode = CSS_SCAN_MODE_OFF; g_scan_state_dir = SCAN_STATE_DIR_OFF; #ifdef ENABLE_FMRADIO - g_fm_scan_state = FM_SCAN_OFF; - g_update_display = true; + g_fm_scan_state_dir = FM_SCAN_STATE_DIR_OFF; + g_update_display = true; #endif g_ask_for_confirmation = 0; g_ask_to_save = false;