diff --git a/app/action.c b/app/action.c index b747c47..19f937f 100644 --- a/app/action.c +++ b/app/action.c @@ -88,10 +88,10 @@ void ACTION_Monitor(void) g_monitor_enabled = false; - if (g_scan_state_dir != SCAN_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { g_scan_pause_delay_in_10ms = scan_pause_delay_in_1_10ms; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; g_scan_pause_mode = true; } @@ -171,7 +171,7 @@ void ACTION_Scan(bool bRestart) } #endif - if (g_screen_to_display != DISPLAY_SCANNER) + if (g_screen_to_display != DISPLAY_SEARCH) { // not scanning g_monitor_enabled = false; @@ -189,10 +189,10 @@ void ACTION_Scan(bool bRestart) { GUI_SelectNextDisplay(DISPLAY_MAIN); - if (g_scan_state_dir != SCAN_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { // already scanning - if (g_next_channel <= USER_CHANNEL_LAST) + if (g_scan_next_channel <= USER_CHANNEL_LAST) { // channel mode // keep scanning but toggle between scan lists @@ -201,14 +201,14 @@ void ACTION_Scan(bool bRestart) // jump to the next channel CHANNEL_Next(true, g_scan_state_dir); g_scan_pause_delay_in_10ms = 1; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; g_update_status = true; } else { // stop scanning - SCANNER_Stop(); + SCAN_Stop(); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_STOP; @@ -218,7 +218,7 @@ void ACTION_Scan(bool bRestart) else { // start scanning - CHANNEL_Next(true, SCAN_FWD); + CHANNEL_Next(true, SCAN_STATE_DIR_FORWARD); #ifdef ENABLE_VOICE AUDIO_SetVoiceID(0, VOICE_ID_SCANNING_BEGIN); @@ -236,14 +236,14 @@ void ACTION_Scan(bool bRestart) } else // if (!bRestart) - if (!bRestart && g_next_channel <= USER_CHANNEL_LAST) + if (!bRestart && g_scan_next_channel <= USER_CHANNEL_LAST) { // channel mode, keep scanning but toggle between scan lists g_eeprom.scan_list_default = (g_eeprom.scan_list_default + 1) % 3; // jump to the next channel CHANNEL_Next(true, g_scan_state_dir); g_scan_pause_delay_in_10ms = 1; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; g_update_status = true; } @@ -251,7 +251,7 @@ void ACTION_Scan(bool bRestart) { // stop scanning g_monitor_enabled = false; - SCANNER_Stop(); + SCAN_Stop(); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_STOP; diff --git a/app/aircopy.c b/app/aircopy.c index 7aa5505..dd6301b 100644 --- a/app/aircopy.c +++ b/app/aircopy.c @@ -84,7 +84,7 @@ void AIRCOPY_start_FSK_tx(const uint8_t request_packet) // TX the packet RADIO_SetTxParameters(); - BK4819_SetupPowerAmplifier(0, g_current_vfo->pTX->frequency); // VERY low TX power + BK4819_SetupPowerAmplifier(0, g_current_vfo->p_tx->frequency); // VERY low TX power // turn the RED LED on BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_RED, true); diff --git a/app/app.c b/app/app.c index 6b31e79..f4bee7e 100644 --- a/app/app.c +++ b/app/app.c @@ -97,14 +97,14 @@ static void APP_CheckForIncoming(void) // squelch is open - if (g_scan_state_dir == SCAN_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF) { // not RF scanning if (g_css_scan_mode != CSS_SCAN_MODE_OFF && g_rx_reception_mode == RX_MODE_NONE) { // CTCSS/DTS scanning g_scan_pause_delay_in_10ms = scan_pause_delay_in_5_10ms; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; g_rx_reception_mode = RX_MODE_DETECTED; } @@ -169,7 +169,7 @@ static void APP_CheckForIncoming(void) } g_scan_pause_delay_in_10ms = scan_pause_delay_in_3_10ms; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; } g_rx_reception_mode = RX_MODE_DETECTED; @@ -202,7 +202,7 @@ static void APP_HandleIncoming(void) return; } - flag = (g_scan_state_dir == SCAN_OFF && g_current_code_type == CODE_TYPE_NONE); + flag = (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_current_code_type == CODE_TYPE_NONE); #ifdef ENABLE_NOAA if (IS_NOAA_CHANNEL(g_rx_vfo->channel_save) && g_noaa_count_down_10ms > 0) @@ -212,13 +212,13 @@ static void APP_HandleIncoming(void) } #endif - if (g_CTCSS_lost && g_current_code_type == CODE_TYPE_CONTINUOUS_TONE) + if (g_ctcss_lost && g_current_code_type == CODE_TYPE_CONTINUOUS_TONE) { flag = true; g_found_CTCSS = false; } - if (g_CDCSS_lost && g_CDCSS_code_type == CDCSS_POSITIVE_CODE && (g_current_code_type == CODE_TYPE_DIGITAL || g_current_code_type == CODE_TYPE_REVERSE_DIGITAL)) + if (g_cdcss_lost && g_cdcss_code_type == CDCSS_POSITIVE_CODE && (g_current_code_type == CODE_TYPE_DIGITAL || g_current_code_type == CODE_TYPE_REVERSE_DIGITAL)) { g_found_CDCSS = false; } @@ -226,7 +226,7 @@ static void APP_HandleIncoming(void) if (!flag) return; - if (g_scan_state_dir == SCAN_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) { // not scanning if (g_rx_vfo->dtmf_decoding_enable || g_setting_killed) { // DTMF DCD is enabled @@ -270,7 +270,7 @@ static void APP_HandleReceive(void) goto Skip; } - if (g_scan_state_dir != SCAN_OFF && IS_FREQ_CHANNEL(g_next_channel)) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF && IS_FREQ_CHANNEL(g_scan_next_channel)) { if (g_squelch_lost) return; @@ -320,16 +320,16 @@ static void APP_HandleReceive(void) case CODE_TYPE_NONE: if (g_eeprom.squelch_level) { - if (g_CxCSS_tail_found) + if (g_cxcss_tail_found) { Mode = END_OF_RX_MODE_TTE; - g_CxCSS_tail_found = false; + g_cxcss_tail_found = false; } } break; case CODE_TYPE_CONTINUOUS_TONE: - if (g_CTCSS_lost) + if (g_ctcss_lost) { g_found_CTCSS = false; } @@ -340,16 +340,16 @@ static void APP_HandleReceive(void) g_found_CTCSS_count_down_10ms = 100; // 1 sec } - if (g_CxCSS_tail_found) + if (g_cxcss_tail_found) { Mode = END_OF_RX_MODE_TTE; - g_CxCSS_tail_found = false; + g_cxcss_tail_found = false; } break; case CODE_TYPE_DIGITAL: case CODE_TYPE_REVERSE_DIGITAL: - if (g_CDCSS_lost && g_CDCSS_code_type == CDCSS_POSITIVE_CODE) + if (g_cdcss_lost && g_cdcss_code_type == CDCSS_POSITIVE_CODE) { g_found_CDCSS = false; } @@ -360,12 +360,12 @@ static void APP_HandleReceive(void) g_found_CDCSS_count_down_10ms = 100; // 1 sec } - if (g_CxCSS_tail_found) + if (g_cxcss_tail_found) { if (BK4819_GetCTCType() == 1) Mode = END_OF_RX_MODE_TTE; - g_CxCSS_tail_found = false; + g_cxcss_tail_found = false; } break; @@ -405,7 +405,7 @@ Skip: g_update_display = true; - if (g_scan_state_dir != SCAN_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { switch (g_eeprom.scan_resume_mode) { @@ -414,11 +414,11 @@ Skip: case SCAN_RESUME_CO: g_scan_pause_delay_in_10ms = scan_pause_delay_in_7_10ms; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; break; case SCAN_RESUME_SE: - SCANNER_Stop(); + SCAN_Stop(); break; } } @@ -494,7 +494,7 @@ void APP_StartListening(function_type_t Function, const bool reset_am_fix) if (g_setting_backlight_on_tx_rx >= 2) backlight_turn_on(); - if (g_scan_state_dir != SCAN_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { switch (g_eeprom.scan_resume_mode) { @@ -502,7 +502,7 @@ void APP_StartListening(function_type_t Function, const bool reset_am_fix) if (!g_scan_pause_mode) { g_scan_pause_delay_in_10ms = scan_pause_delay_in_1_10ms; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; g_scan_pause_mode = true; } break; @@ -510,7 +510,7 @@ void APP_StartListening(function_type_t Function, const bool reset_am_fix) case SCAN_RESUME_CO: case SCAN_RESUME_SE: g_scan_pause_delay_in_10ms = 0; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; break; } @@ -521,8 +521,8 @@ void APP_StartListening(function_type_t Function, const bool reset_am_fix) if (IS_NOAA_CHANNEL(g_rx_vfo->channel_save) && g_is_noaa_mode) { g_rx_vfo->channel_save = g_noaa_channel + NOAA_CHANNEL_FIRST; - g_rx_vfo->pRX->frequency = NoaaFrequencyTable[g_noaa_channel]; - g_rx_vfo->pTX->frequency = NoaaFrequencyTable[g_noaa_channel]; + g_rx_vfo->p_rx->frequency = NOAA_FREQUENCY_TABLE[g_noaa_channel]; + g_rx_vfo->p_tx->frequency = NOAA_FREQUENCY_TABLE[g_noaa_channel]; g_eeprom.screen_channel[chan] = g_rx_vfo->channel_save; g_noaa_count_down_10ms = 500; // 5 sec g_schedule_noaa = false; @@ -532,7 +532,7 @@ void APP_StartListening(function_type_t Function, const bool reset_am_fix) if (g_css_scan_mode != CSS_SCAN_MODE_OFF) g_css_scan_mode = CSS_SCAN_MODE_FOUND; - if (g_scan_state_dir == SCAN_OFF && + if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF && g_eeprom.dual_watch != DUAL_WATCH_OFF) { // not scanning, dual watch is enabled @@ -632,6 +632,51 @@ uint32_t APP_SetFrequencyByStep(vfo_info_t *pInfo, int8_t Step) return Frequency; } +void SCAN_Stop(void) +{ + const uint8_t Previous = g_scan_restore_channel; + + if (g_scan_state_dir == SCAN_STATE_DIR_OFF) + return; // but, but, we weren't doing anything ! + + g_scan_state_dir = SCAN_STATE_DIR_OFF; + + if (!g_scan_keep_frequency) + { + if (g_scan_next_channel <= USER_CHANNEL_LAST) + { + g_eeprom.user_channel[g_eeprom.rx_vfo] = g_scan_restore_channel; + g_eeprom.screen_channel[g_eeprom.rx_vfo] = Previous; + + RADIO_ConfigureChannel(g_eeprom.rx_vfo, VFO_CONFIGURE_RELOAD); + } + else + { + g_rx_vfo->freq_config_rx.frequency = g_scan_restore_frequency; + + RADIO_ApplyOffset(g_rx_vfo); + RADIO_ConfigureSquelchAndOutputPower(g_rx_vfo); + } + + RADIO_SetupRegisters(true); + + g_update_display = true; + return; + } + + if (g_rx_vfo->channel_save > USER_CHANNEL_LAST) + { + RADIO_ApplyOffset(g_rx_vfo); + RADIO_ConfigureSquelchAndOutputPower(g_rx_vfo); + SETTINGS_SaveChannel(g_rx_vfo->channel_save, g_eeprom.rx_vfo, g_rx_vfo, 1); + return; + } + + SETTINGS_SaveVfoIndices(); + + g_update_status = true; +} + static void FREQ_NextChannel(void) { g_rx_vfo->freq_config_rx.frequency = APP_SetFrequencyByStep(g_rx_vfo, g_scan_state_dir); @@ -656,7 +701,7 @@ static void USER_NextChannel(void) const bool enabled = (g_eeprom.scan_list_default < 2) ? g_eeprom.scan_list_enabled[g_eeprom.scan_list_default] : true; const int chan1 = (g_eeprom.scan_list_default < 2) ? g_eeprom.scan_list_priority_ch1[g_eeprom.scan_list_default] : -1; const int chan2 = (g_eeprom.scan_list_default < 2) ? g_eeprom.scan_list_priority_ch2[g_eeprom.scan_list_default] : -1; - const unsigned int prev_chan = g_next_channel; + const unsigned int prev_chan = g_scan_next_channel; unsigned int chan = 0; if (enabled) @@ -664,17 +709,17 @@ static void USER_NextChannel(void) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough=" - switch (g_current_scan_list) + switch (g_scan_current_scan_list) { case SCAN_NEXT_CHAN_SCANLIST1: - prevChannel = g_next_channel; + prevChannel = g_scan_next_channel; if (chan1 >= 0) { if (RADIO_CheckValidChannel(chan1, false, 0)) { - g_current_scan_list = SCAN_NEXT_CHAN_SCANLIST1; - g_next_channel = chan1; + g_scan_current_scan_list = SCAN_NEXT_CHAN_SCANLIST1; + g_scan_next_channel = chan1; break; } } @@ -684,8 +729,8 @@ static void USER_NextChannel(void) { if (RADIO_CheckValidChannel(chan2, false, 0)) { - g_current_scan_list = SCAN_NEXT_CHAN_SCANLIST2; - g_next_channel = chan2; + g_scan_current_scan_list = SCAN_NEXT_CHAN_SCANLIST2; + g_scan_next_channel = chan2; break; } } @@ -699,16 +744,16 @@ static void USER_NextChannel(void) // chan = g_eeprom.screen_channel[chan]; // if (chan <= USER_CHANNEL_LAST) // { -// g_current_scan_list = SCAN_NEXT_CHAN_DUAL_WATCH; -// g_next_channel = chan; +// g_scan_current_scan_list = SCAN_NEXT_CHAN_DUAL_WATCH; +// g_scan_next_channel = chan; // break; // } // } default: case SCAN_NEXT_CHAN_USER: - g_current_scan_list = SCAN_NEXT_CHAN_USER; - g_next_channel = prevChannel; + g_scan_current_scan_list = SCAN_NEXT_CHAN_USER; + g_scan_next_channel = prevChannel; chan = 0xff; break; } @@ -718,7 +763,7 @@ static void USER_NextChannel(void) if (!enabled || chan == 0xff) { - chan = RADIO_FindNextChannel(g_next_channel + g_scan_state_dir, g_scan_state_dir, (g_eeprom.scan_list_default < 2) ? true : false, g_eeprom.scan_list_default); + chan = RADIO_FindNextChannel(g_scan_next_channel + g_scan_state_dir, g_scan_state_dir, (g_eeprom.scan_list_default < 2) ? true : false, g_eeprom.scan_list_default); if (chan == 0xFF) { // no valid channel found @@ -726,13 +771,13 @@ static void USER_NextChannel(void) // return; } - g_next_channel = chan; + g_scan_next_channel = chan; } - if (g_next_channel != prev_chan) + if (g_scan_next_channel != prev_chan) { - g_eeprom.user_channel[g_eeprom.rx_vfo] = g_next_channel; - g_eeprom.screen_channel[g_eeprom.rx_vfo] = g_next_channel; + g_eeprom.user_channel[g_eeprom.rx_vfo] = g_scan_next_channel; + g_eeprom.screen_channel[g_eeprom.rx_vfo] = g_scan_next_channel; RADIO_ConfigureChannel(g_eeprom.rx_vfo, VFO_CONFIGURE_RELOAD); RADIO_SetupRegisters(true); @@ -749,14 +794,14 @@ static void USER_NextChannel(void) g_scan_keep_frequency = false; if (enabled) - if (++g_current_scan_list >= SCAN_NEXT_NUM) - g_current_scan_list = SCAN_NEXT_CHAN_SCANLIST1; // back round we go + if (++g_scan_current_scan_list >= SCAN_NEXT_NUM) + g_scan_current_scan_list = SCAN_NEXT_CHAN_SCANLIST1; // back round we go } #ifdef ENABLE_NOAA static void NOAA_IncreaseChannel(void) { - if (++g_noaa_channel >= ARRAY_SIZE(NoaaFrequencyTable)) + if (++g_noaa_channel >= ARRAY_SIZE(NOAA_FREQUENCY_TABLE)) g_noaa_channel = 0; } #endif @@ -800,7 +845,7 @@ static void DUALWATCH_Alternate(void) void APP_CheckRadioInterrupts(void) { - if (g_screen_to_display == DISPLAY_SCANNER) + if (g_screen_to_display == DISPLAY_SEARCH) return; while (BK4819_ReadRegister(BK4819_REG_0C) & 1u) @@ -820,7 +865,7 @@ void APP_CheckRadioInterrupts(void) // 3 = 240deg phase shift // const uint8_t ctcss_shift = BK4819_GetCTCShift(); // if (ctcss_shift > 0) -// g_CTCSS_lost = true; +// g_ctcss_lost = true; if (interrupt_status_bits & BK4819_REG_02_DTMF_5TONE_FOUND) { // save the RX'ed DTMF character @@ -862,22 +907,22 @@ void APP_CheckRadioInterrupts(void) } if (interrupt_status_bits & BK4819_REG_02_CxCSS_TAIL) - g_CxCSS_tail_found = true; + g_cxcss_tail_found = true; if (interrupt_status_bits & BK4819_REG_02_CDCSS_LOST) { - g_CDCSS_lost = true; - g_CDCSS_code_type = BK4819_get_CDCSS_code_type(); + g_cdcss_lost = true; + g_cdcss_code_type = BK4819_get_CDCSS_code_type(); } if (interrupt_status_bits & BK4819_REG_02_CDCSS_FOUND) - g_CDCSS_lost = false; + g_cdcss_lost = false; if (interrupt_status_bits & BK4819_REG_02_CTCSS_LOST) - g_CTCSS_lost = true; + g_ctcss_lost = true; if (interrupt_status_bits & BK4819_REG_02_CTCSS_FOUND) - g_CTCSS_lost = false; + g_ctcss_lost = false; #ifdef ENABLE_VOX if (interrupt_status_bits & BK4819_REG_02_VOX_LOST) @@ -942,7 +987,7 @@ void APP_EndTransmission(void) RADIO_SendEndOfTransmission(); - if (g_current_vfo->pTX->code_type != CODE_TYPE_NONE) + if (g_current_vfo->p_tx->code_type != CODE_TYPE_NONE) { // CTCSS/DCS is enabled //if (g_eeprom.tail_note_elimination && g_eeprom.repeater_tail_tone_elimination > 0) @@ -988,7 +1033,7 @@ void APP_EndTransmission(void) if (g_current_function == FUNCTION_RECEIVE || g_current_function == FUNCTION_MONITOR) return; - if (g_scan_state_dir != SCAN_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) return; if (g_vox_noise_detected) @@ -1084,13 +1129,13 @@ void APP_Update(void) if (g_voice_write_index == 0) #endif { - if (g_screen_to_display != DISPLAY_SCANNER && - g_scan_state_dir != SCAN_OFF && - g_schedule_scan_listen && + if (g_screen_to_display != DISPLAY_SEARCH && + g_scan_state_dir != SCAN_STATE_DIR_OFF && + g_scan_schedule_scan_listen && !g_ptt_is_pressed) { // scanning - if (IS_FREQ_CHANNEL(g_next_channel)) + if (IS_FREQ_CHANNEL(g_scan_next_channel)) { if (g_current_function == FUNCTION_INCOMING) APP_StartListening(g_monitor_enabled ? FUNCTION_MONITOR : FUNCTION_RECEIVE, true); @@ -1107,19 +1152,19 @@ void APP_Update(void) g_scan_pause_mode = false; g_rx_reception_mode = RX_MODE_NONE; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; } } #ifdef ENABLE_VOICE - if (g_css_scan_mode == CSS_SCAN_MODE_SCANNING && g_schedule_scan_listen && g_voice_write_index == 0) + if (g_css_scan_mode == CSS_SCAN_MODE_SCANNING && g_scan_schedule_scan_listen && g_voice_write_index == 0) #else - if (g_css_scan_mode == CSS_SCAN_MODE_SCANNING && g_schedule_scan_listen) + if (g_css_scan_mode == CSS_SCAN_MODE_SCANNING && g_scan_schedule_scan_listen) #endif { MENU_SelectNextCode(); - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; } #ifdef ENABLE_NOAA @@ -1139,7 +1184,7 @@ void APP_Update(void) #endif // toggle between the VFO's if dual watch is enabled - if (g_screen_to_display != DISPLAY_SCANNER && g_eeprom.dual_watch != DUAL_WATCH_OFF) + if (g_screen_to_display != DISPLAY_SEARCH && g_eeprom.dual_watch != DUAL_WATCH_OFF) { #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) //UART_SendText("dual watch\r\n"); @@ -1151,7 +1196,7 @@ void APP_Update(void) { if (g_schedule_dual_watch) { - if (g_scan_state_dir == SCAN_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) { #ifdef ENABLE_FMRADIO if (!g_fm_radio_mode) @@ -1204,7 +1249,7 @@ void APP_Update(void) g_ptt_is_pressed || g_key_held || g_eeprom.battery_save == 0 || - g_scan_state_dir != SCAN_OFF || + g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF || g_screen_to_display != DISPLAY_MAIN || g_dtmf_call_state != DTMF_CALL_STATE_NONE) @@ -1230,7 +1275,7 @@ void APP_Update(void) g_ptt_is_pressed || g_key_held || g_eeprom.battery_save == 0 || - g_scan_state_dir != SCAN_OFF || + g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF || g_screen_to_display != DISPLAY_MAIN || g_dtmf_call_state != DTMF_CALL_STATE_NONE) @@ -1266,7 +1311,7 @@ void APP_Update(void) #endif if (g_eeprom.dual_watch != DUAL_WATCH_OFF && - g_scan_state_dir == SCAN_OFF && + g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) { // dual watch mode, toggle between the two VFO's DUALWATCH_Alternate(); @@ -1281,7 +1326,7 @@ void APP_Update(void) } else if (g_eeprom.dual_watch == DUAL_WATCH_OFF || - g_scan_state_dir != SCAN_OFF || + g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF || g_update_rssi) { // dual watch mode, go back to sleep @@ -1723,46 +1768,46 @@ void APP_TimeSlice10ms(void) } #endif - if (g_screen_to_display == DISPLAY_SCANNER) + if (g_screen_to_display == DISPLAY_SEARCH) { uint32_t Result; int32_t Delta; uint16_t CtcssFreq; BK4819_CSS_scan_result_t ScanResult; - g_scan_freq_css_timer_10ms++; + g_search_freq_css_timer_10ms++; - if (g_scan_delay_10ms > 0) + if (g_search_delay_10ms > 0) { - if (--g_scan_delay_10ms > 0) + if (--g_search_delay_10ms > 0) { APP_CheckKeys(); return; } } - if (g_scanner_edit_state != SCAN_EDIT_STATE_NONE) + if (g_search_edit_state != SEARCH_EDIT_STATE_NONE) { // waiting for user input choice APP_CheckKeys(); return; } g_update_display = true; - GUI_SelectNextDisplay(DISPLAY_SCANNER); + GUI_SelectNextDisplay(DISPLAY_SEARCH); - switch (g_scan_css_state) + switch (g_search_css_state) { - case SCAN_CSS_STATE_OFF: + case SEARCH_CSS_STATE_OFF: - if (g_scan_freq_css_timer_10ms >= scan_freq_css_timeout_10ms) + if (g_search_freq_css_timer_10ms >= scan_freq_css_timeout_10ms) { // FREQ/CTCSS/CDCSS search timeout - if (!g_scan_single_frequency) + if (!g_search_single_frequency) { // FREQ search timeout #ifdef ENABLE_FREQ_SEARCH_TIMEOUT BK4819_DisableFrequencyScan(); - g_scan_css_state = SCAN_CSS_STATE_FREQ_FAILED; + g_search_css_state = SEARCH_CSS_STATE_FREQ_FAILED; AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; @@ -1775,7 +1820,7 @@ void APP_TimeSlice10ms(void) #ifdef ENABLE_CODE_SEARCH_TIMEOUT BK4819_DisableFrequencyScan(); - g_scan_css_state = SCAN_CSS_STATE_FREQ_FAILED; + g_search_css_state = SEARCH_CSS_STATE_FREQ_FAILED; AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; @@ -1789,14 +1834,14 @@ void APP_TimeSlice10ms(void) break; // still scanning // accept only within 1kHz - Delta = Result - g_scan_frequency; - g_scan_hit_count = (abs(Delta) < 100) ? g_scan_hit_count + 1 : 0; + Delta = Result - g_search_frequency; + g_search_hit_count = (abs(Delta) < 100) ? g_search_hit_count + 1 : 0; BK4819_DisableFrequencyScan(); - g_scan_frequency = Result; + g_search_frequency = Result; - if (g_scan_hit_count < 3) + if (g_search_hit_count < 3) { // keep scanning for an RF carrier BK4819_EnableFrequencyScan(); } @@ -1804,32 +1849,32 @@ void APP_TimeSlice10ms(void) { // RF carrier found // stop RF the scan and move on too the CTCSS/CDCSS scan - BK4819_SetScanFrequency(g_scan_frequency); + BK4819_SetScanFrequency(g_search_frequency); - g_scan_css_result_type = CODE_TYPE_NONE; - g_scan_css_result_code = 0xff; - g_scan_hit_count = 0; - g_scan_use_css_result = false; - g_scan_freq_css_timer_10ms = 0; - g_scan_css_state = SCAN_CSS_STATE_SCANNING; + g_search_css_result_type = CODE_TYPE_NONE; + g_search_css_result_code = 0xff; + g_search_hit_count = 0; + g_search_use_css_result = false; + g_search_freq_css_timer_10ms = 0; + g_search_css_state = SEARCH_CSS_STATE_SCANNING; - GUI_SelectNextDisplay(DISPLAY_SCANNER); + GUI_SelectNextDisplay(DISPLAY_SEARCH); g_update_status = true; g_update_display = true; } - g_scan_delay_10ms = scan_freq_css_delay_10ms; + g_search_delay_10ms = scan_freq_css_delay_10ms; break; - case SCAN_CSS_STATE_SCANNING: + case SEARCH_CSS_STATE_SCANNING: - if (g_scan_freq_css_timer_10ms >= scan_freq_css_timeout_10ms) + if (g_search_freq_css_timer_10ms >= scan_freq_css_timeout_10ms) { // CTCSS/CDCSS search timeout #if defined(ENABLE_CODE_SEARCH_TIMEOUT) BK4819_Disable(); - g_scan_css_state = SCAN_CSS_STATE_FAILED; + g_search_css_state = SEARCH_CSS_STATE_FAILED; AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; @@ -1837,10 +1882,10 @@ void APP_TimeSlice10ms(void) break; #else - if (!g_scan_single_frequency) + if (!g_search_single_frequency) { BK4819_Disable(); - g_scan_css_state = SCAN_CSS_STATE_FAILED; + g_search_css_state = SEARCH_CSS_STATE_FAILED; AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; @@ -1861,10 +1906,10 @@ void APP_TimeSlice10ms(void) const uint8_t Code = DCS_GetCdcssCode(Result); if (Code != 0xFF) { - g_scan_css_result_code = Code; - g_scan_css_result_type = CODE_TYPE_DIGITAL; - g_scan_css_state = SCAN_CSS_STATE_FOUND; - g_scan_use_css_result = true; + g_search_css_result_code = Code; + g_search_css_result_type = CODE_TYPE_DIGITAL; + g_search_css_state = SEARCH_CSS_STATE_FOUND; + g_search_use_css_result = true; AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; @@ -1877,13 +1922,13 @@ void APP_TimeSlice10ms(void) const uint8_t code = DCS_GetCtcssCode(CtcssFreq); if (code != 0xFF) { - if (code == g_scan_css_result_code && - g_scan_css_result_type == CODE_TYPE_CONTINUOUS_TONE) + if (code == g_search_css_result_code && + g_search_css_result_type == CODE_TYPE_CONTINUOUS_TONE) { - if (++g_scan_hit_count >= 2) + if (++g_search_hit_count >= 2) { - g_scan_css_state = SCAN_CSS_STATE_FOUND; - g_scan_use_css_result = true; + g_search_css_state = SEARCH_CSS_STATE_FOUND; + g_search_use_css_result = true; AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; @@ -1891,26 +1936,26 @@ void APP_TimeSlice10ms(void) } } else - g_scan_hit_count = 0; + g_search_hit_count = 0; - g_scan_css_result_type = CODE_TYPE_CONTINUOUS_TONE; - g_scan_css_result_code = code; + g_search_css_result_type = CODE_TYPE_CONTINUOUS_TONE; + g_search_css_result_code = code; } } - if (g_scan_css_state == SCAN_CSS_STATE_OFF || - g_scan_css_state == SCAN_CSS_STATE_SCANNING) + if (g_search_css_state == SEARCH_CSS_STATE_OFF || + g_search_css_state == SEARCH_CSS_STATE_SCANNING) { // re-start scan - BK4819_SetScanFrequency(g_scan_frequency); - g_scan_delay_10ms = scan_freq_css_delay_10ms; + BK4819_SetScanFrequency(g_search_frequency); + g_search_delay_10ms = scan_freq_css_delay_10ms; } - GUI_SelectNextDisplay(DISPLAY_SCANNER); + GUI_SelectNextDisplay(DISPLAY_SEARCH); break; - //case SCAN_CSS_STATE_FOUND: - //case SCAN_CSS_STATE_FAILED: - //case SCAN_CSS_STATE_REPEAT: + //case SEARCH_CSS_STATE_FOUND: + //case SEARCH_CSS_STATE_FAILED: + //case SEARCH_CSS_STATE_REPEAT: default: break; } @@ -2077,11 +2122,11 @@ void APP_TimeSlice500ms(void) #endif { if (g_css_scan_mode == CSS_SCAN_MODE_OFF && - g_scan_state_dir == SCAN_OFF && - (g_screen_to_display != DISPLAY_SCANNER || - g_scan_css_state == SCAN_CSS_STATE_FOUND || - g_scan_css_state == SCAN_CSS_STATE_FAILED || - g_scan_css_state == SCAN_CSS_STATE_REPEAT)) + g_scan_state_dir == SCAN_STATE_DIR_OFF && + (g_screen_to_display != DISPLAY_SEARCH || + g_search_css_state == SEARCH_CSS_STATE_FOUND || + g_search_css_state == SEARCH_CSS_STATE_FAILED || + g_search_css_state == SEARCH_CSS_STATE_REPEAT)) { if (g_eeprom.auto_keypad_lock && @@ -2110,7 +2155,7 @@ void APP_TimeSlice500ms(void) if (g_input_box_index > 0 || g_dtmf_input_mode) AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL); /* - if (g_screen_to_display == DISPLAY_SCANNER) + if (g_screen_to_display == DISPLAY_SEARCH) { BK4819_StopScan(); @@ -2147,7 +2192,7 @@ void APP_TimeSlice500ms(void) if (disp == DISPLAY_INVALID) { #ifndef ENABLE_CODE_SEARCH_TIMEOUT - if (g_screen_to_display != DISPLAY_SCANNER) + if (g_screen_to_display != DISPLAY_SEARCH) #endif disp = DISPLAY_MAIN; } @@ -2313,27 +2358,28 @@ void CHANNEL_Next(const bool flag, const scan_state_dir_t scan_direction) { RADIO_SelectVfos(); - g_next_channel = g_rx_vfo->channel_save; - g_current_scan_list = SCAN_NEXT_CHAN_SCANLIST1; + g_scan_next_channel = g_rx_vfo->channel_save; + g_scan_current_scan_list = SCAN_NEXT_CHAN_SCANLIST1; g_scan_state_dir = scan_direction; - if (g_next_channel <= USER_CHANNEL_LAST) + if (g_scan_next_channel <= USER_CHANNEL_LAST) { // channel mode if (flag) - g_restore_channel = g_next_channel; + g_scan_restore_channel = g_scan_next_channel; USER_NextChannel(); } else { // frequency mode if (flag) - g_restore_frequency = g_rx_vfo->freq_config_rx.frequency; + g_scan_restore_frequency = g_rx_vfo->freq_config_rx.frequency; FREQ_NextChannel(); } - g_scan_pause_delay_in_10ms = scan_pause_delay_in_2_10ms; - g_schedule_scan_listen = false; - g_rx_reception_mode = RX_MODE_NONE; - g_scan_pause_mode = false; + g_scan_pause_delay_in_10ms = scan_pause_delay_in_2_10ms; + g_scan_schedule_scan_listen = false; + g_scan_pause_mode = false; + g_rx_reception_mode = RX_MODE_NONE; + g_scan_keep_frequency = false; } @@ -2457,7 +2503,7 @@ static void APP_ProcessKey(const key_code_t Key, const bool key_pressed, const b #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wtype-limits" - if (g_scan_state_dir != SCAN_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) { // FREQ/CTCSS/CDCSS scanning if ((Key >= KEY_0 && Key <= KEY_9) || Key == KEY_F) @@ -2603,8 +2649,8 @@ static void APP_ProcessKey(const key_code_t Key, const bool key_pressed, const b MENU_ProcessKeys(Key, key_pressed, key_held); break; - case DISPLAY_SCANNER: - SCANNER_ProcessKeys(Key, key_pressed, key_held); + case DISPLAY_SEARCH: + SEARCH_ProcessKeys(Key, key_pressed, key_held); break; #ifdef ENABLE_AIRCOPY @@ -2620,9 +2666,9 @@ static void APP_ProcessKey(const key_code_t Key, const bool key_pressed, const b } else #ifdef ENABLE_AIRCOPY - if (g_screen_to_display != DISPLAY_SCANNER && g_screen_to_display != DISPLAY_AIRCOPY) + if (g_screen_to_display != DISPLAY_SEARCH && g_screen_to_display != DISPLAY_AIRCOPY) #else - if (g_screen_to_display != DISPLAY_SCANNER) + if (g_screen_to_display != DISPLAY_SEARCH) #endif { ACTION_Handle(Key, key_pressed, key_held); @@ -2654,10 +2700,10 @@ Skip: g_flag_AcceptSetting = false; } - if (g_flag_stop_scan) + if (g_search_flag_stop_scan) { BK4819_StopScan(); - g_flag_stop_scan = false; + g_search_flag_stop_scan = false; } if (g_request_save_settings) @@ -2696,7 +2742,7 @@ Skip: { SETTINGS_SaveChannel(g_tx_vfo->channel_save, g_eeprom.tx_vfo, g_tx_vfo, g_request_save_channel); - if (g_screen_to_display != DISPLAY_SCANNER) + if (g_screen_to_display != DISPLAY_SEARCH) if (g_vfo_configure_mode == VFO_CONFIGURE_NONE) // 'if' is so as we don't wipe out previously setting this variable elsewhere g_vfo_configure_mode = VFO_CONFIGURE; } @@ -2761,9 +2807,9 @@ Skip: MENU_ShowCurrentSetting(); } - if (g_flag_start_scan) + if (g_search_flag_start_scan) { - g_flag_start_scan = false; + g_search_flag_start_scan = false; g_monitor_enabled = false; @@ -2772,9 +2818,7 @@ Skip: AUDIO_PlaySingleVoice(true); #endif - SCANNER_Start(); - - g_request_display_screen = DISPLAY_SCANNER; + SEARCH_Start(); } if (g_flag_prepare_tx) diff --git a/app/app.h b/app/app.h index 0727828..dad6636 100644 --- a/app/app.h +++ b/app/app.h @@ -29,6 +29,7 @@ extern const uint8_t orig_mixer; extern const uint8_t orig_pga; void APP_EndTransmission(void); +void SCAN_Stop(void); void CHANNEL_Next(const bool flag, const scan_state_dir_t scan_direction); void APP_StartListening(function_type_t Function, const bool reset_am_fix); uint32_t APP_SetFrequencyByStep(vfo_info_t *pInfo, int8_t Step); diff --git a/app/dtmf.c b/app/dtmf.c index 662b52e..d2ecc3e 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -209,7 +209,7 @@ void DTMF_HandleRequest(void) if (!g_dtmf_rx_pending) return; // nothing new received - if (g_scan_state_dir != SCAN_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode != CSS_SCAN_MODE_OFF) { // we're busy scanning DTMF_clear_RX(); return; diff --git a/app/generic.c b/app/generic.c index e77bee6..c84e2be 100644 --- a/app/generic.c +++ b/app/generic.c @@ -138,22 +138,22 @@ void GENERIC_Key_PTT(bool key_pressed) // UART_printf("gene key 1 %u\r\n", key_pressed); #endif - if (g_scan_state_dir != SCAN_OFF || // frequency/channel scanning - g_screen_to_display == DISPLAY_SCANNER || // CTCSS/CDCSS scanning + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || // frequency/channel scanning + g_screen_to_display == DISPLAY_SEARCH || // CTCSS/CDCSS scanning g_css_scan_mode != CSS_SCAN_MODE_OFF) // " " { // we're scanning .. stop - if (g_screen_to_display == DISPLAY_SCANNER) + if (g_screen_to_display == DISPLAY_SEARCH) { // CTCSS/CDCSS scanning .. stop g_eeprom.cross_vfo_rx_tx = g_backup_cross_vfo_rx_tx; - g_flag_stop_scan = true; + g_search_flag_stop_scan = true; g_vfo_configure_mode = VFO_CONFIGURE_RELOAD; g_flag_reset_vfos = true; } else - if (g_scan_state_dir != SCAN_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { // frequency/channel scanning . .stop - SCANNER_Stop(); + SCAN_Stop(); } else if (g_css_scan_mode != CSS_SCAN_MODE_OFF) diff --git a/app/main.c b/app/main.c index 25ed5ec..15f8f53 100644 --- a/app/main.c +++ b/app/main.c @@ -41,7 +41,7 @@ void toggle_chan_scanlist(void) { // toggle the selected channels scanlist setting - if (g_screen_to_display == DISPLAY_SCANNER || !IS_USER_CHANNEL(g_tx_vfo->channel_save)) + if (g_screen_to_display == DISPLAY_SEARCH || !IS_USER_CHANNEL(g_tx_vfo->channel_save)) return; if (g_tx_vfo->scanlist_1_participation) @@ -78,7 +78,8 @@ static void processFKeyFunction(const key_code_t Key) switch (Key) { - case KEY_0: + case KEY_0: // FM + #ifdef ENABLE_FMRADIO ACTION_FM(); #else @@ -90,12 +91,13 @@ static void processFKeyFunction(const key_code_t Key) #endif break; - case KEY_1: + case KEY_1: // BAND + if (!IS_FREQ_CHANNEL(g_tx_vfo->channel_save)) { - g_fkey_pressed = false; - g_update_status = true; - g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; + g_fkey_pressed = false; + g_update_status = true; + g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; return; } @@ -120,7 +122,8 @@ static void processFKeyFunction(const key_code_t Key) g_request_display_screen = DISPLAY_MAIN; break; - case KEY_2: + case KEY_2: // A/B + if (g_eeprom.cross_vfo_rx_tx == CROSS_BAND_CHAN_A) g_eeprom.cross_vfo_rx_tx = CROSS_BAND_CHAN_B; else @@ -143,7 +146,7 @@ static void processFKeyFunction(const key_code_t Key) g_request_display_screen = DISPLAY_MAIN; break; - case KEY_3: + case KEY_3: // VFO/MR #ifdef ENABLE_NOAA if (g_eeprom.vfo_open && IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save)) #else @@ -190,10 +193,11 @@ static void processFKeyFunction(const key_code_t Key) break; - case KEY_4: + case KEY_4: // FC + g_fkey_pressed = false; - g_flag_start_scan = true; - g_scan_single_frequency = false; + g_search_flag_start_scan = true; + g_search_single_frequency = false; g_backup_cross_vfo_rx_tx = g_eeprom.cross_vfo_rx_tx; g_eeprom.cross_vfo_rx_tx = CROSS_BAND_OFF; g_update_status = true; @@ -201,7 +205,8 @@ static void processFKeyFunction(const key_code_t Key) g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; break; - case KEY_5: + case KEY_5: // NOAA + #ifdef ENABLE_NOAA if (IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save)) @@ -227,12 +232,14 @@ static void processFKeyFunction(const key_code_t Key) g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; break; - case KEY_6: + case KEY_6: // H/M/L + ACTION_Power(); g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; break; - case KEY_7: + case KEY_7: // VOX + #ifdef ENABLE_VOX ACTION_Vox(); #else @@ -241,13 +248,15 @@ static void processFKeyFunction(const key_code_t Key) g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; break; - case KEY_8: + case KEY_8: // R + g_tx_vfo->frequency_reverse = g_tx_vfo->frequency_reverse == false; g_request_save_channel = 1; g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; break; - case KEY_9: + case KEY_9: // CALL + if (RADIO_CheckValidChannel(g_eeprom.chan_1_call, false, 0)) { g_eeprom.user_channel[Vfo] = g_eeprom.chan_1_call; @@ -268,6 +277,7 @@ static void processFKeyFunction(const key_code_t Key) default: g_update_status = true; g_fkey_pressed = false; + g_fkey_pressed = false; #ifdef ENABLE_FMRADIO if (!g_fm_radio_mode) @@ -382,10 +392,10 @@ static void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) Frequency = FREQ_BAND_TABLE[0].lower; } else - if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) + if (Frequency >= BX4819_BAND1.upper && Frequency < BX4819_BAND2.lower) { - const uint32_t center = (BX4819_band1.upper + BX4819_band2.lower) / 2; - Frequency = (Frequency < center) ? BX4819_band1.upper : BX4819_band2.lower; + const uint32_t center = (BX4819_BAND1.upper + BX4819_BAND2.lower) / 2; + Frequency = (Frequency < center) ? BX4819_BAND1.upper : BX4819_BAND2.lower; } else if (Frequency > FREQ_BAND_TABLE[ARRAY_SIZE(FREQ_BAND_TABLE) - 1].upper) @@ -394,7 +404,7 @@ static void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) } { - const FREQUENCY_Band_t band = FREQUENCY_GetBand(Frequency); + const frequency_band_t band = FREQUENCY_GetBand(Frequency); #ifdef ENABLE_VOICE g_another_voice_id = (voice_id_t)Key; @@ -416,10 +426,10 @@ static void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) Frequency = FREQUENCY_FloorToStep(Frequency, g_tx_vfo->step_freq, FREQ_BAND_TABLE[g_tx_vfo->band].lower); - if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) + if (Frequency >= BX4819_BAND1.upper && Frequency < BX4819_BAND2.lower) { // clamp the frequency to the limit - const uint32_t center = (BX4819_band1.upper + BX4819_band2.lower) / 2; - Frequency = (Frequency < center) ? BX4819_band1.upper - g_tx_vfo->step_freq : BX4819_band2.lower; + const uint32_t center = (BX4819_BAND1.upper + BX4819_BAND2.lower) / 2; + Frequency = (Frequency < center) ? BX4819_BAND1.upper - g_tx_vfo->step_freq : BX4819_BAND2.lower; } g_tx_vfo->freq_config_rx.frequency = Frequency; @@ -448,7 +458,7 @@ static void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) g_input_box_index = 0; Channel = (g_input_box[0] * 10) + g_input_box[1]; - if (Channel >= 1 && Channel <= ARRAY_SIZE(NoaaFrequencyTable)) + if (Channel >= 1 && Channel <= ARRAY_SIZE(NOAA_FREQUENCY_TABLE)) { Channel += NOAA_CHANNEL_FIRST; #ifdef ENABLE_VOICE @@ -492,7 +502,7 @@ static void MAIN_Key_EXIT(bool key_pressed, bool key_held) if (!g_fm_radio_mode) #endif { - if (g_scan_state_dir == SCAN_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF) { if (g_input_box_index == 0) return; @@ -507,7 +517,7 @@ static void MAIN_Key_EXIT(bool key_pressed, bool key_held) } else { - SCANNER_Stop(); + SCAN_Stop(); #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_SCANNING_STOP; @@ -570,7 +580,7 @@ static void MAIN_Key_MENU(const bool key_pressed, const bool key_held) if (g_eeprom.vfo_open && g_css_scan_mode == CSS_SCAN_MODE_OFF) { - if (g_scan_state_dir != SCAN_OFF) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF) { if (g_current_function != FUNCTION_INCOMING || g_rx_reception_mode == RX_MODE_NONE || @@ -672,9 +682,9 @@ static void MAIN_Key_STAR(bool key_pressed, bool key_held) { // pressed without the F-key #ifdef ENABLE_NOAA - if (g_scan_state_dir == SCAN_OFF && IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save)) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF && IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save)) #else - if (g_scan_state_dir == SCAN_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF) #endif { // start entering a DTMF string @@ -703,8 +713,8 @@ static void MAIN_Key_STAR(bool key_pressed, bool key_held) #endif // scan the CTCSS/DCS code - g_flag_start_scan = true; - g_scan_single_frequency = true; + g_search_flag_start_scan = true; + g_search_single_frequency = true; g_backup_cross_vfo_rx_tx = g_eeprom.cross_vfo_rx_tx; g_eeprom.cross_vfo_rx_tx = CROSS_BAND_OFF; } @@ -751,7 +761,7 @@ static void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t D g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; } - if (g_scan_state_dir == SCAN_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF) { #ifdef ENABLE_NOAA if (IS_NOT_NOAA_CHANNEL(Channel)) @@ -810,7 +820,7 @@ static void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t D // jump to the next channel CHANNEL_Next(false, Direction); g_scan_pause_delay_in_10ms = 1; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; // g_ptt_was_released = true; // why is this being set ? } diff --git a/app/menu.c b/app/menu.c index 7b21193..297dec8 100644 --- a/app/menu.c +++ b/app/menu.c @@ -88,7 +88,7 @@ void MENU_StartCssScan(int8_t Direction) MENU_SelectNextCode(); g_scan_pause_delay_in_10ms = scan_pause_delay_in_2_10ms; - g_schedule_scan_listen = false; + g_scan_schedule_scan_listen = false; } void MENU_StopCssScan(void) diff --git a/app/scanner.c b/app/scanner.c index 64bade8..ab37572 100644 --- a/app/scanner.c +++ b/app/scanner.c @@ -18,6 +18,7 @@ #include "app/generic.h" #include "app/scanner.h" #include "audio.h" +#include "board.h" #include "driver/bk4819.h" #include "driver/uart.h" #include "frequencies.h" @@ -27,30 +28,33 @@ #include "ui/inputbox.h" #include "ui/ui.h" -dcs_code_type_t g_scan_css_result_type; -uint8_t g_scan_css_result_code; -bool g_flag_start_scan; -bool g_flag_stop_scan; -bool g_scan_single_frequency; -scan_edit_state_t g_scanner_edit_state; -uint8_t g_scan_channel; -uint32_t g_scan_frequency; -bool g_scan_pause_mode; -scan_css_state_t g_scan_css_state; -volatile bool g_schedule_scan_listen = true; -volatile uint16_t g_scan_pause_delay_in_10ms; -uint16_t g_scan_freq_css_timer_10ms; -uint8_t g_scan_hit_count; -bool g_scan_use_css_result; -scan_state_dir_t g_scan_state_dir; -bool g_scan_keep_frequency; +search_css_state_t g_search_css_state; +bool g_search_use_css_result; +dcs_code_type_t g_search_css_result_type; +uint8_t g_search_css_result_code; -static void SCANNER_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) +bool g_search_flag_start_scan; +bool g_search_flag_stop_scan; + +uint8_t g_search_show_chan_prefix; + +bool g_search_single_frequency; +uint16_t g_search_freq_css_timer_10ms; +uint8_t g_search_delay_10ms; +uint8_t g_search_hit_count; + +search_edit_state_t g_search_edit_state; + +uint8_t g_search_channel; +uint32_t g_search_frequency; +step_setting_t g_search_step_setting; + +static void SEARCH_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) { if (key_held || key_pressed) return; - if (g_scanner_edit_state == SCAN_EDIT_STATE_SAVE_CHAN) + if (g_search_edit_state == SEARCH_EDIT_STATE_SAVE_CHAN) { uint16_t Channel; @@ -58,7 +62,7 @@ static void SCANNER_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) INPUTBOX_Append(Key); - g_request_display_screen = DISPLAY_SCANNER; + g_request_display_screen = DISPLAY_SEARCH; if (g_input_box_index < 3) { @@ -76,8 +80,8 @@ static void SCANNER_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) #ifdef ENABLE_VOICE g_another_voice_id = (voice_id_t)Key; #endif - g_show_chan_prefix = RADIO_CheckValidChannel(Channel, false, 0); - g_scan_channel = (uint8_t)Channel; + g_search_show_chan_prefix = RADIO_CheckValidChannel(Channel, false, 0); + g_search_channel = (uint8_t)Channel; return; } } @@ -85,21 +89,24 @@ static void SCANNER_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; } -static void SCANNER_Key_EXIT(bool key_pressed, bool key_held) +static void SEARCH_Key_EXIT(bool key_pressed, bool key_held) { if (key_held || key_pressed) return; g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; - switch (g_scanner_edit_state) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wimplicit-fallthrough=" + + switch (g_search_edit_state) { - case SCAN_EDIT_STATE_NONE: + case SEARCH_EDIT_STATE_NONE: g_eeprom.cross_vfo_rx_tx = g_backup_cross_vfo_rx_tx; g_update_status = true; - g_flag_stop_scan = true; g_vfo_configure_mode = VFO_CONFIGURE_RELOAD; g_flag_reset_vfos = true; + g_search_flag_stop_scan = true; #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_CANCEL; @@ -109,20 +116,18 @@ static void SCANNER_Key_EXIT(bool key_pressed, bool key_held) g_update_display = true; break; - case SCAN_EDIT_STATE_SAVE_CHAN: + case SEARCH_EDIT_STATE_SAVE_CHAN: if (g_input_box_index > 0) { g_input_box[--g_input_box_index] = 10; - g_request_display_screen = DISPLAY_SCANNER; + g_request_display_screen = DISPLAY_SEARCH; g_update_display = true; break; } - // Fallthrough - - case SCAN_EDIT_STATE_SAVE_CONFIRM: - g_scanner_edit_state = SCAN_EDIT_STATE_NONE; + case SEARCH_EDIT_STATE_SAVE_CONFIRM: + g_search_edit_state = SEARCH_EDIT_STATE_NONE; #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_CANCEL; @@ -132,31 +137,33 @@ static void SCANNER_Key_EXIT(bool key_pressed, bool key_held) g_update_display = true; break; } + + #pragma GCC diagnostic pop } -static void SCANNER_Key_MENU(bool key_pressed, bool key_held) +static void SEARCH_Key_MENU(bool key_pressed, bool key_held) { uint8_t Channel; if (key_held || key_pressed) return; - if (g_scan_css_state == SCAN_CSS_STATE_OFF && !g_scan_single_frequency) + if (g_search_css_state == SEARCH_CSS_STATE_OFF && !g_search_single_frequency) { g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; return; } - if (g_scan_css_state == SCAN_CSS_STATE_SCANNING) + if (g_search_css_state == SEARCH_CSS_STATE_SCANNING) { - if (g_scan_single_frequency) + if (g_search_single_frequency) { g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; return; } } - if (g_scan_css_state == SCAN_CSS_STATE_FAILED && g_scan_single_frequency) + if (g_search_css_state == SEARCH_CSS_STATE_FAILED && g_search_single_frequency) { g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; return; @@ -167,17 +174,18 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough=" - switch (g_scanner_edit_state) + switch (g_search_edit_state) { - case SCAN_EDIT_STATE_NONE: - if (!g_scan_single_frequency) + case SEARCH_EDIT_STATE_NONE: + + if (!g_search_single_frequency) { #if 0 - uint32_t Freq250 = FREQUENCY_FloorToStep(g_scan_frequency, 250, 0); - uint32_t Freq625 = FREQUENCY_FloorToStep(g_scan_frequency, 625, 0); + uint32_t Freq250 = FREQUENCY_FloorToStep(g_search_frequency, 250, 0); + uint32_t Freq625 = FREQUENCY_FloorToStep(g_search_frequency, 625, 0); - int16_t Delta250 = (int16_t)g_scan_frequency - (int16_t)Freq250; + int16_t Delta250 = (int16_t)g_search_frequency - (int16_t)Freq250; int16_t Delta625; if (125 < Delta250) @@ -186,7 +194,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) Freq250 += 250; } - Delta625 = (int16_t)g_scan_frequency - (int16_t)Freq625; + Delta625 = (int16_t)g_search_frequency - (int16_t)Freq625; if (312 < Delta625) { @@ -196,16 +204,16 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) if (Delta625 < Delta250) { - g_step_setting = STEP_6_25kHz; - g_scan_frequency = Freq625; + g_search_step_setting = STEP_6_25kHz; + g_search_frequency = Freq625; } else { - g_step_setting = STEP_2_5kHz; - g_scan_frequency = Freq250; + g_search_step_setting = STEP_2_5kHz; + g_search_frequency = Freq250; } - #elif 1 + #elif 0 #ifdef ENABLE_1250HZ_STEP const step_setting_t small_step = STEP_1_25kHz; @@ -218,11 +226,11 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) const uint32_t small_step_freq = STEP_FREQ_TABLE[small_step]; const uint32_t big_step_freq = STEP_FREQ_TABLE[big_step]; - uint32_t freq_small_step = FREQUENCY_FloorToStep(g_scan_frequency, small_step_freq, 0); - uint32_t freq_big_step = FREQUENCY_FloorToStep(g_scan_frequency, big_step_freq, 0); + uint32_t freq_small_step = FREQUENCY_FloorToStep(g_search_frequency, small_step_freq, 0); + uint32_t freq_big_step = FREQUENCY_FloorToStep(g_search_frequency, big_step_freq, 0); - int32_t delta_small_step = (int32_t)g_scan_frequency - freq_small_step; - int32_t delta_big_step = (int32_t)g_scan_frequency - freq_big_step; + int32_t delta_small_step = (int32_t)g_search_frequency - freq_small_step; + int32_t delta_big_step = (int32_t)g_search_frequency - freq_big_step; if (delta_small_step > 125) { @@ -230,7 +238,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) freq_big_step += small_step_freq; } - delta_big_step = (int32_t)g_scan_frequency - freq_big_step; + delta_big_step = (int32_t)g_search_frequency - freq_big_step; if (delta_big_step > 312) { @@ -240,13 +248,24 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) if (delta_small_step >= delta_big_step) { - g_step_setting = small_step; - g_scan_frequency = freq_small_step; + g_search_step_setting = small_step; + g_search_frequency = freq_small_step; } else { - g_step_setting = big_step; - g_scan_frequency = freq_big_step; + g_search_step_setting = big_step; + g_search_frequency = freq_big_step; + } + + #else + + // determine what the current step size is for the detected frequency + // use the 7 VFO channels/bands to determine it + const unsigned int band = (unsigned int)FREQUENCY_GetBand(g_search_frequency); + g_search_step_setting = BOARD_fetchFrequencyStepSetting(band, g_eeprom.tx_vfo); + { // round to nearest step size + const uint16_t step_size = STEP_FREQ_TABLE[g_search_step_setting]; + g_search_frequency = ((g_search_frequency + (step_size / 2)) / step_size) * step_size; } #endif @@ -254,30 +273,30 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) if (g_tx_vfo->channel_save <= USER_CHANNEL_LAST) { // save to channel - g_scan_channel = g_tx_vfo->channel_save; - g_show_chan_prefix = RADIO_CheckValidChannel(g_tx_vfo->channel_save, false, 0); - g_scanner_edit_state = SCAN_EDIT_STATE_SAVE_CHAN; + g_search_channel = g_tx_vfo->channel_save; + g_search_show_chan_prefix = RADIO_CheckValidChannel(g_tx_vfo->channel_save, false, 0); + g_search_edit_state = SEARCH_EDIT_STATE_SAVE_CHAN; } else { // save to VFO - g_scanner_edit_state = SCAN_EDIT_STATE_SAVE_CONFIRM; + g_search_edit_state = SEARCH_EDIT_STATE_SAVE_CONFIRM; } #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) //UART_SendText("edit none\r\n"); #endif - g_scan_css_state = SCAN_CSS_STATE_FOUND; + g_search_css_state = SEARCH_CSS_STATE_FOUND; #ifdef ENABLE_VOICE g_another_voice_id = VOICE_ID_MEMORY_CHANNEL; #endif - g_request_display_screen = DISPLAY_SCANNER; + g_request_display_screen = DISPLAY_SEARCH; g_update_status = true; break; - case SCAN_EDIT_STATE_SAVE_CHAN: + case SEARCH_EDIT_STATE_SAVE_CHAN: #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) UART_SendText("edit save chan\r\n"); #endif @@ -287,52 +306,52 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) if (g_input_box_index == 0) { - g_scanner_edit_state = SCAN_EDIT_STATE_SAVE_CONFIRM; + g_search_edit_state = SEARCH_EDIT_STATE_SAVE_CONFIRM; g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; - g_request_display_screen = DISPLAY_SCANNER; + g_request_display_screen = DISPLAY_SEARCH; } // break; - case SCAN_EDIT_STATE_SAVE_CONFIRM: + case SEARCH_EDIT_STATE_SAVE_CONFIRM: #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) UART_SendText("edit save confirm\r\n"); #endif - if (!g_scan_single_frequency) - { - RADIO_InitInfo(g_tx_vfo, g_tx_vfo->channel_save, g_scan_frequency); + if (!g_search_single_frequency) + { // save to VFO + RADIO_InitInfo(g_tx_vfo, g_tx_vfo->channel_save, g_search_frequency); - if (g_scan_use_css_result) + if (g_search_use_css_result) { - g_tx_vfo->freq_config_rx.code_type = g_scan_css_result_type; - g_tx_vfo->freq_config_rx.code = g_scan_css_result_code; + g_tx_vfo->freq_config_rx.code_type = g_search_css_result_type; + g_tx_vfo->freq_config_rx.code = g_search_css_result_code; } g_tx_vfo->freq_config_tx = g_tx_vfo->freq_config_rx; - g_tx_vfo->step_setting = g_step_setting; + g_tx_vfo->step_setting = g_search_step_setting; } else { RADIO_ConfigureChannel(0, VFO_CONFIGURE_RELOAD); RADIO_ConfigureChannel(1, VFO_CONFIGURE_RELOAD); - g_tx_vfo->freq_config_rx.code_type = g_scan_css_result_type; - g_tx_vfo->freq_config_rx.code = g_scan_css_result_code; + g_tx_vfo->freq_config_rx.code_type = g_search_css_result_type; + g_tx_vfo->freq_config_rx.code = g_search_css_result_code; - g_tx_vfo->freq_config_tx.code_type = g_scan_css_result_type; - g_tx_vfo->freq_config_tx.code = g_scan_css_result_code; + g_tx_vfo->freq_config_tx.code_type = g_search_css_result_type; + g_tx_vfo->freq_config_tx.code = g_search_css_result_code; } if (g_tx_vfo->channel_save <= USER_CHANNEL_LAST) { - Channel = g_scan_channel; + Channel = g_search_channel; g_eeprom.user_channel[g_eeprom.tx_vfo] = Channel; } else { - Channel = g_tx_vfo->band + FREQ_CHANNEL_FIRST; + Channel = FREQ_CHANNEL_FIRST + g_tx_vfo->band; g_eeprom.freq_channel[g_eeprom.tx_vfo] = Channel; } @@ -344,16 +363,16 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) g_another_voice_id = VOICE_ID_CONFIRM; #endif - if (!g_scan_single_frequency) + if (!g_search_single_frequency) { // FREQ/CTCSS/CDCSS search mode .. do another search - g_scan_css_state = SCAN_CSS_STATE_REPEAT; - g_scanner_edit_state = SCAN_EDIT_STATE_NONE; - g_request_display_screen = DISPLAY_SCANNER; + g_search_css_state = SEARCH_CSS_STATE_REPEAT; + g_search_edit_state = SEARCH_EDIT_STATE_NONE; + g_request_display_screen = DISPLAY_SEARCH; } else { // CTCSS/CDCSS search mode .. only do a single search - g_scan_css_state = SCAN_CSS_STATE_OFF; - g_scanner_edit_state = SCAN_EDIT_STATE_NONE; + g_search_css_state = SEARCH_CSS_STATE_OFF; + g_search_edit_state = SEARCH_EDIT_STATE_NONE; g_request_display_screen = DISPLAY_MAIN; } @@ -369,16 +388,16 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) #pragma GCC diagnostic pop } -static void SCANNER_Key_STAR(bool key_pressed, bool key_held) +static void SEARCH_Key_STAR(bool key_pressed, bool key_held) { if (key_held || key_pressed) return; - g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; - g_flag_start_scan = true; + g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; + g_search_flag_start_scan = true; } -static void SCANNER_Key_UP_DOWN(bool key_pressed, bool pKeyHeld, int8_t Direction) +static void SEARCH_Key_UP_DOWN(bool key_pressed, bool pKeyHeld, int8_t Direction) { if (pKeyHeld) { @@ -394,17 +413,17 @@ static void SCANNER_Key_UP_DOWN(bool key_pressed, bool pKeyHeld, int8_t Directio g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; } - if (g_scanner_edit_state == SCAN_EDIT_STATE_SAVE_CHAN) + if (g_search_edit_state == SEARCH_EDIT_STATE_SAVE_CHAN) { - g_scan_channel = NUMBER_AddWithWraparound(g_scan_channel, Direction, 0, USER_CHANNEL_LAST); - g_show_chan_prefix = RADIO_CheckValidChannel(g_scan_channel, false, 0); - g_request_display_screen = DISPLAY_SCANNER; + g_search_channel = NUMBER_AddWithWraparound(g_search_channel, Direction, 0, USER_CHANNEL_LAST); + g_search_show_chan_prefix = RADIO_CheckValidChannel(g_search_channel, false, 0); + g_request_display_screen = DISPLAY_SEARCH; } else g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; } -void SCANNER_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held) +void SEARCH_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held) { switch (Key) { @@ -418,22 +437,22 @@ void SCANNER_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held) case KEY_7: case KEY_8: case KEY_9: - SCANNER_Key_DIGITS(Key, key_pressed, key_held); + SEARCH_Key_DIGITS(Key, key_pressed, key_held); break; case KEY_MENU: - SCANNER_Key_MENU(key_pressed, key_held); + SEARCH_Key_MENU(key_pressed, key_held); break; case KEY_UP: - SCANNER_Key_UP_DOWN(key_pressed, key_held, 1); + SEARCH_Key_UP_DOWN(key_pressed, key_held, 1); break; case KEY_DOWN: - SCANNER_Key_UP_DOWN(key_pressed, key_held, -1); + SEARCH_Key_UP_DOWN(key_pressed, key_held, -1); break; case KEY_EXIT: - SCANNER_Key_EXIT(key_pressed, key_held); + SEARCH_Key_EXIT(key_pressed, key_held); break; case KEY_STAR: - SCANNER_Key_STAR(key_pressed, key_held); + SEARCH_Key_STAR(key_pressed, key_held); break; case KEY_PTT: GENERIC_Key_PTT(key_pressed); @@ -445,7 +464,7 @@ void SCANNER_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held) } } -void SCANNER_Start(void) +void SEARCH_Start(void) { uint8_t BackupStep; uint16_t BackupStepFreq; @@ -462,7 +481,7 @@ void SCANNER_Start(void) BackupStep = g_rx_vfo->step_setting; BackupStepFreq = g_rx_vfo->step_freq; - RADIO_InitInfo(g_rx_vfo, g_rx_vfo->channel_save, g_rx_vfo->pRX->frequency); + RADIO_InitInfo(g_rx_vfo, g_rx_vfo->channel_save, g_rx_vfo->p_rx->frequency); g_rx_vfo->step_setting = BackupStep; g_rx_vfo->step_freq = BackupStepFreq; @@ -473,19 +492,19 @@ void SCANNER_Start(void) g_is_noaa_mode = false; #endif - if (g_scan_single_frequency) + if (g_search_single_frequency) { - g_scan_css_state = SCAN_CSS_STATE_SCANNING; - g_scan_frequency = g_rx_vfo->pRX->frequency; - g_step_setting = g_rx_vfo->step_setting; + g_search_css_state = SEARCH_CSS_STATE_SCANNING; + g_search_frequency = g_rx_vfo->p_rx->frequency; + g_search_step_setting = g_rx_vfo->step_setting; - BK4819_PickRXFilterPathBasedOnFrequency(g_scan_frequency); - BK4819_SetScanFrequency(g_scan_frequency); + BK4819_PickRXFilterPathBasedOnFrequency(g_search_frequency); + BK4819_SetScanFrequency(g_search_frequency); } else { - g_scan_css_state = SCAN_CSS_STATE_OFF; - g_scan_frequency = 0xFFFFFFFF; + g_search_css_state = SEARCH_CSS_STATE_OFF; + g_search_frequency = 0xFFFFFFFF; BK4819_PickRXFilterPathBasedOnFrequency(0xFFFFFFFF); BK4819_EnableFrequencyScan(); @@ -493,67 +512,25 @@ void SCANNER_Start(void) DTMF_clear_RX(); - g_scan_delay_10ms = scan_freq_css_delay_10ms; - g_scan_css_result_type = CODE_TYPE_NONE; - g_scan_css_result_code = 0xff; - g_scan_hit_count = 0; - g_scan_use_css_result = false; - g_CxCSS_tail_found = false; - g_CDCSS_lost = false; - g_CDCSS_code_type = 0; - g_CTCSS_lost = false; - #ifdef ENABLE_VOX - g_vox_lost = false; - #endif - g_squelch_lost = false; - g_scanner_edit_state = SCAN_EDIT_STATE_NONE; - g_scan_freq_css_timer_10ms = 0; -// g_flag_start_scan = false; + #ifdef ENABLE_VOX + g_vox_lost = false; + #endif - g_update_status = true; -} - -void SCANNER_Stop(void) -{ - const uint8_t Previous = g_restore_channel; - - if (g_scan_state_dir == SCAN_OFF) - return; // but, but, we weren't doing anything ! - - g_scan_state_dir = SCAN_OFF; - - if (!g_scan_keep_frequency) - { - if (g_next_channel <= USER_CHANNEL_LAST) - { - g_eeprom.user_channel[g_eeprom.rx_vfo] = g_restore_channel; - g_eeprom.screen_channel[g_eeprom.rx_vfo] = Previous; - - RADIO_ConfigureChannel(g_eeprom.rx_vfo, VFO_CONFIGURE_RELOAD); - } - else - { - g_rx_vfo->freq_config_rx.frequency = g_restore_frequency; - - RADIO_ApplyOffset(g_rx_vfo); - RADIO_ConfigureSquelchAndOutputPower(g_rx_vfo); - } - - RADIO_SetupRegisters(true); - - g_update_display = true; - return; - } - - if (g_rx_vfo->channel_save > USER_CHANNEL_LAST) - { - RADIO_ApplyOffset(g_rx_vfo); - RADIO_ConfigureSquelchAndOutputPower(g_rx_vfo); - SETTINGS_SaveChannel(g_rx_vfo->channel_save, g_eeprom.rx_vfo, g_rx_vfo, 1); - return; - } - - SETTINGS_SaveVfoIndices(); - - g_update_status = true; + g_cxcss_tail_found = false; + g_cdcss_lost = false; + g_cdcss_code_type = 0; + g_ctcss_lost = false; + + g_squelch_lost = false; + g_search_delay_10ms = scan_freq_css_delay_10ms; + g_search_css_result_type = CODE_TYPE_NONE; + g_search_css_result_code = 0xff; + g_search_hit_count = 0; + g_search_use_css_result = false; + g_search_edit_state = SEARCH_EDIT_STATE_NONE; + g_search_freq_css_timer_10ms = 0; +// g_search_flag_start_scan = false; + + g_request_display_screen = DISPLAY_SEARCH; + g_update_status = true; } diff --git a/app/scanner.h b/app/scanner.h index 8d2de3f..5db8def 100644 --- a/app/scanner.h +++ b/app/scanner.h @@ -14,58 +14,49 @@ * limitations under the License. */ -#ifndef APP_SCANNER_H -#define APP_SCANNER_H +#ifndef APP_SEARCH_H +#define APP_SEARCH_H #include "dcs.h" #include "driver/keyboard.h" +#include "frequencies.h" -enum scan_css_state_e +enum search_css_state_e { - SCAN_CSS_STATE_OFF = 0, - SCAN_CSS_STATE_SCANNING, - SCAN_CSS_STATE_FOUND, - SCAN_CSS_STATE_FAILED, - SCAN_CSS_STATE_FREQ_FAILED, - SCAN_CSS_STATE_REPEAT + SEARCH_CSS_STATE_OFF = 0, + SEARCH_CSS_STATE_SCANNING, + SEARCH_CSS_STATE_FOUND, + SEARCH_CSS_STATE_FAILED, + SEARCH_CSS_STATE_FREQ_FAILED, + SEARCH_CSS_STATE_REPEAT }; -typedef enum scan_css_state_e scan_css_state_t; +typedef enum search_css_state_e search_css_state_t; -enum scan_state_dir_e { - SCAN_REV = -1, - SCAN_OFF = 0, - SCAN_FWD = +1 +enum search_edit_state_e { + SEARCH_EDIT_STATE_NONE = 0, + SEARCH_EDIT_STATE_SAVE_CHAN, + SEARCH_EDIT_STATE_SAVE_CONFIRM }; -typedef enum scan_state_dir_e scan_state_dir_t; +typedef enum search_edit_state_e search_edit_state_t; -enum scan_edit_state_e { - SCAN_EDIT_STATE_NONE = 0, - SCAN_EDIT_STATE_SAVE_CHAN, - SCAN_EDIT_STATE_SAVE_CONFIRM -}; -typedef enum scan_edit_state_e scan_edit_state_t; +extern search_css_state_t g_search_css_state; +extern dcs_code_type_t g_search_css_result_type; +extern uint8_t g_search_css_result_code; +extern bool g_search_flag_start_scan; +extern bool g_search_flag_stop_scan; +extern uint8_t g_search_show_chan_prefix; +extern bool g_search_single_frequency; +extern search_edit_state_t g_search_edit_state; +extern uint8_t g_search_channel; +extern uint32_t g_search_frequency; +extern step_setting_t g_search_step_setting; +extern uint16_t g_search_freq_css_timer_10ms; +extern uint8_t g_search_delay_10ms; +extern uint8_t g_search_hit_count; +extern bool g_search_use_css_result; -extern dcs_code_type_t g_scan_css_result_type; -extern uint8_t g_scan_css_result_code; -extern bool g_flag_start_scan; -extern bool g_flag_stop_scan; -extern bool g_scan_single_frequency; -extern scan_edit_state_t g_scanner_edit_state; -extern uint8_t g_scan_channel; -extern uint32_t g_scan_frequency; -extern bool g_scan_pause_mode; -extern scan_css_state_t g_scan_css_state; -extern volatile bool g_schedule_scan_listen; -extern volatile uint16_t g_scan_pause_delay_in_10ms; -extern uint16_t g_scan_freq_css_timer_10ms; -extern uint8_t g_scan_hit_count; -extern bool g_scan_use_css_result; -extern scan_state_dir_t g_scan_state_dir; -extern bool g_scan_keep_frequency; - -void SCANNER_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held); -void SCANNER_Start(void); -void SCANNER_Stop(void); +void SEARCH_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held); +void SEARCH_Start(void); #endif diff --git a/app/spectrum.c b/app/spectrum.c index c4823d1..e1f7e03 100644 --- a/app/spectrum.c +++ b/app/spectrum.c @@ -416,7 +416,7 @@ static void ToggleTX(bool on) { RegBackupSet(BK4819_REG_51, 0x0000); BK4819_SetupPowerAmplifier(gCurrentVfo->TXP_CalculatedSetting, - gCurrentVfo->pTX->Frequency); + gCurrentVfo->p_tx->Frequency); } else { RADIO_SendEndOfTransmission(); RADIO_EnableCxCSS(); @@ -1328,7 +1328,7 @@ void APP_RunSpectrum() { BackupRegisters(); // TX here coz it always? set to active VFO VFO_Info_t vfo = g_eeprom.vfo_info[g_eeprom.TX_CHANNEL]; - initialFreq = vfo.pRX->Frequency; + initialFreq = vfo.p_rx->Frequency; currentFreq = initialFreq; settings.scanStepIndex = gStepSettingToIndex[vfo.STEP_SETTING]; settings.listenBw = vfo.CHANNEL_BANDWIDTH == BANDWIDTH_WIDE diff --git a/app/uart.c b/app/uart.c index 027effe..fa13ed8 100644 --- a/app/uart.c +++ b/app/uart.c @@ -452,8 +452,8 @@ static void cmd_052F(const uint8_t *pBuffer) g_eeprom.rx_vfo = 0; g_eeprom.dtmf_side_tone = false; g_eeprom.vfo_info[0].frequency_reverse = false; - g_eeprom.vfo_info[0].pRX = &g_eeprom.vfo_info[0].freq_config_rx; - g_eeprom.vfo_info[0].pTX = &g_eeprom.vfo_info[0].freq_config_tx; + g_eeprom.vfo_info[0].p_rx = &g_eeprom.vfo_info[0].freq_config_rx; + g_eeprom.vfo_info[0].p_tx = &g_eeprom.vfo_info[0].freq_config_tx; g_eeprom.vfo_info[0].tx_offset_freq_dir = TX_OFFSET_FREQ_DIR_OFF; g_eeprom.vfo_info[0].dtmf_ptt_id_tx_mode = PTT_ID_OFF; g_eeprom.vfo_info[0].dtmf_decoding_enable = false; diff --git a/board.c b/board.c index 30297ea..d157733 100644 --- a/board.c +++ b/board.c @@ -840,11 +840,57 @@ uint32_t BOARD_fetchChannelFrequency(const int channel) uint32_t offset; } __attribute__((packed)) info; + if (channel < 0 || channel > (int)FREQ_CHANNEL_LAST) + return 0; + + if (!RADIO_CheckValidChannel(channel, false, 0)) + return 0; + EEPROM_ReadBuffer(channel * 16, &info, sizeof(info)); return info.frequency; } +unsigned int BOARD_fetchChannelStepSetting(const int channel) +{ + uint8_t data[8]; + unsigned int step_setting = 0; + + if (channel < 0) + return 0; + + if (channel <= USER_CHANNEL_LAST) + { + EEPROM_ReadBuffer(channel * 16, &data, sizeof(data)); + } + else + if (channel <= FREQ_CHANNEL_LAST) + { + EEPROM_ReadBuffer(channel * 16, &data, sizeof(data)); + } + + step_setting = (data[6] >= ARRAY_SIZE(STEP_FREQ_TABLE)) ? STEP_12_5kHz : data[6]; +// step_size = STEP_FREQ_TABLE[step_setting]; + + return step_setting; +} + +unsigned int BOARD_fetchFrequencyStepSetting(const int channel, const int vfo) +{ + uint8_t data[8]; + unsigned int step_setting = 0; + + if (channel < 0 || channel > (FREQ_CHANNEL_LAST - FREQ_CHANNEL_FIRST) || vfo < 0 || vfo >= 2) + return 0; + + EEPROM_ReadBuffer(FREQ_CHANNEL_FIRST + (channel * 16 * 2) + vfo, &data, sizeof(data)); + + step_setting = (data[6] >= ARRAY_SIZE(STEP_FREQ_TABLE)) ? STEP_12_5kHz : data[6]; +// step_size = STEP_FREQ_TABLE[step_setting]; + + return step_setting; +} + void BOARD_fetchChannelName(char *s, const int channel) { int i; @@ -854,13 +900,12 @@ void BOARD_fetchChannelName(char *s, const int channel) memset(s, 0, 11); // 's' had better be large enough ! - if (channel < 0) + if (channel < 0 || channel > (int)USER_CHANNEL_LAST) return; if (!RADIO_CheckValidChannel(channel, false, 0)) return; - EEPROM_ReadBuffer(0x0F50 + (channel * 16), s + 0, 8); EEPROM_ReadBuffer(0x0F58 + (channel * 16), s + 8, 2); diff --git a/board.h b/board.h index e07cae2..47c7da2 100644 --- a/board.h +++ b/board.h @@ -19,17 +19,19 @@ #include -void BOARD_FLASH_Init(void); -void BOARD_GPIO_Init(void); -void BOARD_PORTCON_Init(void); -void BOARD_ADC_Init(void); -void BOARD_ADC_GetBatteryInfo(uint16_t *pVoltage, uint16_t *pCurrent); -void BOARD_Init(void); -void BOARD_EEPROM_load(void); -void BOARD_EEPROM_LoadMoreSettings(void); -uint32_t BOARD_fetchChannelFrequency(const int channel); -void BOARD_fetchChannelName(char *s, const int channel); -void BOARD_FactoryReset(bool bIsAll); +void BOARD_FLASH_Init(void); +void BOARD_GPIO_Init(void); +void BOARD_PORTCON_Init(void); +void BOARD_ADC_Init(void); +void BOARD_ADC_GetBatteryInfo(uint16_t *pVoltage, uint16_t *pCurrent); +void BOARD_Init(void); +void BOARD_EEPROM_load(void); +void BOARD_EEPROM_LoadMoreSettings(void); +uint32_t BOARD_fetchChannelFrequency(const int channel); +unsigned int BOARD_fetchChannelStepSetting(const int channel); +void BOARD_fetchChannelName(char *s, const int channel); +unsigned int BOARD_fetchFrequencyStepSetting(const int channel, const int vfo); +void BOARD_FactoryReset(bool bIsAll); #endif diff --git a/firmware.bin b/firmware.bin index c58326f..9b6f79e 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 23b3a02..e07ce7e 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/frequencies.c b/frequencies.c index 67e9da8..ff9f01e 100644 --- a/frequencies.c +++ b/frequencies.c @@ -18,12 +18,12 @@ #include "misc.h" #include "settings.h" -// the initial AIRCOPY frequency to use +// the default AIRCOPY frequency to use uint32_t g_aircopy_freq = 41002500; // the BK4819 has 2 bands it covers, 18MHz ~ 630MHz and 760MHz ~ 1300MHz -const freq_band_table_t BX4819_band1 = { 1800000, 63000000}; -const freq_band_table_t BX4819_band2 = {84000000, 130000000}; +const freq_band_table_t BX4819_BAND1 = { 1800000, 63000000}; +const freq_band_table_t BX4819_BAND2 = {84000000, 130000000}; const freq_band_table_t FREQ_BAND_TABLE[7] = { @@ -49,7 +49,7 @@ const freq_band_table_t FREQ_BAND_TABLE[7] = }; #ifdef ENABLE_NOAA - const uint32_t NoaaFrequencyTable[10] = + const uint32_t NOAA_FREQUENCY_TABLE[10] = { 16255000, 16240000, @@ -72,13 +72,13 @@ const freq_band_table_t FREQ_BAND_TABLE[7] = const uint16_t STEP_FREQ_TABLE[7] = {250, 500, 625, 1000, 1250, 2500, 833}; #endif -FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency) +frequency_band_t FREQUENCY_GetBand(uint32_t Frequency) { int band; for (band = ARRAY_SIZE(FREQ_BAND_TABLE) - 1; band >= 0; band--) if (Frequency >= FREQ_BAND_TABLE[band].lower) // if (Frequency < FREQ_BAND_TABLE[band].upper) - return (FREQUENCY_Band_t)band; + return (frequency_band_t)band; return BAND1_50MHz; // return BAND_NONE; @@ -134,7 +134,7 @@ int TX_freq_check(const uint32_t Frequency) if (Frequency < FREQ_BAND_TABLE[0].lower || Frequency > FREQ_BAND_TABLE[ARRAY_SIZE(FREQ_BAND_TABLE) - 1].upper) return -1; // not allowed outside this range - if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) + if (Frequency >= BX4819_BAND1.upper && Frequency < BX4819_BAND2.lower) return -1; // BX chip does not work in this range switch (g_setting_freq_lock) @@ -202,7 +202,7 @@ int RX_freq_check(const uint32_t Frequency) if (Frequency < FREQ_BAND_TABLE[0].lower || Frequency > FREQ_BAND_TABLE[ARRAY_SIZE(FREQ_BAND_TABLE) - 1].upper) return -1; - if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) + if (Frequency >= BX4819_BAND1.upper && Frequency < BX4819_BAND2.lower) return -1; return 0; // OK frequency diff --git a/frequencies.h b/frequencies.h index 93d45ce..fbea414 100644 --- a/frequencies.h +++ b/frequencies.h @@ -21,19 +21,7 @@ #include "frequencies.h" -typedef struct { - const uint32_t lower; - const uint32_t upper; -} freq_band_table_t; - -extern uint32_t g_aircopy_freq; - -extern const freq_band_table_t BX4819_band1; -extern const freq_band_table_t BX4819_band2; - -extern const freq_band_table_t FREQ_BAND_TABLE[7]; - -enum FREQUENCY_Band_t { +enum frequency_band_e { BAND_NONE = -1, BAND1_50MHz = 0, BAND2_108MHz, @@ -43,11 +31,23 @@ enum FREQUENCY_Band_t { BAND6_400MHz, BAND7_470MHz }; -typedef enum FREQUENCY_Band_t FREQUENCY_Band_t; +typedef enum frequency_band_e frequency_band_t; + +typedef struct { + const uint32_t lower; + const uint32_t upper; +} freq_band_table_t; + +extern uint32_t g_aircopy_freq; + +extern const freq_band_table_t BX4819_BAND1; +extern const freq_band_table_t BX4819_BAND2; + +extern const freq_band_table_t FREQ_BAND_TABLE[7]; #ifdef ENABLE_1250HZ_STEP // includes 1.25kHz step - enum step_setting_t { + enum step_setting_e { STEP_1_25kHz = 0, STEP_2_5kHz, STEP_6_25kHz, @@ -58,7 +58,7 @@ typedef enum FREQUENCY_Band_t FREQUENCY_Band_t; }; #else // QS steps - enum step_setting_t { + enum step_setting_e { STEP_2_5kHz = 0, STEP_5_0kHz, STEP_6_25kHz, @@ -68,15 +68,15 @@ typedef enum FREQUENCY_Band_t FREQUENCY_Band_t; STEP_8_33kHz }; #endif -typedef enum step_setting_t step_setting_t; +typedef enum step_setting_e step_setting_t; -extern const uint16_t STEP_FREQ_TABLE[7]; +extern const uint16_t STEP_FREQ_TABLE[7]; #ifdef ENABLE_NOAA - extern const uint32_t NoaaFrequencyTable[10]; + extern const uint32_t NOAA_FREQUENCY_TABLE[10]; #endif -FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency); +frequency_band_t FREQUENCY_GetBand(uint32_t Frequency); uint8_t FREQUENCY_CalculateOutputPower(uint8_t TxpLow, uint8_t TxpMid, uint8_t TxpHigh, int32_t LowerLimit, int32_t Middle, int32_t UpperLimit, int32_t Frequency); uint32_t FREQUENCY_FloorToStep(uint32_t Upper, uint32_t Step, uint32_t Lower); diff --git a/functions.c b/functions.c index 9eecdca..c3fd8be 100644 --- a/functions.c +++ b/functions.c @@ -49,7 +49,7 @@ void FUNCTION_Init(void) { g_current_code_type = g_selected_code_type; if (g_css_scan_mode == CSS_SCAN_MODE_OFF) - g_current_code_type = g_rx_vfo->am_mode ? CODE_TYPE_NONE : g_rx_vfo->pRX->code_type; + g_current_code_type = g_rx_vfo->am_mode ? CODE_TYPE_NONE : g_rx_vfo->p_rx->code_type; } #ifdef ENABLE_NOAA else @@ -58,9 +58,9 @@ void FUNCTION_Init(void) DTMF_clear_RX(); - g_CxCSS_tail_found = false; - g_CDCSS_lost = false; - g_CTCSS_lost = false; + g_cxcss_tail_found = false; + g_cdcss_lost = false; + g_ctcss_lost = false; #ifdef ENABLE_VOX g_vox_lost = false; diff --git a/misc.c b/misc.c index 7f2690b..019bde6 100644 --- a/misc.c +++ b/misc.c @@ -156,6 +156,11 @@ volatile bool g_tx_timeout_reached; volatile uint16_t g_tail_tone_elimination_count_down_10ms; +bool g_scan_pause_mode; +volatile bool g_scan_schedule_scan_listen = true; +volatile uint16_t g_scan_pause_delay_in_10ms; +scan_state_dir_t g_scan_state_dir; + #ifdef ENABLE_NOAA volatile uint16_t g_noaa_count_down_10ms; #endif @@ -201,10 +206,10 @@ bool g_flag_save_channel; #ifdef ENABLE_FMRADIO bool g_flag_SaveFM; #endif -bool g_CDCSS_lost; -uint8_t g_CDCSS_code_type; -bool g_CTCSS_lost; -bool g_CxCSS_tail_found; +bool g_cdcss_lost; +uint8_t g_cdcss_code_type; +bool g_ctcss_lost; +bool g_cxcss_tail_found; #ifdef ENABLE_VOX bool g_vox_lost; bool g_vox_noise_detected; @@ -216,12 +221,13 @@ uint8_t g_flash_light_state; volatile uint16_t g_flash_light_blink_counter; bool g_flag_end_tx; uint16_t g_low_batteryCountdown; -uint8_t g_next_channel; reception_mode_t g_rx_reception_mode; -uint8_t g_restore_channel; -scan_next_chan_t g_current_scan_list; -uint32_t g_restore_frequency; +uint8_t g_scan_next_channel; +uint8_t g_scan_restore_channel; +scan_next_chan_t g_scan_current_scan_list; +uint32_t g_scan_restore_frequency; +bool g_scan_keep_frequency; bool g_rx_vfo_is_active; #ifdef ENABLE_ALARM @@ -230,7 +236,6 @@ bool g_rx_vfo_is_active; #endif uint8_t g_menu_list_count; uint8_t g_backup_cross_vfo_rx_tx; -uint8_t g_scan_delay_10ms; #ifdef ENABLE_NOAA bool g_is_noaa_mode; @@ -241,8 +246,6 @@ bool g_update_display; bool g_unhide_hidden = false; -uint8_t g_show_chan_prefix; - volatile bool g_next_time_slice; volatile uint8_t g_found_CDCSS_count_down_10ms; volatile uint8_t g_found_CTCSS_count_down_10ms; diff --git a/misc.h b/misc.h index b816e29..44ffb05 100644 --- a/misc.h +++ b/misc.h @@ -101,6 +101,13 @@ enum scan_next_chan_e { }; typedef enum scan_next_chan_e scan_next_chan_t; +enum scan_state_dir_e { + SCAN_STATE_DIR_REVERSE = -1, + SCAN_STATE_DIR_OFF = 0, + SCAN_STATE_DIR_FORWARD = +1 +}; +typedef enum scan_state_dir_e scan_state_dir_t; + extern const uint8_t obfuscate_array[16]; extern const uint8_t fm_resume_countdown_500ms; @@ -231,6 +238,11 @@ extern volatile bool g_tx_timeout_reached; extern volatile uint16_t g_tail_tone_elimination_count_down_10ms; +extern bool g_scan_pause_mode; +extern volatile bool g_scan_schedule_scan_listen; +extern volatile uint16_t g_scan_pause_delay_in_10ms; +extern scan_state_dir_t g_scan_state_dir; + #ifdef ENABLE_FMRADIO extern volatile uint16_t g_fm_play_count_down_10ms; #endif @@ -276,10 +288,10 @@ extern bool g_flag_save_channel; #ifdef ENABLE_FMRADIO extern bool g_flag_SaveFM; #endif -extern bool g_CDCSS_lost; -extern uint8_t g_CDCSS_code_type; -extern bool g_CTCSS_lost; -extern bool g_CxCSS_tail_found; +extern bool g_cdcss_lost; +extern uint8_t g_cdcss_code_type; +extern bool g_ctcss_lost; +extern bool g_cxcss_tail_found; #ifdef ENABLE_VOX extern bool g_vox_lost; extern bool g_vox_noise_detected; @@ -291,19 +303,19 @@ extern uint8_t g_flash_light_state; extern volatile uint16_t g_flash_light_blink_counter; extern bool g_flag_end_tx; extern uint16_t g_low_batteryCountdown; -extern uint8_t g_next_channel; extern reception_mode_t g_rx_reception_mode; -extern uint8_t g_restore_channel; -extern scan_next_chan_t g_current_scan_list; -extern uint32_t g_restore_frequency; +extern uint8_t g_scan_next_channel; +extern uint8_t g_scan_restore_channel; +extern scan_next_chan_t g_scan_current_scan_list; +extern uint32_t g_scan_restore_frequency; +extern bool g_scan_keep_frequency; extern bool g_rx_vfo_is_active; extern uint8_t g_alarm_tone_counter; extern uint16_t g_alarm_running_counter; extern uint8_t g_menu_list_count; extern uint8_t g_backup_cross_vfo_rx_tx; -extern uint8_t g_scan_delay_10ms; #ifdef ENABLE_NOAA extern bool g_is_noaa_mode; extern uint8_t g_noaa_channel; @@ -314,7 +326,6 @@ extern bool g_unhide_hidden; #ifdef ENABLE_FMRADIO extern uint8_t g_fm_channel_position; #endif -extern uint8_t g_show_chan_prefix; extern volatile uint8_t g_found_CDCSS_count_down_10ms; extern volatile uint8_t g_found_CTCSS_count_down_10ms; #ifdef ENABLE_VOX diff --git a/radio.c b/radio.c index 600f99a..1ec4ccb 100644 --- a/radio.c +++ b/radio.c @@ -41,7 +41,6 @@ vfo_info_t *g_current_vfo; dcs_code_type_t g_selected_code_type; dcs_code_type_t g_current_code_type; uint8_t g_selected_code; -step_setting_t g_step_setting; vfo_state_t g_vfo_state[2]; bool RADIO_CheckValidChannel(uint16_t Channel, bool bCheckScanList, uint8_t VFO) @@ -119,17 +118,17 @@ void RADIO_InitInfo(vfo_info_t *pInfo, const uint8_t ChannelSave, const uint32_t memset(pInfo, 0, sizeof(*pInfo)); pInfo->band = FREQUENCY_GetBand(Frequency); - pInfo->scanlist_1_participation = true; - pInfo->scanlist_2_participation = true; + pInfo->scanlist_1_participation = true; + pInfo->scanlist_2_participation = true; pInfo->step_setting = STEP_12_5kHz; - pInfo->step_freq = STEP_FREQ_TABLE[pInfo->step_setting]; + pInfo->step_freq = STEP_FREQ_TABLE[pInfo->step_setting]; pInfo->channel_save = ChannelSave; - pInfo->frequency_reverse = false; + pInfo->frequency_reverse = false; pInfo->output_power = OUTPUT_POWER_LOW; pInfo->freq_config_rx.frequency = Frequency; pInfo->freq_config_tx.frequency = Frequency; - pInfo->pRX = &pInfo->freq_config_rx; - pInfo->pTX = &pInfo->freq_config_tx; + pInfo->p_rx = &pInfo->freq_config_rx; + pInfo->p_tx = &pInfo->freq_config_tx; pInfo->compander = 0; // off if (ChannelSave == (FREQ_CHANNEL_FIRST + BAND2_108MHz)) @@ -164,7 +163,7 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure #ifdef ENABLE_NOAA if (Channel >= NOAA_CHANNEL_FIRST) { - RADIO_InitInfo(pRadio, g_eeprom.screen_channel[VFO], NoaaFrequencyTable[Channel - NOAA_CHANNEL_FIRST]); + RADIO_InitInfo(pRadio, g_eeprom.screen_channel[VFO], NOAA_FREQUENCY_TABLE[Channel - NOAA_CHANNEL_FIRST]); if (g_eeprom.cross_vfo_rx_tx == CROSS_BAND_OFF) return; @@ -178,7 +177,7 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure if (Channel <= USER_CHANNEL_LAST) { - Channel = RADIO_FindNextChannel(Channel, SCAN_FWD, false, VFO); + Channel = RADIO_FindNextChannel(Channel, SCAN_STATE_DIR_FORWARD, false, VFO); if (Channel == 0xFF) { Channel = g_eeprom.freq_channel[VFO]; @@ -394,18 +393,18 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure if (!g_eeprom.vfo_info[VFO].frequency_reverse) { - g_eeprom.vfo_info[VFO].pRX = &g_eeprom.vfo_info[VFO].freq_config_rx; - g_eeprom.vfo_info[VFO].pTX = &g_eeprom.vfo_info[VFO].freq_config_tx; + g_eeprom.vfo_info[VFO].p_rx = &g_eeprom.vfo_info[VFO].freq_config_rx; + g_eeprom.vfo_info[VFO].p_tx = &g_eeprom.vfo_info[VFO].freq_config_tx; } else { - g_eeprom.vfo_info[VFO].pRX = &g_eeprom.vfo_info[VFO].freq_config_tx; - g_eeprom.vfo_info[VFO].pTX = &g_eeprom.vfo_info[VFO].freq_config_rx; + g_eeprom.vfo_info[VFO].p_rx = &g_eeprom.vfo_info[VFO].freq_config_tx; + g_eeprom.vfo_info[VFO].p_tx = &g_eeprom.vfo_info[VFO].freq_config_rx; } if (!g_setting_350_enable) { - freq_config_t *pConfig = g_eeprom.vfo_info[VFO].pRX; + freq_config_t *pConfig = g_eeprom.vfo_info[VFO].p_rx; if (pConfig->frequency >= 35000000 && pConfig->frequency < 40000000) // not allowed in this range pConfig->frequency = 43300000; // hop onto the ham band } @@ -426,12 +425,12 @@ void RADIO_ConfigureChannel(const unsigned int VFO, const unsigned int configure void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *pInfo) { uint8_t TX_power[3]; - FREQUENCY_Band_t Band; + frequency_band_t Band; // ******************************* // squelch - Band = FREQUENCY_GetBand(pInfo->pRX->frequency); + Band = FREQUENCY_GetBand(pInfo->p_rx->frequency); uint16_t Base = (Band < BAND4_174MHz) ? 0x1E60 : 0x1E00; if (g_eeprom.squelch_level == 0) @@ -522,7 +521,7 @@ void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *pInfo) // 1F20 5A 5A 5A 64 64 64 8F 91 8A FF FF FF FF FF FF FF .. 400 MHz // 1F30 32 32 32 64 64 64 8C 8C 8C FF FF FF FF FF FF FF .. 470 MHz - Band = FREQUENCY_GetBand(pInfo->pTX->frequency); + Band = FREQUENCY_GetBand(pInfo->p_tx->frequency); EEPROM_ReadBuffer(0x1ED0 + (Band * 16) + (pInfo->output_power * 3), TX_power, 3); @@ -533,7 +532,7 @@ void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *pInfo) FREQ_BAND_TABLE[Band].lower, (FREQ_BAND_TABLE[Band].lower + FREQ_BAND_TABLE[Band].upper) / 2, FREQ_BAND_TABLE[Band].upper, - pInfo->pTX->frequency); + pInfo->p_tx->frequency); // ******************************* } @@ -633,11 +632,11 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) #ifdef ENABLE_NOAA if (IS_NOT_NOAA_CHANNEL(g_rx_vfo->channel_save) || !g_is_noaa_mode) - Frequency = g_rx_vfo->pRX->frequency; + Frequency = g_rx_vfo->p_rx->frequency; else - Frequency = NoaaFrequencyTable[g_noaa_channel]; + Frequency = NOAA_FREQUENCY_TABLE[g_noaa_channel]; #else - Frequency = g_rx_vfo->pRX->frequency; + Frequency = g_rx_vfo->p_rx->frequency; #endif BK4819_SetFrequency(Frequency); @@ -666,8 +665,8 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) uint8_t Code = g_selected_code; if (g_css_scan_mode == CSS_SCAN_MODE_OFF) { - code_type = g_rx_vfo->pRX->code_type; - Code = g_rx_vfo->pRX->code; + code_type = g_rx_vfo->p_rx->code_type; + Code = g_rx_vfo->p_rx->code; } switch (code_type) @@ -865,7 +864,7 @@ void RADIO_SetTxParameters(void) #pragma GCC diagnostic pop - BK4819_SetFrequency(g_current_vfo->pTX->frequency); + BK4819_SetFrequency(g_current_vfo->p_tx->frequency); // TX compressor BK4819_SetCompander((g_rx_vfo->am_mode == 0 && (g_rx_vfo->compander == 1 || g_rx_vfo->compander >= 3)) ? g_rx_vfo->compander : 0); @@ -874,17 +873,17 @@ void RADIO_SetTxParameters(void) SYSTEM_DelayMs(10); - BK4819_PickRXFilterPathBasedOnFrequency(g_current_vfo->pTX->frequency); + BK4819_PickRXFilterPathBasedOnFrequency(g_current_vfo->p_tx->frequency); BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1, true); SYSTEM_DelayMs(5); - BK4819_SetupPowerAmplifier(g_current_vfo->txp_calculated_setting, g_current_vfo->pTX->frequency); + BK4819_SetupPowerAmplifier(g_current_vfo->txp_calculated_setting, g_current_vfo->p_tx->frequency); SYSTEM_DelayMs(10); - switch (g_current_vfo->pTX->code_type) + switch (g_current_vfo->p_tx->code_type) { default: case CODE_TYPE_NONE: @@ -892,12 +891,12 @@ void RADIO_SetTxParameters(void) break; case CODE_TYPE_CONTINUOUS_TONE: - BK4819_SetCTCSSFrequency(CTCSS_OPTIONS[g_current_vfo->pTX->code]); + BK4819_SetCTCSSFrequency(CTCSS_OPTIONS[g_current_vfo->p_tx->code]); break; case CODE_TYPE_DIGITAL: case CODE_TYPE_REVERSE_DIGITAL: - BK4819_SetCDCSSCodeWord(DCS_GetGolayCodeWord(g_current_vfo->pTX->code_type, g_current_vfo->pTX->code)); + BK4819_SetCDCSSCodeWord(DCS_GetGolayCodeWord(g_current_vfo->p_tx->code_type, g_current_vfo->p_tx->code)); break; } } @@ -981,7 +980,7 @@ void RADIO_PrepareTX(void) State = VFO_STATE_TX_DISABLE; } else - if (TX_freq_check(g_current_vfo->pTX->frequency) == 0) + if (TX_freq_check(g_current_vfo->p_tx->frequency) == 0) { // TX frequency is allowed if (g_current_vfo->busy_channel_lock && g_current_function == FUNCTION_RECEIVE) State = VFO_STATE_BUSY; // busy RX'ing a station @@ -1052,7 +1051,7 @@ void RADIO_PrepareTX(void) void RADIO_EnableCxCSS(void) { - switch (g_current_vfo->pTX->code_type) + switch (g_current_vfo->p_tx->code_type) { default: case CODE_TYPE_NONE: diff --git a/radio.h b/radio.h index 6637517..b5d5cd6 100644 --- a/radio.h +++ b/radio.h @@ -20,7 +20,7 @@ #include #include -#include "app/scanner.h" +#include "misc.h" #include "dcs.h" #include "frequencies.h" @@ -74,8 +74,8 @@ typedef struct vfo_info_t { freq_config_t freq_config_rx; freq_config_t freq_config_tx; - freq_config_t *pRX; - freq_config_t *pTX; + freq_config_t *p_rx; + freq_config_t *p_tx; uint32_t tx_offset_freq; uint16_t step_freq; @@ -124,8 +124,6 @@ extern dcs_code_type_t g_selected_code_type; extern dcs_code_type_t g_current_code_type; extern uint8_t g_selected_code; -extern step_setting_t g_step_setting; - extern vfo_state_t g_vfo_state[2]; bool RADIO_CheckValidChannel(uint16_t ChNum, bool bCheckScanList, uint8_t RadioNum); diff --git a/scheduler.c b/scheduler.c index 1080777..d44b6e6 100644 --- a/scheduler.c +++ b/scheduler.c @@ -78,20 +78,20 @@ void SystickHandler(void) if (g_current_function == FUNCTION_POWER_SAVE) DECREMENT_AND_TRIGGER(g_power_save_10ms, g_power_save_expired); - if (g_scan_state_dir == SCAN_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF && g_eeprom.dual_watch != DUAL_WATCH_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF && g_eeprom.dual_watch != DUAL_WATCH_OFF) if (g_current_function != FUNCTION_MONITOR && g_current_function != FUNCTION_TRANSMIT && g_current_function != FUNCTION_RECEIVE) DECREMENT_AND_TRIGGER(g_dual_watch_count_down_10ms, g_schedule_dual_watch); #ifdef ENABLE_NOAA - if (g_scan_state_dir == SCAN_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF && g_eeprom.dual_watch == DUAL_WATCH_OFF) + if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF && g_eeprom.dual_watch == DUAL_WATCH_OFF) if (g_is_noaa_mode && g_current_function != FUNCTION_MONITOR && g_current_function != FUNCTION_TRANSMIT) if (g_current_function != FUNCTION_RECEIVE) DECREMENT_AND_TRIGGER(g_noaa_count_down_10ms, g_schedule_noaa); #endif - if (g_scan_state_dir != SCAN_OFF || g_css_scan_mode == CSS_SCAN_MODE_SCANNING) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || g_css_scan_mode == CSS_SCAN_MODE_SCANNING) if (g_current_function != FUNCTION_MONITOR && g_current_function != FUNCTION_TRANSMIT) - DECREMENT_AND_TRIGGER(g_scan_pause_delay_in_10ms, g_schedule_scan_listen); + DECREMENT_AND_TRIGGER(g_scan_pause_delay_in_10ms, g_scan_schedule_scan_listen); DECREMENT_AND_TRIGGER(g_tail_tone_elimination_count_down_10ms, g_flag_tail_tone_elimination_complete); diff --git a/ui/main.c b/ui/main.c index a0d17e7..f1ee89d 100644 --- a/ui/main.c +++ b/ui/main.c @@ -599,12 +599,12 @@ void UI_DisplayMain(void) } else { - uint32_t frequency = g_eeprom.vfo_info[vfo_num].pRX->frequency; + uint32_t frequency = g_eeprom.vfo_info[vfo_num].p_rx->frequency; if (g_current_function == FUNCTION_TRANSMIT) { // transmitting channel = (g_eeprom.cross_vfo_rx_tx == CROSS_BAND_OFF) ? g_eeprom.rx_vfo : g_eeprom.tx_vfo; if (channel == vfo_num) - frequency = g_eeprom.vfo_info[vfo_num].pTX->frequency; + frequency = g_eeprom.vfo_info[vfo_num].p_tx->frequency; } if (g_eeprom.screen_channel[vfo_num] <= USER_CHANNEL_LAST) @@ -741,7 +741,7 @@ void UI_DisplayMain(void) } else { // or show the CTCSS/DCS symbol - const freq_config_t *pConfig = (mode == 1) ? g_eeprom.vfo_info[vfo_num].pTX : g_eeprom.vfo_info[vfo_num].pRX; + const freq_config_t *pConfig = (mode == 1) ? g_eeprom.vfo_info[vfo_num].p_tx : g_eeprom.vfo_info[vfo_num].p_rx; const unsigned int code_type = pConfig->code_type; const char *code_list[] = {"", "CT", "DCS", "DCR"}; if (code_type < ARRAY_SIZE(code_list)) diff --git a/ui/scanner.c b/ui/scanner.c index bc5e9b0..9e8e94a 100644 --- a/ui/scanner.c +++ b/ui/scanner.c @@ -29,12 +29,12 @@ #include "ui/scanner.h" #include "ui/ui.h" -void UI_DisplayScanner(void) +void UI_DisplaySearch(void) { char String[17]; bool text_centered = false; - if (g_screen_to_display != DISPLAY_SCANNER) + if (g_screen_to_display != DISPLAY_SEARCH) return; // clear display buffer @@ -46,27 +46,27 @@ void UI_DisplayScanner(void) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough=" - switch (g_scan_css_state) + switch (g_search_css_state) { default: - case SCAN_CSS_STATE_OFF: - if (!g_scan_single_frequency) + case SEARCH_CSS_STATE_OFF: + if (!g_search_single_frequency) { strcpy(String, "FREQ scanning"); break; } - case SCAN_CSS_STATE_SCANNING: - case SCAN_CSS_STATE_FOUND: - case SCAN_CSS_STATE_FAILED: - case SCAN_CSS_STATE_REPEAT: + case SEARCH_CSS_STATE_SCANNING: + case SEARCH_CSS_STATE_FOUND: + case SEARCH_CSS_STATE_FAILED: + case SEARCH_CSS_STATE_REPEAT: { - const uint32_t freq = g_scan_frequency; + const uint32_t freq = g_search_frequency; sprintf(String, "FREQ %u.%05u", freq / 100000, freq % 100000); } break; - case SCAN_CSS_STATE_FREQ_FAILED: + case SEARCH_CSS_STATE_FREQ_FAILED: strcpy(String, "FREQ none found"); break; } @@ -80,37 +80,37 @@ void UI_DisplayScanner(void) memset(String, 0, sizeof(String)); - switch (g_scan_css_state) + switch (g_search_css_state) { default: - case SCAN_CSS_STATE_OFF: + case SEARCH_CSS_STATE_OFF: strcpy(String, "CODE"); break; - case SCAN_CSS_STATE_SCANNING: + case SEARCH_CSS_STATE_SCANNING: strcpy(String, "CODE scanning"); break; - case SCAN_CSS_STATE_FOUND: - case SCAN_CSS_STATE_REPEAT: + case SEARCH_CSS_STATE_FOUND: + case SEARCH_CSS_STATE_REPEAT: - switch (g_scan_css_result_type) + switch (g_search_css_result_type) { default: case CODE_TYPE_NONE: strcpy(String, "CODE none found"); break; case CODE_TYPE_CONTINUOUS_TONE: - sprintf(String, "CTCSS %u.%uHz", CTCSS_OPTIONS[g_scan_css_result_code] / 10, CTCSS_OPTIONS[g_scan_css_result_code] % 10); + sprintf(String, "CTCSS %u.%uHz", CTCSS_OPTIONS[g_search_css_result_code] / 10, CTCSS_OPTIONS[g_search_css_result_code] % 10); break; case CODE_TYPE_DIGITAL: case CODE_TYPE_REVERSE_DIGITAL: - sprintf(String, "CDCSS D%03oN", DCS_OPTIONS[g_scan_css_result_code]); + sprintf(String, "CDCSS D%03oN", DCS_OPTIONS[g_search_css_result_code]); break; } break; - case SCAN_CSS_STATE_FAILED: + case SEARCH_CSS_STATE_FAILED: strcpy(String, "CODE none found"); break; } @@ -125,36 +125,36 @@ void UI_DisplayScanner(void) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough=" - switch (g_scanner_edit_state) + switch (g_search_edit_state) { default: - case SCAN_EDIT_STATE_NONE: + case SEARCH_EDIT_STATE_NONE: - switch (g_scan_css_state) + switch (g_search_css_state) { default: - case SCAN_CSS_STATE_OFF: - case SCAN_CSS_STATE_SCANNING: // rolling indicator + case SEARCH_CSS_STATE_OFF: + case SEARCH_CSS_STATE_SCANNING: // rolling indicator memset(String, 0, sizeof(String)); memset(String, '.', 15); - String[(g_scan_freq_css_timer_10ms / 32) % 15] = '#'; + String[(g_search_freq_css_timer_10ms / 32) % 15] = '#'; break; - case SCAN_CSS_STATE_FOUND: + case SEARCH_CSS_STATE_FOUND: strcpy(String, "* repeat M save"); text_centered = true; break; - case SCAN_CSS_STATE_FAILED: - if (!g_scan_single_frequency) + case SEARCH_CSS_STATE_FAILED: + if (!g_search_single_frequency) { strcpy(String, "* repeat M save"); text_centered = true; break; } - case SCAN_CSS_STATE_FREQ_FAILED: - case SCAN_CSS_STATE_REPEAT: + case SEARCH_CSS_STATE_FREQ_FAILED: + case SEARCH_CSS_STATE_REPEAT: strcpy(String, "* repeat"); text_centered = true; break; @@ -162,18 +162,18 @@ void UI_DisplayScanner(void) break; - case SCAN_EDIT_STATE_SAVE_CHAN: + case SEARCH_EDIT_STATE_SAVE_CHAN: strcpy(String, "SAVE "); { char s[11]; - BOARD_fetchChannelName(s, g_scan_channel); + BOARD_fetchChannelName(s, g_search_channel); if (s[0] == 0) - UI_GenerateChannelStringEx(s, g_show_chan_prefix ? "CH-" : "", g_scan_channel); + UI_GenerateChannelStringEx(s, g_search_show_chan_prefix ? "CH-" : "", g_search_channel); strcat(String, s); } break; - case SCAN_EDIT_STATE_SAVE_CONFIRM: + case SEARCH_EDIT_STATE_SAVE_CONFIRM: strcpy(String, "* repeat Save ?"); text_centered = true; break; diff --git a/ui/scanner.h b/ui/scanner.h index ab04aff..9eefa4e 100644 --- a/ui/scanner.h +++ b/ui/scanner.h @@ -17,7 +17,7 @@ #ifndef UI_SCANNER_H #define UI_SCANNER_H -void UI_DisplayScanner(void); +void UI_DisplaySearch(void); #endif diff --git a/ui/status.c b/ui/status.c index d0d4799..d6e2090 100644 --- a/ui/status.c +++ b/ui/status.c @@ -95,9 +95,9 @@ void UI_DisplayStatus(const bool test_display) else #endif // SCAN indicator - if (g_scan_state_dir != SCAN_OFF || g_screen_to_display == DISPLAY_SCANNER || test_display) + if (g_scan_state_dir != SCAN_STATE_DIR_OFF || g_screen_to_display == DISPLAY_SEARCH || test_display) { - if (g_next_channel <= USER_CHANNEL_LAST) + if (g_scan_next_channel <= USER_CHANNEL_LAST) { // channel mode if (g_eeprom.scan_list_default == 0) UI_PrintStringSmallBuffer("1", line + x); diff --git a/ui/ui.c b/ui/ui.c index 94507a4..d889e35 100644 --- a/ui/ui.c +++ b/ui/ui.c @@ -61,8 +61,8 @@ void GUI_DisplayScreen(void) UI_DisplayMenu(); break; - case DISPLAY_SCANNER: - UI_DisplayScanner(); + case DISPLAY_SEARCH: + UI_DisplaySearch(); break; #ifdef ENABLE_AIRCOPY @@ -88,7 +88,7 @@ void GUI_SelectNextDisplay(gui_display_type_t Display) g_input_box_index = 0; g_is_in_sub_menu = false; g_css_scan_mode = CSS_SCAN_MODE_OFF; - g_scan_state_dir = SCAN_OFF; + g_scan_state_dir = SCAN_STATE_DIR_OFF; #ifdef ENABLE_FMRADIO g_fm_scan_state = FM_SCAN_OFF; #endif diff --git a/ui/ui.h b/ui/ui.h index 664bb13..0a7c006 100644 --- a/ui/ui.h +++ b/ui/ui.h @@ -25,7 +25,7 @@ enum gui_display_type_e DISPLAY_MAIN = 0, DISPLAY_FM, DISPLAY_MENU, - DISPLAY_SCANNER, + DISPLAY_SEARCH, DISPLAY_AIRCOPY, DISPLAY_INVALID // 0xff };