From 16c908f0bf6692be0aa729f0c32c8441a7ba4e94 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Thu, 5 Oct 2023 23:58:55 +0100 Subject: [PATCH] Channel/Frequency scanning updates --- Makefile | 2 +- app/action.c | 46 ++++++++++++------ app/app.c | 93 +++++++++++++++++++------------------ app/app.h | 2 +- app/dtmf.c | 2 +- app/generic.c | 2 +- app/main.c | 18 ++++--- app/menu.c | 6 +-- app/scanner.c | 6 +-- app/scanner.h | 8 ++-- bitmaps.c | 47 ------------------- bitmaps.h | 5 -- firmware.bin | Bin 53752 -> 53860 bytes firmware.packed.bin | Bin 53770 -> 53878 bytes font.c | 10 ++-- scheduler.c | 8 ++-- ui/status.c | 28 +++++------ ui/ui.c | 2 +- utils/uv-k5_small_bold.bin | Bin 760 -> 760 bytes utils/uv-k5_small_bold.fon | Bin 1920 -> 1920 bytes 20 files changed, 132 insertions(+), 153 deletions(-) diff --git a/Makefile b/Makefile index a85453e..849e661 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ ENABLE_CODE_SCAN_TIMEOUT := 0 ENABLE_AM_FIX := 1 ENABLE_AM_FIX_SHOW_DATA := 1 ENABLE_SQUELCH_MORE_SENSITIVE := 1 -ENABLE_FASTER_CHANNEL_SCAN := 0 +ENABLE_FASTER_CHANNEL_SCAN := 1 ENABLE_RSSI_BAR := 1 ENABLE_AUDIO_BAR := 0 ENABLE_COPY_CHAN_TO_VFO := 1 diff --git a/app/action.c b/app/action.c index 7036ebd..3d0ec31 100644 --- a/app/action.c +++ b/app/action.c @@ -84,11 +84,11 @@ void ACTION_Monitor(void) gMonitor = false; - if (gScanState != SCAN_OFF) + if (gScanStateDir != SCAN_OFF) { - ScanPauseDelayIn_10ms = scan_pause_delay_in_1_10ms; - gScheduleScanListen = false; - gScanPauseMode = true; + gScanPauseDelayIn_10ms = scan_pause_delay_in_1_10ms; + gScheduleScanListen = false; + gScanPauseMode = true; } #ifdef ENABLE_NOAA @@ -182,23 +182,36 @@ void ACTION_Scan(bool bRestart) { GUI_SelectNextDisplay(DISPLAY_MAIN); - if (gScanState != SCAN_OFF) - { - #if 1 + if (gScanStateDir != SCAN_OFF) + { // already scanning + + if (gNextMrChannel <= MR_CHANNEL_LAST) + { // channel mode + // keep scanning but toggle between scan lists gEeprom.SCAN_LIST_DEFAULT = (gEeprom.SCAN_LIST_DEFAULT + 1) % 3; + + // jump to the next channel + CHANNEL_Next(true, gScanStateDir); + gScanPauseDelayIn_10ms = 1; + gScheduleScanListen = false; + gUpdateStatus = true; - #else + } + else + { // stop scanning + SCANNER_Stop(); #ifdef ENABLE_VOICE gAnotherVoiceID = VOICE_ID_SCANNING_STOP; #endif - #endif + } } else - { - CHANNEL_Next(true, 1); + { // start scanning + + CHANNEL_Next(true, SCAN_FWD); #ifdef ENABLE_VOICE AUDIO_SetVoiceID(0, VOICE_ID_SCANNING_BEGIN); @@ -215,9 +228,16 @@ void ACTION_Scan(bool bRestart) } } else - if (!bRestart) - { // keep scanning but toggle between scan lists +// if (!bRestart) + if (!bRestart && gNextMrChannel <= MR_CHANNEL_LAST) + { // channel mode, keep scanning but toggle between scan lists gEeprom.SCAN_LIST_DEFAULT = (gEeprom.SCAN_LIST_DEFAULT + 1) % 3; + + // jump to the next channel + CHANNEL_Next(true, gScanStateDir); + gScanPauseDelayIn_10ms = 1; + gScheduleScanListen = false; + gUpdateStatus = true; } else diff --git a/app/app.c b/app/app.c index 4279eaa..c0a284b 100644 --- a/app/app.c +++ b/app/app.c @@ -95,15 +95,15 @@ static void APP_CheckForIncoming(void) // squelch is open - if (gScanState == SCAN_OFF) + if (gScanStateDir == SCAN_OFF) { // not RF scanning if (gCssScanMode != CSS_SCAN_MODE_OFF && gRxReceptionMode == RX_MODE_NONE) { // CTCSS/DTS scanning - ScanPauseDelayIn_10ms = scan_pause_delay_in_5_10ms; - gScheduleScanListen = false; - gRxReceptionMode = RX_MODE_DETECTED; + gScanPauseDelayIn_10ms = scan_pause_delay_in_5_10ms; + gScheduleScanListen = false; + gRxReceptionMode = RX_MODE_DETECTED; } if (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF) @@ -166,8 +166,8 @@ static void APP_CheckForIncoming(void) return; } - ScanPauseDelayIn_10ms = scan_pause_delay_in_3_10ms; - gScheduleScanListen = false; + gScanPauseDelayIn_10ms = scan_pause_delay_in_3_10ms; + gScheduleScanListen = false; } gRxReceptionMode = RX_MODE_DETECTED; @@ -200,7 +200,7 @@ static void APP_HandleIncoming(void) return; } - bFlag = (gScanState == SCAN_OFF && gCurrentCodeType == CODE_TYPE_OFF); + bFlag = (gScanStateDir == SCAN_OFF && gCurrentCodeType == CODE_TYPE_OFF); #ifdef ENABLE_NOAA if (IS_NOAA_CHANNEL(gRxVfo->CHANNEL_SAVE) && gNOAACountdown_10ms > 0) @@ -224,7 +224,7 @@ static void APP_HandleIncoming(void) if (!bFlag) return; - if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) + if (gScanStateDir == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) { // not scanning if (gRxVfo->DTMF_DECODING_ENABLE || gSetting_KILLED) { // DTMF DCD is enabled @@ -268,7 +268,7 @@ static void APP_HandleReceive(void) goto Skip; } - if (gScanState != SCAN_OFF && IS_FREQ_CHANNEL(gNextMrChannel)) + if (gScanStateDir != SCAN_OFF && IS_FREQ_CHANNEL(gNextMrChannel)) { if (g_SquelchLost) return; @@ -399,7 +399,7 @@ Skip: gUpdateDisplay = true; - if (gScanState != SCAN_OFF) + if (gScanStateDir != SCAN_OFF) { switch (gEeprom.SCAN_RESUME_MODE) { @@ -407,8 +407,8 @@ Skip: break; case SCAN_RESUME_CO: - ScanPauseDelayIn_10ms = scan_pause_delay_in_7_10ms; - gScheduleScanListen = false; + gScanPauseDelayIn_10ms = scan_pause_delay_in_7_10ms; + gScheduleScanListen = false; break; case SCAN_RESUME_SE: @@ -488,23 +488,23 @@ void APP_StartListening(FUNCTION_Type_t Function, const bool reset_am_fix) if (gSetting_backlight_on_tx_rx >= 2) BACKLIGHT_TurnOn(); - if (gScanState != SCAN_OFF) + if (gScanStateDir != SCAN_OFF) { switch (gEeprom.SCAN_RESUME_MODE) { case SCAN_RESUME_TO: if (!gScanPauseMode) { - ScanPauseDelayIn_10ms = scan_pause_delay_in_1_10ms; - gScheduleScanListen = false; - gScanPauseMode = true; + gScanPauseDelayIn_10ms = scan_pause_delay_in_1_10ms; + gScheduleScanListen = false; + gScanPauseMode = true; } break; case SCAN_RESUME_CO: case SCAN_RESUME_SE: - ScanPauseDelayIn_10ms = 0; - gScheduleScanListen = false; + gScanPauseDelayIn_10ms = 0; + gScheduleScanListen = false; break; } @@ -527,7 +527,7 @@ void APP_StartListening(FUNCTION_Type_t Function, const bool reset_am_fix) if (gCssScanMode != CSS_SCAN_MODE_OFF) gCssScanMode = CSS_SCAN_MODE_FOUND; - if (gScanState == SCAN_OFF && + if (gScanStateDir == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) { // not scanning, dual watch is enabled @@ -623,14 +623,17 @@ uint32_t APP_SetFrequencyByStep(VFO_Info_t *pInfo, int8_t Step) static void FREQ_NextChannel(void) { - gRxVfo->freq_config_RX.Frequency = APP_SetFrequencyByStep(gRxVfo, gScanState); + gRxVfo->freq_config_RX.Frequency = APP_SetFrequencyByStep(gRxVfo, gScanStateDir); RADIO_ApplyOffset(gRxVfo); RADIO_ConfigureSquelchAndOutputPower(gRxVfo); RADIO_SetupRegisters(true); -// ScanPauseDelayIn_10ms = scan_pause_delay_in_6_10ms; - ScanPauseDelayIn_10ms = 10; // 100ms .. it don't like any faster :( + #ifdef ENABLE_FASTER_CHANNEL_SCAN + gScanPauseDelayIn_10ms = 9; // 90ms + #else + gScanPauseDelayIn_10ms = scan_pause_delay_in_6_10ms; + #endif bScanKeepFrequency = false; gUpdateDisplay = true; @@ -704,7 +707,7 @@ static void MR_NextChannel(void) if (!enabled || chan == 0xff) { - chan = RADIO_FindNextChannel(gNextMrChannel + gScanState, gScanState, (gEeprom.SCAN_LIST_DEFAULT < 2) ? true : false, gEeprom.SCAN_LIST_DEFAULT); + chan = RADIO_FindNextChannel(gNextMrChannel + gScanStateDir, gScanStateDir, (gEeprom.SCAN_LIST_DEFAULT < 2) ? true : false, gEeprom.SCAN_LIST_DEFAULT); if (chan == 0xFF) { // no valid channel found @@ -727,9 +730,9 @@ static void MR_NextChannel(void) } #ifdef ENABLE_FASTER_CHANNEL_SCAN - ScanPauseDelayIn_10ms = 10; // 100ms .. <= ~60ms it misses signals (squelch response and/or PLL lock time) ? + gScanPauseDelayIn_10ms = 9; // 90ms .. <= ~60ms it misses signals (squelch response and/or PLL lock time) ? #else - ScanPauseDelayIn_10ms = scan_pause_delay_in_3_10ms; + gScanPauseDelayIn_10ms = scan_pause_delay_in_3_10ms; #endif bScanKeepFrequency = false; @@ -976,7 +979,7 @@ void APP_EndTransmission(void) if (gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) return; - if (gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) + if (gScanStateDir != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) return; if (gVOX_NoiseDetected) @@ -1068,9 +1071,9 @@ void APP_Update(void) #endif #ifdef ENABLE_VOICE - if (gScreenToDisplay != DISPLAY_SCANNER && gScanState != SCAN_OFF && gScheduleScanListen && !gPttIsPressed && gVoiceWriteIndex == 0) + if (gScreenToDisplay != DISPLAY_SCANNER && gScanStateDir != SCAN_OFF && gScheduleScanListen && !gPttIsPressed && gVoiceWriteIndex == 0) #else - if (gScreenToDisplay != DISPLAY_SCANNER && gScanState != SCAN_OFF && gScheduleScanListen && !gPttIsPressed) + if (gScreenToDisplay != DISPLAY_SCANNER && gScanStateDir != SCAN_OFF && gScheduleScanListen && !gPttIsPressed) #endif { // scanning @@ -1129,7 +1132,7 @@ void APP_Update(void) if (gScheduleDualWatch) #endif { - if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) + if (gScanStateDir == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) { if (!gPttIsPressed && #ifdef ENABLE_FMRADIO @@ -1179,7 +1182,7 @@ void APP_Update(void) gPttIsPressed || gKeyBeingHeld || gEeprom.BATTERY_SAVE == 0 || - gScanState != SCAN_OFF || + gScanStateDir != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF || gScreenToDisplay != DISPLAY_MAIN || gDTMF_CallState != DTMF_CALL_STATE_NONE) @@ -1204,7 +1207,7 @@ void APP_Update(void) gPttIsPressed || gKeyBeingHeld || gEeprom.BATTERY_SAVE == 0 || - gScanState != SCAN_OFF || + gScanStateDir != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF || gScreenToDisplay != DISPLAY_MAIN || gDTMF_CallState != DTMF_CALL_STATE_NONE) @@ -1238,7 +1241,7 @@ void APP_Update(void) #endif if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && - gScanState == SCAN_OFF && + gScanStateDir == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) { // dual watch mode, toggle between the two VFO's DUALWATCH_Alternate(); @@ -1252,7 +1255,7 @@ void APP_Update(void) gRxIdleMode = false; // RX is awake } else - if (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF || gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF || gUpdateRSSI) + if (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF || gScanStateDir != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF || gUpdateRSSI) { // dual watch mode, go back to sleep updateRSSI(gEeprom.RX_VFO); @@ -1817,9 +1820,9 @@ void APP_TimeSlice500ms(void) GPIO_ClearBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); // turn backlight off #ifdef ENABLE_AIRCOPY - if (gScanState == SCAN_OFF && gScreenToDisplay != DISPLAY_AIRCOPY && (gScreenToDisplay != DISPLAY_SCANNER || gScanCssState >= SCAN_CSS_STATE_FOUND)) + if (gScanStateDir == SCAN_OFF && gScreenToDisplay != DISPLAY_AIRCOPY && (gScreenToDisplay != DISPLAY_SCANNER || gScanCssState >= SCAN_CSS_STATE_FOUND)) #else - if (gScanState == SCAN_OFF && (gScreenToDisplay != DISPLAY_SCANNER || gScanCssState >= SCAN_CSS_STATE_FOUND)) + if (gScanStateDir == SCAN_OFF && (gScreenToDisplay != DISPLAY_SCANNER || gScanCssState >= SCAN_CSS_STATE_FOUND)) #endif { bool exit_menu = false; @@ -2039,32 +2042,32 @@ void APP_TimeSlice500ms(void) } #endif -void CHANNEL_Next(bool bFlag, int8_t Direction) +void CHANNEL_Next(const bool bFlag, const int8_t scan_direction) { RADIO_SelectVfos(); gNextMrChannel = gRxVfo->CHANNEL_SAVE; gCurrentScanList = SCAN_NEXT_CHAN_SCANLIST1; - gScanState = Direction; + gScanStateDir = scan_direction; if (gNextMrChannel <= MR_CHANNEL_LAST) - { + { // channel mode if (bFlag) gRestoreMrChannel = gNextMrChannel; MR_NextChannel(); } else - { + { // frequency mode if (bFlag) gRestoreFrequency = gRxVfo->freq_config_RX.Frequency; FREQ_NextChannel(); } - ScanPauseDelayIn_10ms = scan_pause_delay_in_2_10ms; - gScheduleScanListen = false; - gRxReceptionMode = RX_MODE_NONE; - gScanPauseMode = false; - bScanKeepFrequency = false; + gScanPauseDelayIn_10ms = scan_pause_delay_in_2_10ms; + gScheduleScanListen = false; + gRxReceptionMode = RX_MODE_NONE; + gScanPauseMode = false; + bScanKeepFrequency = false; } static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) @@ -2195,7 +2198,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) Key != KEY_STAR && Key != KEY_MENU) { - if (gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) + if (gScanStateDir != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) { // FREQ/CTCSS/DCS scanning if (bKeyPressed && !bKeyHeld) AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL); diff --git a/app/app.h b/app/app.h index 8d029b0..6f958da 100644 --- a/app/app.h +++ b/app/app.h @@ -29,7 +29,7 @@ extern const uint8_t orig_mixer; extern const uint8_t orig_pga; void APP_EndTransmission(void); -void CHANNEL_Next(bool bFlag, int8_t Direction); +void CHANNEL_Next(const bool bFlag, const int8_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); void APP_Update(void); diff --git a/app/dtmf.c b/app/dtmf.c index 0f96941..83d71d3 100644 --- a/app/dtmf.c +++ b/app/dtmf.c @@ -184,7 +184,7 @@ void DTMF_HandleRequest(void) if (!gDTMF_RX_pending) return; // nothing new received - if (gScanState != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) + if (gScanStateDir != SCAN_OFF || gCssScanMode != CSS_SCAN_MODE_OFF) { // we're busy scanning DTMF_clear_RX(); return; diff --git a/app/generic.c b/app/generic.c index ad7f479..82e8f10 100644 --- a/app/generic.c +++ b/app/generic.c @@ -154,7 +154,7 @@ void GENERIC_Key_PTT(bool bKeyPressed) return; } - if (gScanState != SCAN_OFF) + if (gScanStateDir != SCAN_OFF) { SCANNER_Stop(); diff --git a/app/main.c b/app/main.c index 2e6d572..c7b3659 100644 --- a/app/main.c +++ b/app/main.c @@ -487,7 +487,7 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld) if (!gFmRadioMode) #endif { - if (gScanState == SCAN_OFF) + if (gScanStateDir == SCAN_OFF) { if (gInputBoxIndex == 0) return; @@ -563,11 +563,11 @@ static void MAIN_Key_MENU(const bool bKeyPressed, const bool bKeyHeld) if (gEeprom.VFO_OPEN && gCssScanMode == CSS_SCAN_MODE_OFF) { - if (gScanState != SCAN_OFF) + if (gScanStateDir != SCAN_OFF) { if (gCurrentFunction != FUNCTION_INCOMING || gRxReceptionMode == RX_MODE_NONE || - ScanPauseDelayIn_10ms == 0) + gScanPauseDelayIn_10ms == 0) { // scan is running (not paused) return; } @@ -639,7 +639,8 @@ static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld) } if (bKeyHeld || !bKeyPressed) - { + { // long press + if (bKeyHeld || bKeyPressed) { if (!bKeyHeld) @@ -654,9 +655,9 @@ static void MAIN_Key_STAR(bool bKeyPressed, bool bKeyHeld) } #ifdef ENABLE_NOAA - if (gScanState == SCAN_OFF && IS_NOT_NOAA_CHANNEL(gTxVfo->CHANNEL_SAVE)) + if (gScanStateDir == SCAN_OFF && IS_NOT_NOAA_CHANNEL(gTxVfo->CHANNEL_SAVE)) #else - if (gScanState == SCAN_OFF) + if (gScanStateDir == SCAN_OFF) #endif { gKeyInputCountdown = key_input_timeout_500ms; @@ -739,7 +740,7 @@ static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction) gBeepToPlay = BEEP_1KHZ_60MS_OPTIONAL; } - if (gScanState == SCAN_OFF) + if (gScanStateDir == SCAN_OFF) { #ifdef ENABLE_NOAA if (IS_NOT_NOAA_CHANNEL(Channel)) @@ -795,7 +796,10 @@ static void MAIN_Key_UP_DOWN(bool bKeyPressed, bool bKeyHeld, int8_t Direction) return; } + // jump to the next channel CHANNEL_Next(false, Direction); + gScanPauseDelayIn_10ms = 1; + gScheduleScanListen = false; gPttWasReleased = true; } diff --git a/app/menu.c b/app/menu.c index 6c10820..a94b098 100644 --- a/app/menu.c +++ b/app/menu.c @@ -86,8 +86,8 @@ void MENU_StartCssScan(int8_t Direction) MENU_SelectNextCode(); - ScanPauseDelayIn_10ms = scan_pause_delay_in_2_10ms; - gScheduleScanListen = false; + gScanPauseDelayIn_10ms = scan_pause_delay_in_2_10ms; + gScheduleScanListen = false; } void MENU_StopCssScan(void) @@ -824,7 +824,7 @@ void MENU_SelectNextCode(void) RADIO_SetupRegisters(true); - ScanPauseDelayIn_10ms = (gSelectedCodeType == CODE_TYPE_CONTINUOUS_TONE) ? scan_pause_delay_in_3_10ms : scan_pause_delay_in_4_10ms; + gScanPauseDelayIn_10ms = (gSelectedCodeType == CODE_TYPE_CONTINUOUS_TONE) ? scan_pause_delay_in_3_10ms : scan_pause_delay_in_4_10ms; gUpdateDisplay = true; } diff --git a/app/scanner.c b/app/scanner.c index e6783e6..91367a7 100644 --- a/app/scanner.c +++ b/app/scanner.c @@ -37,11 +37,11 @@ uint32_t gScanFrequency; bool gScanPauseMode; SCAN_CssState_t gScanCssState; volatile bool gScheduleScanListen = true; -volatile uint16_t ScanPauseDelayIn_10ms; +volatile uint16_t gScanPauseDelayIn_10ms; uint8_t gScanProgressIndicator; uint8_t gScanHitCount; bool gScanUseCssResult; -int8_t gScanState; +int8_t gScanStateDir; bool bScanKeepFrequency; static void SCANNER_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld) @@ -426,7 +426,7 @@ void SCANNER_Stop(void) { const uint8_t Previous = gRestoreMrChannel; - gScanState = SCAN_OFF; + gScanStateDir = SCAN_OFF; if (!bScanKeepFrequency) { diff --git a/app/scanner.h b/app/scanner.h index 9a6b17d..8730ea6 100644 --- a/app/scanner.h +++ b/app/scanner.h @@ -32,7 +32,9 @@ typedef enum SCAN_CssState_t SCAN_CssState_t; enum { - SCAN_OFF = 0, + SCAN_REV = -1, + SCAN_OFF = 0, + SCAN_FWD = +1 }; extern DCS_CodeType_t gScanCssResultType; @@ -46,11 +48,11 @@ extern uint32_t gScanFrequency; extern bool gScanPauseMode; extern SCAN_CssState_t gScanCssState; extern volatile bool gScheduleScanListen; -extern volatile uint16_t ScanPauseDelayIn_10ms; +extern volatile uint16_t gScanPauseDelayIn_10ms; extern uint8_t gScanProgressIndicator; extern uint8_t gScanHitCount; extern bool gScanUseCssResult; -extern int8_t gScanState; +extern int8_t gScanStateDir; extern bool bScanKeepFrequency; void SCANNER_ProcessKeys(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld); diff --git a/bitmaps.c b/bitmaps.c index 9bc4252..38ae540 100644 --- a/bitmaps.c +++ b/bitmaps.c @@ -281,54 +281,7 @@ const uint8_t BITMAP_TDR2[12] = 0b00110001 }; #endif -/* -const uint8_t BITMAP_SC1[8] = -{ // "I" - 0b01000001, - 0b01000001, - 0b01111111, - 0b01111111, - 0b01111111, - 0b01000001, - 0b01000001, - 0b00000000 -}; -const uint8_t BITMAP_SC2[8] = -{ // "II" - 0b01000001, - 0b01111111, - 0b01111111, - 0b01000001, - 0b01111111, - 0b01111111, - 0b01000001, - 0b00000000 -}; -*/ -/* -const uint8_t BITMAP_SC1[7] = -{ // "1" - 0b01000000, - 0b01000000, - 0b01000110, - 0b01111111, - 0b01000000, - 0b01000000, - 0b00000000 -}; - -const uint8_t BITMAP_SC2[7] = -{ // "2" - 0b01000010, - 0b01100001, - 0b01010001, - 0b01001001, - 0b01001001, - 0b01000110, - 0b00000000 -}; -*/ const uint8_t BITMAP_Antenna[5] = { 0b00000011, diff --git a/bitmaps.h b/bitmaps.h index ab0d979..310ff60 100644 --- a/bitmaps.h +++ b/bitmaps.h @@ -46,11 +46,6 @@ extern const uint8_t BITMAP_TDR2[12]; extern const uint8_t BITMAP_NOAA[12]; #endif -//extern const uint8_t BITMAP_SC1[8]; -//extern const uint8_t BITMAP_SC2[8]; -//extern const uint8_t BITMAP_SC1[7]; -//extern const uint8_t BITMAP_SC2[7]; - extern const uint8_t BITMAP_Antenna[5]; extern const uint8_t BITMAP_AntennaLevel1[3]; extern const uint8_t BITMAP_AntennaLevel2[3]; diff --git a/firmware.bin b/firmware.bin index 56821b471d3b2955ef2b2338ce4708655e709a02..bf60880877a16611e5f240707e3d285af1258be6 100644 GIT binary patch delta 8330 zcmeydnEA;P<_R`TffW<&ZZVc_mSnVKVq*F=IfVI(v%zi#h96r6y?Gc!8QP_0I*DH7 z_q1T({;>2XucwDI8v}@~`ip}>k%9Ze?4QkYQBJ{*3C`an93&egf9wUxPMF-yVlG

sV(ovT%Qp`Z3vuy^nFl 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 X?7&=CmoRzVVI8K7jLmlr%kTjJMFcZy delta 8124 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 ZCSO17z-(9NFj?w|4pUCfW{)E>d;pJO{MG;f diff --git a/firmware.packed.bin b/firmware.packed.bin index 3c786dcdc32540d4ea186373467d50c780ead4ab..b02f8a55ca6d093085865a7fb6e8de7c655084f3 100644 GIT binary patch delta 34303 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≀Wgv`-OYXC<%Q-(>eC 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 S&k2wzV*Yt`-TALN#^(U(Rf@d; delta 34194 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 LV9W~7DQDyX1Is8Z diff --git a/font.c b/font.c index b820807..1aba955 100644 --- a/font.c +++ b/font.c @@ -334,10 +334,10 @@ const uint8_t gFontSmall[95][6] = {0x00, 0x03, 0x07, 0x06, 0x00, 0x00}, {0x20, 0x76, 0x56, 0x56, 0x7E, 0x3C}, {0x7F, 0x7F, 0x6C, 0x6C, 0x7C, 0x38}, - {0x3C, 0x7E, 0x66, 0x66, 0x66, 0x24}, + {0x38, 0x7C, 0x6C, 0x6C, 0x6C, 0x00}, {0x38, 0x7C, 0x6C, 0x6C, 0x7F, 0x7F}, {0x3C, 0x7E, 0x56, 0x56, 0x5E, 0x0C}, - {0x7C, 0x7E, 0x36, 0x36, 0x06, 0x00}, + {0x7E, 0x7F, 0x1B, 0x1B, 0x02, 0x00}, {0x0C, 0x5E, 0x56, 0x56, 0x7E, 0x3C}, {0x7F, 0x7F, 0x0C, 0x0C, 0x7C, 0x78}, {0x00, 0x00, 0x7A, 0x7A, 0x00, 0x00}, @@ -348,7 +348,7 @@ const uint8_t gFontSmall[95][6] = {0x7C, 0x7C, 0x0C, 0x0C, 0x7C, 0x78}, {0x3C, 0x7E, 0x66, 0x66, 0x7E, 0x3C}, {0x7E, 0x7E, 0x36, 0x36, 0x3E, 0x1C}, - {0x1C, 0x3E, 0x36, 0x3E, 0x7E, 0x40}, + {0x1C, 0x3E, 0x36, 0x7E, 0x7E, 0x60}, {0x7C, 0x7C, 0x0C, 0x0C, 0x18, 0x00}, {0x4C, 0x5E, 0x56, 0x56, 0x76, 0x20}, {0x3F, 0x7F, 0x6C, 0x6C, 0x60, 0x00}, @@ -356,11 +356,11 @@ const uint8_t gFontSmall[95][6] = {0x0C, 0x3C, 0x70, 0x70, 0x3C, 0x0C}, {0x3C, 0x7C, 0x30, 0x30, 0x7C, 0x3C}, {0x44, 0x6C, 0x38, 0x38, 0x6C, 0x44}, - {0x06, 0x6E, 0x6C, 0x6C, 0x7E, 0x3E}, + {0x06, 0x6E, 0x68, 0x68, 0x7E, 0x3E}, {0x66, 0x76, 0x7E, 0x6E, 0x66, 0x00}, {0x08, 0x3E, 0x77, 0x41, 0x00, 0x00}, {0x00, 0x00, 0x7F, 0x00, 0x00, 0x00}, {0x00, 0x41, 0x77, 0x3E, 0x08, 0x00}, - {0x0C, 0x06, 0x0C, 0x18, 0x0C, 0x00}, + {0x0C, 0x06, 0x0C, 0x18, 0x0C, 0x00} }; #endif \ No newline at end of file diff --git a/scheduler.c b/scheduler.c index 03cf9a2..d056fa2 100644 --- a/scheduler.c +++ b/scheduler.c @@ -77,20 +77,20 @@ void SystickHandler(void) if (gCurrentFunction == FUNCTION_POWER_SAVE) DECREMENT_AND_TRIGGER(gPowerSave_10ms, gPowerSaveCountdownExpired); - if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + if (gScanStateDir == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) if (gCurrentFunction != FUNCTION_MONITOR && gCurrentFunction != FUNCTION_TRANSMIT && gCurrentFunction != FUNCTION_RECEIVE) DECREMENT_AND_TRIGGER(gDualWatchCountdown_10ms, gScheduleDualWatch); #ifdef ENABLE_NOAA - if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH == DUAL_WATCH_OFF) + if (gScanStateDir == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH == DUAL_WATCH_OFF) if (gIsNoaaMode && gCurrentFunction != FUNCTION_MONITOR && gCurrentFunction != FUNCTION_TRANSMIT) if (gCurrentFunction != FUNCTION_RECEIVE) DECREMENT_AND_TRIGGER(gNOAA_Countdown_10ms, gScheduleNOAA); #endif - if (gScanState != SCAN_OFF || gCssScanMode == CSS_SCAN_MODE_SCANNING) + if (gScanStateDir != SCAN_OFF || gCssScanMode == CSS_SCAN_MODE_SCANNING) if (gCurrentFunction != FUNCTION_MONITOR && gCurrentFunction != FUNCTION_TRANSMIT) - DECREMENT_AND_TRIGGER(ScanPauseDelayIn_10ms, gScheduleScanListen); + DECREMENT_AND_TRIGGER(gScanPauseDelayIn_10ms, gScheduleScanListen); DECREMENT_AND_TRIGGER(gTailNoteEliminationCountdown_10ms, gFlagTailNoteEliminationComplete); diff --git a/ui/status.c b/ui/status.c index 0927afa..690354c 100644 --- a/ui/status.c +++ b/ui/status.c @@ -94,23 +94,25 @@ void UI_DisplayStatus(const bool test_display) else #endif // SCAN indicator - if (gScanState != SCAN_OFF || gScreenToDisplay == DISPLAY_SCANNER || test_display) + if (gScanStateDir != SCAN_OFF || gScreenToDisplay == DISPLAY_SCANNER || test_display) { - if (gEeprom.SCAN_LIST_DEFAULT == 0) -// memmove(line + x, BITMAP_SC1, sizeof(BITMAP_SC1)); - UI_PrintStringSmallBuffer("1", line + x); + if (gNextMrChannel <= MR_CHANNEL_LAST) + { // channel mode + if (gEeprom.SCAN_LIST_DEFAULT == 0) + UI_PrintStringSmallBuffer("1", line + x); + else + if (gEeprom.SCAN_LIST_DEFAULT == 1) + UI_PrintStringSmallBuffer("2", line + x); + else + if (gEeprom.SCAN_LIST_DEFAULT == 2) + UI_PrintStringSmallBuffer("*", line + x); + } else - if (gEeprom.SCAN_LIST_DEFAULT == 1) -// memmove(line + x, BITMAP_SC2, sizeof(BITMAP_SC2)); - UI_PrintStringSmallBuffer("2", line + x); - else - if (gEeprom.SCAN_LIST_DEFAULT == 2) -// memmove(line + x, BITMAP_SCA, sizeof(BITMAP_SCA)); - UI_PrintStringSmallBuffer("*", line + x); -// x1 = x + sizeof(BITMAP_SC1); + { // frequency mode + UI_PrintStringSmallBuffer("S", line + x); + } x1 = x + 7; } -// x += sizeof(BITMAP_SC1); x += 7; // font character width #ifdef ENABLE_VOICE diff --git a/ui/ui.c b/ui/ui.c index 750a7ca..b370182 100644 --- a/ui/ui.c +++ b/ui/ui.c @@ -84,7 +84,7 @@ void GUI_SelectNextDisplay(GUI_DisplayType_t Display) gInputBoxIndex = 0; gIsInSubMenu = false; gCssScanMode = CSS_SCAN_MODE_OFF; - gScanState = SCAN_OFF; + gScanStateDir = SCAN_OFF; #ifdef ENABLE_FMRADIO gFM_ScanState = FM_SCAN_OFF; #endif diff --git a/utils/uv-k5_small_bold.bin b/utils/uv-k5_small_bold.bin index c845fb4f7dd63645e279dcda3588ee12f647293a..552b4ca3b92f69214de62c567fdaf63a04931edf 100644 GIT binary patch delta 54 zcmeyt`h#_YB$F(IO-(|L4FemSU0qt89Rq_+U0O|o4TD8ZLPbTwWHY94COf{#{Y=)3 KX_HSg=>h<~q7VE4 delta 54 zcmeyt`h#_YB$KR7T|z>g4FemSU0qt89Rq_+U0O|o4FiKsO+rP*WHY94CL6ZN{Y=)3 Kb(2ps=>h=9BoGn+ diff --git a/utils/uv-k5_small_bold.fon b/utils/uv-k5_small_bold.fon index f7f5b4b96f67261463bf5a0a25874a3c189c0ff3..e4893726a8a8a348d78493ca62ee0dd208321ed2 100644 GIT binary patch delta 54 zcmZqRZ{XjskWH4srY51rhJlUEt}d<4j)B3ZF0CfPhQXpHp`s#T@;