diff --git a/app/app.c b/app/app.c index f4bee7e..769de9d 100644 --- a/app/app.c +++ b/app/app.c @@ -1847,7 +1847,8 @@ void APP_TimeSlice10ms(void) } else { // RF carrier found - // stop RF the scan and move on too the CTCSS/CDCSS scan + // + // stop RF search and start CTCSS/CDCSS search BK4819_SetScanFrequency(g_search_frequency); @@ -1858,10 +1859,9 @@ void APP_TimeSlice10ms(void) g_search_freq_css_timer_10ms = 0; g_search_css_state = SEARCH_CSS_STATE_SCANNING; - GUI_SelectNextDisplay(DISPLAY_SEARCH); - g_update_status = true; g_update_display = true; + GUI_SelectNextDisplay(DISPLAY_SEARCH); } g_search_delay_10ms = scan_freq_css_delay_10ms; @@ -1873,9 +1873,10 @@ void APP_TimeSlice10ms(void) { // CTCSS/CDCSS search timeout #if defined(ENABLE_CODE_SEARCH_TIMEOUT) - BK4819_Disable(); g_search_css_state = SEARCH_CSS_STATE_FAILED; + BK4819_Disable(); + AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; g_update_display = true; @@ -1884,9 +1885,10 @@ void APP_TimeSlice10ms(void) #else if (!g_search_single_frequency) { - BK4819_Disable(); g_search_css_state = SEARCH_CSS_STATE_FAILED; + BK4819_Disable(); + AUDIO_PlayBeep(BEEP_880HZ_60MS_TRIPLE_BEEP); g_update_status = true; g_update_display = true; @@ -1903,11 +1905,12 @@ void APP_TimeSlice10ms(void) if (ScanResult == BK4819_CSS_RESULT_CDCSS) { // found a CDCSS code - const uint8_t Code = DCS_GetCdcssCode(Result); - if (Code != 0xFF) + const uint8_t code = DCS_GetCdcssCode(Result); + if (code != 0xFF) { - g_search_css_result_code = Code; + g_search_hit_count = 0; g_search_css_result_type = CODE_TYPE_DIGITAL; + g_search_css_result_code = code; g_search_css_state = SEARCH_CSS_STATE_FOUND; g_search_use_css_result = true; @@ -1915,6 +1918,13 @@ void APP_TimeSlice10ms(void) g_update_status = true; g_update_display = true; } + else + { + g_search_hit_count = 0; + g_search_css_result_type = CODE_TYPE_NONE; + g_search_css_result_code = code; + g_search_use_css_result = false; + } } else if (ScanResult == BK4819_CSS_RESULT_CTCSS) @@ -1925,7 +1935,7 @@ void APP_TimeSlice10ms(void) if (code == g_search_css_result_code && g_search_css_result_type == CODE_TYPE_CONTINUOUS_TONE) { - if (++g_search_hit_count >= 2) + if (++g_search_hit_count >= 3) { g_search_css_state = SEARCH_CSS_STATE_FOUND; g_search_use_css_result = true; @@ -1936,10 +1946,19 @@ void APP_TimeSlice10ms(void) } } else - g_search_hit_count = 0; - - g_search_css_result_type = CODE_TYPE_CONTINUOUS_TONE; - g_search_css_result_code = code; + { + g_search_hit_count = 1; + g_search_css_result_type = CODE_TYPE_CONTINUOUS_TONE; + g_search_css_result_code = code; + g_search_use_css_result = false; + } + } + else + { + g_search_hit_count = 0; + g_search_css_result_type = CODE_TYPE_NONE; + g_search_css_result_code = 0xff; + g_search_use_css_result = false; } } diff --git a/app/uart.c b/app/uart.c index fa13ed8..123e68f 100644 --- a/app/uart.c +++ b/app/uart.c @@ -348,8 +348,8 @@ static void cmd_051D(const uint8_t *pBuffer) #endif #ifdef ENABLE_PWRON_PASSWORD - if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !g_password_locked || pCmd->bAllowPassword) - EEPROM_WriteBuffer(Offset, &pCmd->Data[i * write_size]); + if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !g_password_locked || pCmd->allow_password) + EEPROM_WriteBuffer(Offset, &data[i * write_size]); #else EEPROM_WriteBuffer(Offset, &data[i * write_size]); #endif diff --git a/firmware.bin b/firmware.bin index 9b6f79e..f363194 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index e07ce7e..4cb806f 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/ui/lock.c b/ui/lock.c index 6535c49..65b09bd 100644 --- a/ui/lock.c +++ b/ui/lock.c @@ -50,8 +50,12 @@ static void Render(void) void UI_DisplayLock(void) { - key_code_t Key; - beep_type_t Beep; + unsigned int g_debounce_counter = 0; +// bool g_key_being_held = false; + key_code_t g_key_reading_0 = KEY_INVALID; +// key_code_t g_key_reading_1; + key_code_t Key; + beep_type_t Beep; g_update_display = true; @@ -73,11 +77,11 @@ void UI_DisplayLock(void) { if (Key == KEY_INVALID) { - g_key_reading_1 = KEY_INVALID; +// g_key_reading_1 = KEY_INVALID; } else { - g_key_reading_1 = Key; +// g_key_reading_1 = Key; switch (Key) { @@ -135,13 +139,13 @@ void UI_DisplayLock(void) } } - g_key_being_held = false; +// g_key_being_held = false; } } else { g_debounce_counter = 0; - g_key_reading_0 = Key; + g_key_reading_0 = Key; } if (UART_IsCommandAvailable()) diff --git a/ui/scanner.c b/ui/scanner.c index 9e8e94a..cc045a3 100644 --- a/ui/scanner.c +++ b/ui/scanner.c @@ -93,21 +93,23 @@ void UI_DisplaySearch(void) case SEARCH_CSS_STATE_FOUND: case SEARCH_CSS_STATE_REPEAT: - - switch (g_search_css_result_type) + strcpy(String, "CODE none found"); + if (g_search_use_css_result) { - default: - case CODE_TYPE_NONE: - strcpy(String, "CODE none found"); - break; - case CODE_TYPE_CONTINUOUS_TONE: - sprintf(String, "CTCSS %u.%uHz", CTCSS_OPTIONS[g_search_css_result_code] / 10, CTCSS_OPTIONS[g_search_css_result_code] % 10); - break; - case CODE_TYPE_DIGITAL: - case CODE_TYPE_REVERSE_DIGITAL: - sprintf(String, "CDCSS D%03oN", DCS_OPTIONS[g_search_css_result_code]); - break; - } + switch (g_search_css_result_type) + { + default: + case CODE_TYPE_NONE: + break; + case CODE_TYPE_CONTINUOUS_TONE: + sprintf(String, "CTCSS %u.%uHz", CTCSS_OPTIONS[g_search_css_result_code] / 10, CTCSS_OPTIONS[g_search_css_result_code] % 10); + break; + case CODE_TYPE_DIGITAL: + case CODE_TYPE_REVERSE_DIGITAL: + sprintf(String, "CDCSS D%03oN", DCS_OPTIONS[g_search_css_result_code]); + break; + } + } break; case SEARCH_CSS_STATE_FAILED: