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 56821b4..bf60880 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 3c786dc..b02f8a5 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ 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 c845fb4..552b4ca 100644 Binary files a/utils/uv-k5_small_bold.bin and b/utils/uv-k5_small_bold.bin differ diff --git a/utils/uv-k5_small_bold.fon b/utils/uv-k5_small_bold.fon index f7f5b4b..e489372 100644 Binary files a/utils/uv-k5_small_bold.fon and b/utils/uv-k5_small_bold.fon differ