Fix scanning on opposite VFO, ignore scan result on EXIT button, changed status bar while scanning

This commit is contained in:
Krzysiek Egzmont
2023-10-17 02:57:55 +02:00
parent 0c0cbb232c
commit 6172d942be
3 changed files with 26 additions and 12 deletions

View File

@@ -506,6 +506,7 @@ static void MAIN_Key_EXIT(bool bKeyPressed, bool bKeyHeld)
}
else
{
bScanKeepFrequency = false;
SCANNER_Stop();
#ifdef ENABLE_VOICE

View File

@@ -45,6 +45,7 @@ bool gScanUseCssResult;
int8_t gScanStateDir;
bool bScanKeepFrequency;
uint8_t gRestoreMrChannel;
uint8_t gRestoreCROSS_BAND_RX_TX;
static void SCANNER_Key_DIGITS(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
{
@@ -426,6 +427,11 @@ void SCANNER_Start(void)
void SCANNER_Stop(void)
{
if(gRestoreCROSS_BAND_RX_TX != CROSS_BAND_OFF) {
gEeprom.CROSS_BAND_RX_TX = gRestoreCROSS_BAND_RX_TX;
gRestoreCROSS_BAND_RX_TX = CROSS_BAND_OFF;
}
gScanStateDir = SCAN_OFF;
if (!bScanKeepFrequency)
@@ -580,6 +586,11 @@ static void SCANNER_NextMemChannel(void)
void SCANNER_NextChannel(const bool storeBackupSettings, const int8_t scan_direction)
{
if (storeBackupSettings) {
gRestoreCROSS_BAND_RX_TX = gEeprom.CROSS_BAND_RX_TX;
gEeprom.CROSS_BAND_RX_TX = CROSS_BAND_OFF;
}
RADIO_SelectVfos();
gNextMrChannel = gRxVfo->CHANNEL_SAVE;

View File

@@ -88,7 +88,7 @@ void UI_DisplayStatus(const bool test_display)
// SCAN indicator
if (gScanStateDir != SCAN_OFF || gScreenToDisplay == DISPLAY_SCANNER || test_display)
{
if (gNextMrChannel <= MR_CHANNEL_LAST)
if (gNextMrChannel <= MR_CHANNEL_LAST && gScreenToDisplay != DISPLAY_SCANNER)
{ // channel mode
if (gEeprom.SCAN_LIST_DEFAULT == 0)
UI_PrintStringSmallBuffer("1", line + x);
@@ -114,11 +114,13 @@ void UI_DisplayStatus(const bool test_display)
memmove(line + x, BITMAP_VoicePrompt, sizeof(BITMAP_VoicePrompt));
x1 = x + sizeof(BITMAP_VoicePrompt);
}
x += sizeof(BITMAP_VoicePrompt) + 2;
x += sizeof(BITMAP_VoicePrompt) + 1;
#else
// hmmm, what to put in it's place
#endif
x++;
if(gScreenToDisplay != DISPLAY_SCANNER) {
uint8_t dw = (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2;
if(dw == 1 || dw == 3 || test_display) { // DWR - dual watch + respond
if(gDualWatchActive || test_display)
@@ -129,7 +131,7 @@ void UI_DisplayStatus(const bool test_display)
else if(dw == 2) { // XB - crossband
memmove(line + x, BITMAP_XB, sizeof(BITMAP_XB));
}
}
x += sizeof(BITMAP_TDR1) + 2;
#ifdef ENABLE_VOX