diff --git a/app/aircopy.c b/app/aircopy.c index 4fd5fcb..a1cd095 100644 --- a/app/aircopy.c +++ b/app/aircopy.c @@ -14,8 +14,6 @@ * limitations under the License. */ -#ifdef ENABLE_AIRCOPY - #include "app/aircopy.h" #include "audio.h" #include "driver/bk4819.h" @@ -71,7 +69,9 @@ void AIRCOPY_StorePacket(void) g_fsk_wite_index = 0; g_update_display = true; - Status = BK4819_ReadRegister(BK4819_REG_0B); + + Status = BK4819_ReadRegister(BK4819_REG_0B); + BK4819_PrepareFSKReceive(); // Doc says bit 4 should be 1 = CRC OK, 0 = CRC FAIL, but original firmware checks for FAIL. @@ -85,12 +85,11 @@ void AIRCOPY_StorePacket(void) g_fsk_buffer[i + 1] ^= Obfuscation[i % 8]; CRC = CRC_Calculate(&g_fsk_buffer[1], 2 + 64); + if (g_fsk_buffer[34] == CRC) { const uint16_t *pData; - uint16_t Offset; - - Offset = g_fsk_buffer[1]; + uint16_t Offset = g_fsk_buffer[1]; if (Offset < 0x1E00) { pData = &g_fsk_buffer[2]; @@ -110,6 +109,7 @@ void AIRCOPY_StorePacket(void) } } } + g_errors_during_air_copyy++; } @@ -121,7 +121,9 @@ static void AIRCOPY_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) unsigned int i; INPUTBOX_Append(Key); + g_request_display_screen = DISPLAY_AIRCOPY; + if (g_input_box_index < 6) { #ifdef ENABLE_VOICE @@ -228,5 +230,3 @@ void AIRCOPY_ProcessKeys(key_code_t Key, bool key_pressed, bool key_held) break; } } - -#endif diff --git a/app/menu.c b/app/menu.c index 1e59884..1e85b0e 100644 --- a/app/menu.c +++ b/app/menu.c @@ -237,6 +237,10 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax) case MENU_D_DCD: case MENU_D_LIVE_DEC: case MENU_AM: + *pMin = 0; + *pMax = ARRAY_SIZE(g_sub_menu_off_on) - 1; + break; + #ifdef ENABLE_NOAA case MENU_NOAA_S: #endif @@ -247,7 +251,7 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax) case MENU_SCREN: case MENU_TX_EN: *pMin = 0; - *pMax = ARRAY_SIZE(g_sub_menu_off_on) - 1; + *pMax = ARRAY_SIZE(g_sub_menu_DIS_EN) - 1; break; case MENU_SCR: @@ -656,7 +660,14 @@ void MENU_AcceptSetting(void) case MENU_PTT_ID: g_tx_vfo->dtmf_ptt_id_tx_mode = g_sub_menu_selection; - g_request_save_channel = 1; + g_request_save_channel = 1; + if (g_sub_menu_selection == PTT_ID_TX_DOWN || + g_sub_menu_selection == PTT_ID_BOTH || + g_sub_menu_selection == PTT_ID_APOLLO) + { + g_eeprom.roger_mode = ROGER_MODE_OFF; + break; + } return; case MENU_BAT_TXT: diff --git a/driver/bk4819.c b/driver/bk4819.c index dd380f2..b20a465 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -1038,6 +1038,7 @@ void BK4819_PlaySingleTone(const unsigned int tone_Hz, const unsigned int delay, BK4819_WriteRegister(BK4819_REG_70, 0x0000); BK4819_WriteRegister(BK4819_REG_30, 0xC1FE); + BK4819_ExitTxMute(); } void BK4819_EnterTxMute(void) diff --git a/firmware.bin b/firmware.bin index fd53dd8..4d37657 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index 1b46612..24f9ebd 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ diff --git a/ui/aircopy.c b/ui/aircopy.c index 1c43242..9de8198 100644 --- a/ui/aircopy.c +++ b/ui/aircopy.c @@ -14,8 +14,6 @@ * limitations under the License. */ -#ifdef ENABLE_AIRCOPY - #include #include "app/aircopy.h" @@ -61,5 +59,3 @@ void UI_DisplayAircopy(void) ST7565_BlitFullScreen(); } - -#endif diff --git a/ui/menu.c b/ui/menu.c index 9869cb2..0beced3 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -126,7 +126,7 @@ const t_menu_item g_menu_list[] = // hidden menu items from here on // enabled by pressing both the PTT and upper side button at power-on - {"F LOCK", VOICE_ID_INVALID, MENU_F_LOCK }, + {"F LOCK", VOICE_ID_INVALID, MENU_F_LOCK }, // country/area specific {"Tx 200", VOICE_ID_INVALID, MENU_200TX }, // was "200TX" {"Tx 350", VOICE_ID_INVALID, MENU_350TX }, // was "350TX" {"Tx 500", VOICE_ID_INVALID, MENU_500TX }, // was "500TX" @@ -325,6 +325,12 @@ const char g_sub_menu_BAT_TXT[3][8] = "PERCENT" }; +const char g_sub_menu_DIS_EN[2][9] = +{ + "DISABLED", + "ENABLED" +}; + const char g_sub_menu_SCRAMBLER[11][7] = { "OFF", @@ -677,18 +683,33 @@ void UI_DisplayMenu(void) case MENU_D_ST: case MENU_D_DCD: case MENU_D_LIVE_DEC: + strcpy(String, g_sub_menu_off_on[g_sub_menu_selection]); + break; + #ifdef ENABLE_NOAA case MENU_NOAA_S: + strcpy(String, "SCAN\n"); + strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]); + break; #endif + case MENU_350TX: case MENU_200TX: case MENU_500TX: case MENU_350EN: - case MENU_SCREN: - case MENU_TX_EN: - strcpy(String, g_sub_menu_off_on[g_sub_menu_selection]); + strcpy(String, g_sub_menu_DIS_EN[g_sub_menu_selection]); break; + case MENU_SCREN: + strcpy(String, "SCRAMBLER\n"); + strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]); + break; + + case MENU_TX_EN: + strcpy(String, "TX\n"); + strcat(String, g_sub_menu_DIS_EN[g_sub_menu_selection]); + break; + case MENU_MEM_CH: case MENU_1_CALL: case MENU_DEL_CH: diff --git a/ui/menu.h b/ui/menu.h index bf7e86d..16151dd 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -170,9 +170,8 @@ extern const char g_sub_menu_rx_tx[4][6]; extern const char g_sub_menu_AM_fix_test1[4][8]; #endif extern const char g_sub_menu_BAT_TXT[3][8]; - +extern const char g_sub_menu_DIS_EN[2][9]; extern const char g_sub_menu_SCRAMBLER[11][7]; - extern const char g_sub_menu_SIDE_BUTT[9][16]; extern bool g_is_in_sub_menu;