Improved CSS scan variable.

This commit is contained in:
Dual Tachyon 2023-09-02 19:36:37 +01:00
parent 1b03446c57
commit caea38148e
5 changed files with 35 additions and 24 deletions

View File

@ -918,8 +918,8 @@ void APP_TimeSlice10ms(void)
return; return;
} }
switch (gScanState) { switch (gScanCssState) {
case 0: case SCAN_CSS_STATE_OFF:
if (!BK4819_GetFrequencyScanResult(&Result)) { if (!BK4819_GetFrequencyScanResult(&Result)) {
break; break;
} }
@ -944,13 +944,13 @@ void APP_TimeSlice10ms(void)
g_2000045F = 0; g_2000045F = 0;
g_2000045C = 0; g_2000045C = 0;
g_20000464 = 0; g_20000464 = 0;
gScanState = 1; gScanCssState = SCAN_CSS_STATE_SCANNING;
GUI_SelectNextDisplay(DISPLAY_SCANNER); GUI_SelectNextDisplay(DISPLAY_SCANNER);
} }
g_2000045D = 0x15; g_2000045D = 0x15;
break; break;
case 1: case SCAN_CSS_STATE_SCANNING:
ScanResult = BK4819_GetCxCSSScanResult(&Result, &CtcssFreq); ScanResult = BK4819_GetCxCSSScanResult(&Result, &CtcssFreq);
if (ScanResult == 0) { if (ScanResult == 0) {
break; break;
@ -963,7 +963,7 @@ void APP_TimeSlice10ms(void)
if (Index != 0xFF) { if (Index != 0xFF) {
gCS_ScannedIndex = Index; gCS_ScannedIndex = Index;
gCS_ScannedType = CODE_TYPE_DIGITAL; gCS_ScannedType = CODE_TYPE_DIGITAL;
gScanState = 2; gScanCssState = SCAN_CSS_STATE_FOUND;
g_2000045C = 1; g_2000045C = 1;
} }
} else if (ScanResult == BK4819_CSS_RESULT_CTCSS) { } else if (ScanResult == BK4819_CSS_RESULT_CTCSS) {
@ -974,7 +974,7 @@ void APP_TimeSlice10ms(void)
if (Index == gCS_ScannedIndex && gCS_ScannedType == CODE_TYPE_CONTINUOUS_TONE) { if (Index == gCS_ScannedIndex && gCS_ScannedType == CODE_TYPE_CONTINUOUS_TONE) {
g_2000045F++; g_2000045F++;
if (1 < g_2000045F) { if (1 < g_2000045F) {
gScanState = 2; gScanCssState = SCAN_CSS_STATE_FOUND;
g_2000045C = 1; g_2000045C = 1;
} }
} else { } else {
@ -984,13 +984,15 @@ void APP_TimeSlice10ms(void)
gCS_ScannedIndex = Index; gCS_ScannedIndex = Index;
} }
} }
if (gScanState < 2) { if (gScanCssState < SCAN_CSS_STATE_FOUND) {
BK4819_SetScanFrequency(gScanFrequency); BK4819_SetScanFrequency(gScanFrequency);
g_2000045D = 0x15; g_2000045D = 0x15;
break; break;
} }
GUI_SelectNextDisplay(DISPLAY_SCANNER); GUI_SelectNextDisplay(DISPLAY_SCANNER);
break; break;
default:
break;
} }
} }
@ -1059,7 +1061,7 @@ void APP_TimeSlice500ms(void)
GPIO_ClearBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); GPIO_ClearBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT);
} }
} }
if (gScreenToDisplay != DISPLAY_AIRCOPY && (gScreenToDisplay != DISPLAY_SCANNER || (1 < gScanState))) { if (gScreenToDisplay != DISPLAY_AIRCOPY && (gScreenToDisplay != DISPLAY_SCANNER || (gScanCssState >= SCAN_CSS_STATE_FOUND))) {
if (gEeprom.AUTO_KEYPAD_LOCK && gKeyLockCountdown && !gDTMF_InputMode) { if (gEeprom.AUTO_KEYPAD_LOCK && gKeyLockCountdown && !gDTMF_InputMode) {
gKeyLockCountdown--; gKeyLockCountdown--;
if (gKeyLockCountdown == 0) { if (gKeyLockCountdown == 0) {
@ -1136,13 +1138,13 @@ LAB_00004b08:
} }
} }
if (gScreenToDisplay == DISPLAY_SCANNER && gScannerEditState == 0 && gScanState < 2) { if (gScreenToDisplay == DISPLAY_SCANNER && gScannerEditState == 0 && gScanCssState < SCAN_CSS_STATE_FOUND) {
g_20000464++; g_20000464++;
if (0x20 < g_20000464) { if (0x20 < g_20000464) {
if (gScanState == 1 && g_20000458 == 0) { if (gScanCssState == SCAN_CSS_STATE_SCANNING && g_20000458 == 0) {
gScanState = 2; gScanCssState = SCAN_CSS_STATE_FOUND;
} else { } else {
gScanState = 3; gScanCssState = SCAN_CSS_STATE_FAILED;
} }
} }
gUpdateDisplay = true; gUpdateDisplay = true;
@ -1220,13 +1222,13 @@ void FUN_000075b0(void)
gIsNoaaMode = false; gIsNoaaMode = false;
if (g_20000458 == 1) { if (g_20000458 == 1) {
gScanState = 1; gScanCssState = SCAN_CSS_STATE_SCANNING;
gScanFrequency = gRxInfo->pCurrent->Frequency; gScanFrequency = gRxInfo->pCurrent->Frequency;
gStepSetting = gRxInfo->STEP_SETTING; gStepSetting = gRxInfo->STEP_SETTING;
BK4819_PickRXFilterPathBasedOnFrequency(gScanFrequency); BK4819_PickRXFilterPathBasedOnFrequency(gScanFrequency);
BK4819_SetScanFrequency(gScanFrequency); BK4819_SetScanFrequency(gScanFrequency);
} else { } else {
gScanState = 0; gScanCssState = SCAN_CSS_STATE_OFF;
gScanFrequency = 0xFFFFFFFF; gScanFrequency = 0xFFFFFFFF;
BK4819_PickRXFilterPathBasedOnFrequency(0xFFFFFFFF); BK4819_PickRXFilterPathBasedOnFrequency(0xFFFFFFFF);
BK4819_EnableFrequencyScan(); BK4819_EnableFrequencyScan();

View File

@ -97,19 +97,19 @@ static void SCANNER_Key_MENU(bool bKeyPressed, bool bKeyHeld)
if (!bKeyPressed) { if (!bKeyPressed) {
return; return;
} }
if (gScanState == 0 && g_20000458 == 0) { if (gScanCssState == SCAN_CSS_STATE_OFF && g_20000458 == 0) {
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
return; return;
} }
if (gScanState == 1) { if (gScanCssState == SCAN_CSS_STATE_SCANNING) {
if (g_20000458 == 1) { if (g_20000458 == 1) {
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
return; return;
} }
} }
if (gScanState == 3) { if (gScanCssState == SCAN_CSS_STATE_FAILED) {
gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; gBeepToPlay = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
return; return;
} }
@ -151,7 +151,7 @@ static void SCANNER_Key_MENU(bool bKeyPressed, bool bKeyHeld)
} else { } else {
gScannerEditState = 2; gScannerEditState = 2;
} }
gScanState = 2; gScanCssState = SCAN_CSS_STATE_FOUND;
gAnotherVoiceID = VOICE_ID_MEMORY_CHANNEL; gAnotherVoiceID = VOICE_ID_MEMORY_CHANNEL;
gRequestDisplayScreen = DISPLAY_SCANNER; gRequestDisplayScreen = DISPLAY_SCANNER;
break; break;

2
misc.c
View File

@ -150,7 +150,7 @@ bool gF_LOCK;
uint8_t gScanChannel; uint8_t gScanChannel;
uint32_t gScanFrequency; uint32_t gScanFrequency;
uint8_t gScanPauseMode; uint8_t gScanPauseMode;
uint8_t gScanState; SCAN_CssState_t gScanCssState;
uint8_t gShowChPrefix; uint8_t gShowChPrefix;
volatile uint16_t gSystickCountdown2; volatile uint16_t gSystickCountdown2;
volatile uint8_t gFoundCDCSSCountdown; volatile uint8_t gFoundCDCSSCountdown;

11
misc.h
View File

@ -47,6 +47,15 @@ enum {
VFO_CONFIGURE_RELOAD = 2U, VFO_CONFIGURE_RELOAD = 2U,
}; };
enum SCAN_CssState_t {
SCAN_CSS_STATE_OFF = 0U,
SCAN_CSS_STATE_SCANNING = 1U,
SCAN_CSS_STATE_FOUND = 2U,
SCAN_CSS_STATE_FAILED = 3U,
};
typedef enum SCAN_CssState_t SCAN_CssState_t;
extern const uint32_t *gUpperLimitFrequencyBandTable; extern const uint32_t *gUpperLimitFrequencyBandTable;
extern const uint32_t *gLowerLimitFrequencyBandTable; extern const uint32_t *gLowerLimitFrequencyBandTable;
@ -177,7 +186,7 @@ extern bool gF_LOCK;
extern uint8_t gScanChannel; extern uint8_t gScanChannel;
extern uint32_t gScanFrequency; extern uint32_t gScanFrequency;
extern uint8_t gScanPauseMode; extern uint8_t gScanPauseMode;
extern uint8_t gScanState; extern SCAN_CssState_t gScanCssState;
extern uint8_t gShowChPrefix; extern uint8_t gShowChPrefix;
extern volatile uint16_t gSystickCountdown2; extern volatile uint16_t gSystickCountdown2;
extern volatile uint8_t gFoundCDCSSCountdown; extern volatile uint8_t gFoundCDCSSCountdown;

View File

@ -33,7 +33,7 @@ void UI_DisplayScanner(void)
memset(gFrameBuffer, 0, sizeof(gFrameBuffer)); memset(gFrameBuffer, 0, sizeof(gFrameBuffer));
memset(String, 0, sizeof(String)); memset(String, 0, sizeof(String));
if (g_20000458 == 1 || (gScanState != 0 && gScanState != 3)) { if (g_20000458 == 1 || (gScanCssState != SCAN_CSS_STATE_OFF && gScanCssState != SCAN_CSS_STATE_FAILED)) {
sprintf(String, "FREQ:%.5f", gScanFrequency * 1e-05); sprintf(String, "FREQ:%.5f", gScanFrequency * 1e-05);
} else { } else {
sprintf(String, "FREQ:**.*****"); sprintf(String, "FREQ:**.*****");
@ -41,7 +41,7 @@ void UI_DisplayScanner(void)
UI_PrintString(String, 2, 127, 1, 8, 0); UI_PrintString(String, 2, 127, 1, 8, 0);
memset(String, 0, sizeof(String)); memset(String, 0, sizeof(String));
if (gScanState < 2 || g_2000045C != 1) { if (gScanCssState < SCAN_CSS_STATE_FOUND || g_2000045C != 1) {
sprintf(String, "CTC:******"); sprintf(String, "CTC:******");
} else if (gCS_ScannedType == CODE_TYPE_CONTINUOUS_TONE) { } else if (gCS_ScannedType == CODE_TYPE_CONTINUOUS_TONE) {
sprintf(String, "CTC:%.1fHz", CTCSS_Options[gCS_ScannedIndex] * 0.1); sprintf(String, "CTC:%.1fHz", CTCSS_Options[gCS_ScannedIndex] * 0.1);
@ -59,11 +59,11 @@ void UI_DisplayScanner(void)
if (gScannerEditState == 1) { if (gScannerEditState == 1) {
strcpy(String, "SAVE:"); strcpy(String, "SAVE:");
UI_GenerateChannelStringEx(String + 5, gShowChPrefix, gScanChannel); UI_GenerateChannelStringEx(String + 5, gShowChPrefix, gScanChannel);
} else if (gScanState < 2) { } else if (gScanCssState < SCAN_CSS_STATE_FOUND) {
strcpy(String, "SCAN"); strcpy(String, "SCAN");
memset(String + 4, '.', (g_20000464 & 7) + 1); memset(String + 4, '.', (g_20000464 & 7) + 1);
} else { } else {
if (gScanState == 2) { if (gScanCssState == SCAN_CSS_STATE_FOUND) {
strcpy(String, "SCAN CMP."); strcpy(String, "SCAN CMP.");
} else { } else {
strcpy(String, "SCAN FAIL."); strcpy(String, "SCAN FAIL.");