mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 14:21:25 +03:00
Channel/Frequency scanning updates
This commit is contained in:
parent
9c7d6a38e5
commit
16c908f0bf
2
Makefile
2
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
|
||||
|
46
app/action.c
46
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
|
||||
|
93
app/app.c
93
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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -154,7 +154,7 @@ void GENERIC_Key_PTT(bool bKeyPressed)
|
||||
return;
|
||||
}
|
||||
|
||||
if (gScanState != SCAN_OFF)
|
||||
if (gScanStateDir != SCAN_OFF)
|
||||
{
|
||||
SCANNER_Stop();
|
||||
|
||||
|
18
app/main.c
18
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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
47
bitmaps.c
47
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,
|
||||
|
@ -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];
|
||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
10
font.c
10
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
|
@ -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);
|
||||
|
||||
|
28
ui/status.c
28
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
|
||||
|
2
ui/ui.c
2
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
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user