From 46a082ef05576d538ad64384158d67f7e27f0255 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Wed, 11 Oct 2023 16:02:45 +0100 Subject: [PATCH] Fix serial comms mishap, fix dual-watch not starting at power-on --- Makefile | 20 +- README.md | 6 +- app/app.c | 91 ++++---- app/fm.c | 2 + app/menu.c | 4 +- app/scanner.c | 68 +++--- app/scanner.h | 2 +- app/uart.c | 501 ++++++++++++++++++++++++-------------------- audio.c | 249 +++++++++++----------- board.c | 39 ++-- board.h | 2 +- firmware.bin | Bin 61284 -> 61220 bytes firmware.packed.bin | Bin 61302 -> 61238 bytes frequencies.c | 2 +- helper/boot.c | 8 +- helper/boot.h | 15 +- main.c | 39 ++-- misc.c | 9 +- misc.h | 8 +- settings.c | 2 +- ui/menu.c | 36 ++-- ui/menu.h | 2 +- ui/scanner.c | 13 +- 23 files changed, 612 insertions(+), 506 deletions(-) diff --git a/Makefile b/Makefile index ccae5b4..7ce3a44 100644 --- a/Makefile +++ b/Makefile @@ -13,10 +13,12 @@ ENABLE_AIRCOPY := 1 ENABLE_FMRADIO := 1 ENABLE_NOAA := 0 ENABLE_VOICE := 1 +ENABLE_MUTE_RADIO_FOR_VOICE := 0 ENABLE_VOX := 1 ENABLE_ALARM := 1 ENABLE_TX1750 := 1 ENABLE_PWRON_PASSWORD := 0 +ENABLE_RESET_AES_KEY := 1 ENABLE_BIG_FREQ := 0 ENABLE_SMALL_BOLD := 1 ENABLE_KEEP_MEM_NAME := 1 @@ -30,7 +32,6 @@ ENABLE_SHOW_CHARGE_LEVEL := 0 ENABLE_REVERSE_BAT_SYMBOL := 1 ENABLE_CODE_SCAN_TIMEOUT := 0 ENABLE_FREQ_CODE_SCAN_TIMEOUT := 1 -ENABLE_FREQ_CODE_ROUNDING := 0 ENABLE_AM_FIX := 1 ENABLE_AM_FIX_SHOW_DATA := 1 ENABLE_SQUELCH_MORE_SENSITIVE := 1 @@ -209,10 +210,10 @@ CFLAGS = ifeq ($(ENABLE_CLANG),0) #CFLAGS += -Os -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD - CFLAGS += -Os -Wall -Werror -mcpu=cortex-m0 -std=c11 -MMD + CFLAGS += -Os -Werror -mcpu=cortex-m0 -std=c11 -MMD else # Oz needed to make it fit on flash - CFLAGS += -Oz -Wall -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD + CFLAGS += -Oz -Werror -mcpu=cortex-m0 -fno-builtin -fshort-enums -fno-delete-null-pointer-checks -std=c11 -MMD endif ifeq ($(ENABLE_LTO),1) @@ -227,9 +228,7 @@ endif # catch any and all warnings # better to bust than add new bugs -#CFLAGS += -Wall -#CFLAGS += -Wextra -#CFLAGS += -Wpedantic +CFLAGS += -Wall -Wextra -Wpedantic CFLAGS += -DPRINTF_INCLUDE_CONFIG_H CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\" @@ -263,6 +262,9 @@ endif ifeq ($(ENABLE_VOICE),1) CFLAGS += -DENABLE_VOICE endif +ifeq ($(ENABLE_MUTE_RADIO_FOR_VOICE),1) + CFLAGS += -DENABLE_MUTE_RADIO_FOR_VOICE +endif ifeq ($(ENABLE_VOX),1) CFLAGS += -DENABLE_VOX endif @@ -275,6 +277,9 @@ endif ifeq ($(ENABLE_PWRON_PASSWORD),1) CFLAGS += -DENABLE_PWRON_PASSWORD endif +ifeq ($(ENABLE_RESET_AES_KEY),1) + CFLAGS += -DENABLE_RESET_AES_KEY +endif ifeq ($(ENABLE_KEEP_MEM_NAME),1) CFLAGS += -DENABLE_KEEP_MEM_NAME endif @@ -308,9 +313,6 @@ endif ifeq ($(ENABLE_FREQ_CODE_SCAN_TIMEOUT),1) CFLAGS += -DENABLE_FREQ_CODE_SCAN_TIMEOUT endif -ifeq ($(ENABLE_FREQ_CODE_ROUNDING),1) - CFLAGS += -DENABLE_FREQ_CODE_ROUNDING -endif ifeq ($(ENABLE_AM_FIX),1) CFLAGS += -DENABLE_AM_FIX endif diff --git a/README.md b/README.md index e228ffd..e04acf0 100644 --- a/README.md +++ b/README.md @@ -36,14 +36,16 @@ ENABLE_OVERLAY := 0 cpu FLASH stuff, not needed ENABLE_LTO := 0 **experimental, reduces size of compiled firmware but might break EEPROM reads (OVERLAY will be disabled if you enable this) ENABLE_UART := 1 without this you can't configure radio via PC ENABLE_UART_DEBUG := 0 just for code debugging, it sends debug info along the USB serial connection (programming lead) -ENABLE_AIRCOPY := 0 easier to just enter frequency with butts +ENABLE_AIRCOPY := 1 clone radio-to-radio via RF ENABLE_FMRADIO := 1 WBFM VHF broadcast band receiver ENABLE_NOAA := 1 everything NOAA (only of any use in the USA) ENABLE_VOICE := 0 want to hear voices ? +ENABLE_MUTE_RADIO_FOR_VOICE := 1 mute the radios audio when a voice is playing ENABLE_VOX := 1 voice operated transmission ENABLE_ALARM := 1 TX alarms ENABLE_1750HZ := 1 side key 1750Hz TX tone (older style repeater access) -ENABLE_PWRON_PASSWORD := 1 power-on password stuff +ENABLE_PWRON_PASSWORD := 0 '1' = allow power-on password +ENABLE_RESET_AES_KEY := 1 '1' = reset/clear the AES key stored in the eeprom ENABLE_BIG_FREQ := 0 big font frequencies (like original QS firmware) ENABLE_SMALL_BOLD := 1 bold channel name/no. (when name + freq channel display mode) ENABLE_KEEP_MEM_NAME := 1 maintain channel name when (re)saving memory channel diff --git a/app/app.c b/app/app.c index 2233463..ee4c722 100644 --- a/app/app.c +++ b/app/app.c @@ -579,9 +579,15 @@ void APP_StartListening(function_type_t Function, const bool reset_am_fix) (g_eeprom.dac_gain << 0)); // AF DAC Gain (after Gain-1 and Gain-2) #ifdef ENABLE_VOICE - if (g_voice_write_index == 0) // AM/FM RX mode will be set when the voice has finished + #ifdef MUTE_AUDIO_FOR_VOICE + if (g_voice_write_index == 0) + BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); + #else + BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); + #endif + #else + BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); #endif - BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); // no need, set it now FUNCTION_Select(Function); @@ -887,14 +893,15 @@ void APP_CheckRadioInterrupts(void) g_power_save_expired = false; } - if (g_eeprom.dual_watch != DUAL_WATCH_OFF && (g_schedule_dual_watch || g_dual_watch_count_down_10ms < dual_watch_count_after_vox_10ms)) + if (g_eeprom.dual_watch != DUAL_WATCH_OFF && + (g_schedule_dual_watch || g_dual_watch_count_down_10ms < dual_watch_count_after_vox_10ms)) { g_dual_watch_count_down_10ms = dual_watch_count_after_vox_10ms; g_schedule_dual_watch = false; // let the user see DW is not active g_dual_watch_active = false; - g_update_status = true; + g_update_status = true; } } } @@ -1127,6 +1134,7 @@ void APP_Update(void) { NOAA_IncreaseChannel(); RADIO_SetupRegisters(false); + g_noaa_count_down_10ms = 7; // 70ms g_schedule_noaa = false; } @@ -1136,17 +1144,21 @@ void APP_Update(void) // toggle between the VFO's if dual watch is enabled if (g_screen_to_display != DISPLAY_SCANNER && g_eeprom.dual_watch != DUAL_WATCH_OFF) { - #ifdef ENABLE_VOICE - if (g_voice_write_index == 0) + #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) + //UART_SendText("dual watch\r\n"); #endif + + #ifdef ENABLE_VOICE + if (g_voice_write_index == 0) + #endif { if (g_schedule_dual_watch) { if (g_scan_state_dir == SCAN_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) { - #ifdef ENABLE_FMRADIO - if (!g_fm_radio_mode) - #endif + #ifdef ENABLE_FMRADIO + if (!g_fm_radio_mode) + #endif { if (!g_ptt_is_pressed && g_dtmf_call_state == DTMF_CALL_STATE_NONE && @@ -1168,30 +1180,30 @@ void APP_Update(void) } } - #ifdef ENABLE_FMRADIO - if (g_schedule_fm && - g_fm_scan_state != FM_SCAN_OFF && - g_current_function != FUNCTION_MONITOR && - g_current_function != FUNCTION_RECEIVE && - g_current_function != FUNCTION_TRANSMIT) - { // switch to FM radio mode - FM_Play(); - g_schedule_fm = false; - } - #endif +#ifdef ENABLE_FMRADIO + if (g_schedule_fm && + g_fm_scan_state != FM_SCAN_OFF && + g_current_function != FUNCTION_MONITOR && + g_current_function != FUNCTION_RECEIVE && + g_current_function != FUNCTION_TRANSMIT) + { // switch to FM radio mode + FM_Play(); + g_schedule_fm = false; + } +#endif - #ifdef ENABLE_VOX - if (g_eeprom.vox_switch) - APP_HandleVox(); - #endif +#ifdef ENABLE_VOX + if (g_eeprom.vox_switch) + APP_HandleVox(); +#endif if (g_schedule_power_save) { #ifdef ENABLE_NOAA if ( - #ifdef ENABLE_FMRADIO - g_fm_radio_mode || - #endif + #ifdef ENABLE_FMRADIO + g_fm_radio_mode || + #endif g_ptt_is_pressed || g_key_held || g_eeprom.battery_save == 0 || @@ -1495,7 +1507,7 @@ void APP_TimeSlice10ms(void) UI_DisplayStatus(false); return; } - + #ifdef ENABLE_BOOT_BEEPS if (g_boot_counter_10ms > 0 && (g_boot_counter_10ms % 25) == 0) AUDIO_PlayBeep(BEEP_880HZ_40MS_OPTIONAL); @@ -1641,7 +1653,7 @@ void APP_TimeSlice10ms(void) } if (g_scanner_edit_state != SCAN_EDIT_STATE_NONE) - { + { // waiting for user input choice APP_CheckKeys(); return; } @@ -1673,14 +1685,7 @@ void APP_TimeSlice10ms(void) BK4819_DisableFrequencyScan(); - #ifdef ENABLE_FREQ_CODE_ROUNDING - { // round to nearest step multiple - const uint32_t step = STEP_FREQ_TABLE[g_step_setting]; - g_scan_frequency = ((Result + (step / 2)) / step) * step; - } - #else - g_scan_frequency = Result; - #endif + g_scan_frequency = Result; if (g_scan_hit_count < 3) { // keep scanning for an RF carrier @@ -1736,7 +1741,7 @@ void APP_TimeSlice10ms(void) BK4819_Disable(); if (ScanResult == BK4819_CSS_RESULT_CDCSS) - { + { // found a CDCSS code const uint8_t Code = DCS_GetCdcssCode(Result); if (Code != 0xFF) { @@ -1750,7 +1755,7 @@ void APP_TimeSlice10ms(void) } else if (ScanResult == BK4819_CSS_RESULT_CTCSS) - { + { // found a CTCSS tone const uint8_t code = DCS_GetCtcssCode(CtcssFreq); if (code != 0xFF) { @@ -1773,8 +1778,7 @@ void APP_TimeSlice10ms(void) } } - if (g_scan_css_state == SCAN_CSS_STATE_OFF || - g_scan_css_state == SCAN_CSS_STATE_SCANNING) + if (g_scan_css_state == SCAN_CSS_STATE_OFF || g_scan_css_state == SCAN_CSS_STATE_SCANNING) { // re-start scan BK4819_SetScanFrequency(g_scan_frequency); g_scan_delay_10ms = scan_freq_css_delay_10ms; @@ -1840,7 +1844,7 @@ void APP_TimeSlice500ms(void) { // config upload/download is running return; } - + if (g_keypad_locked > 0) if (--g_keypad_locked == 0) g_update_display = true; @@ -2269,7 +2273,7 @@ static void APP_ProcessKey(const key_code_t Key, const bool key_pressed, const b return; backlight_turn_on(); - + g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; // AUDIO_PlayBeep(BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL); @@ -2393,7 +2397,6 @@ static void APP_ProcessKey(const key_code_t Key, const bool key_pressed, const b #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) UART_printf("proc key 1 %3u %u %u %u %u\r\n", Key, key_pressed, key_held, g_fkey_pressed, flag); #endif - } if (g_fkey_pressed && (Key == KEY_PTT || Key == KEY_EXIT || Key == KEY_SIDE1 || Key == KEY_SIDE2)) diff --git a/app/fm.c b/app/fm.c index e985216..6fc7402 100644 --- a/app/fm.c +++ b/app/fm.c @@ -388,6 +388,8 @@ static void FM_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) static void FM_Key_STAR(bool key_pressed, bool key_held) { + (void)key_held; // stop compiler warning + // if (key_held) // return; diff --git a/app/menu.c b/app/menu.c index b13081a..77fb175 100644 --- a/app/menu.c +++ b/app/menu.c @@ -792,7 +792,7 @@ void MENU_AcceptSetting(void) break; case MENU_F_LOCK: - g_setting_f_lock = g_sub_menu_selection; + g_setting_freq_lock = g_sub_menu_selection; break; case MENU_200TX: @@ -1226,7 +1226,7 @@ void MENU_ShowCurrentSetting(void) break; case MENU_F_LOCK: - g_sub_menu_selection = g_setting_f_lock; + g_sub_menu_selection = g_setting_freq_lock; break; case MENU_200TX: diff --git a/app/scanner.c b/app/scanner.c index d59af5b..f983a53 100644 --- a/app/scanner.c +++ b/app/scanner.c @@ -19,6 +19,7 @@ #include "app/scanner.h" #include "audio.h" #include "driver/bk4819.h" +#include "driver/uart.h" #include "frequencies.h" #include "misc.h" #include "radio.h" @@ -46,10 +47,10 @@ bool g_scan_keep_frequency; static void SCANNER_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) { - if (key_held || !key_pressed) + if (key_held || key_pressed) return; - if (g_scanner_edit_state == SCAN_EDIT_STATE_BUSY) + if (g_scanner_edit_state == SCAN_EDIT_STATE_SAVE) { uint16_t Channel; @@ -86,7 +87,7 @@ static void SCANNER_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held) static void SCANNER_Key_EXIT(bool key_pressed, bool key_held) { - if (key_held || !key_pressed) + if (key_held || key_pressed) return; g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; @@ -106,7 +107,7 @@ static void SCANNER_Key_EXIT(bool key_pressed, bool key_held) #endif break; - case SCAN_EDIT_STATE_BUSY: + case SCAN_EDIT_STATE_SAVE: if (g_input_box_index > 0) { g_input_box[--g_input_box_index] = 10; @@ -130,10 +131,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) { uint8_t Channel; - if (key_held) - return; - - if (!key_pressed) + if (key_held || key_pressed) return; if (g_scan_css_state == SCAN_CSS_STATE_OFF && !g_scan_single_frequency) @@ -164,7 +162,6 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) case SCAN_EDIT_STATE_NONE: if (!g_scan_single_frequency) { - #if 0 uint32_t Freq250 = FREQUENCY_FloorToStep(g_scan_frequency, 250, 0); uint32_t Freq625 = FREQUENCY_FloorToStep(g_scan_frequency, 625, 0); @@ -196,7 +193,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) g_step_setting = STEP_2_5kHz; g_scan_frequency = Freq250; } - #else + #elif 0 #ifdef ENABLE_1250HZ_STEP const step_setting_t small_step = STEP_1_25kHz; @@ -239,18 +236,37 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) g_step_setting = big_step; g_scan_frequency = freq_big_step; } + + #else + #ifdef ENABLE_1250HZ_STEP + g_step_setting = STEP_1_25kHz; + #else + g_step_setting = STEP_2_5kHz; + #endif + { // round to the nearest step size + const uint32_t step = STEP_FREQ_TABLE[g_step_setting]; + g_scan_frequency = ((g_scan_frequency + (step / 2)) / step) * step; + } #endif } if (g_tx_vfo->channel_save <= USER_CHANNEL_LAST) { - g_scanner_edit_state = SCAN_EDIT_STATE_BUSY; - g_scan_channel = g_tx_vfo->channel_save; - g_show_chan_prefix = RADIO_CheckValidChannel(g_tx_vfo->channel_save, false, 0); + g_scan_channel = g_tx_vfo->channel_save; + g_show_chan_prefix = RADIO_CheckValidChannel(g_tx_vfo->channel_save, false, 0); + g_scanner_edit_state = SCAN_EDIT_STATE_SAVE; } else { - g_scanner_edit_state = SCAN_EDIT_STATE_DONE; + #if 0 + // save the VFO + g_scanner_edit_state = SCAN_EDIT_STATE_DONE; + #else + // save to a desired channel + g_scan_channel = RADIO_FindNextChannel(0, SCAN_FWD, false, g_eeprom.tx_vfo); + g_show_chan_prefix = RADIO_CheckValidChannel(g_scan_channel, false, 0); + g_scanner_edit_state = SCAN_EDIT_STATE_SAVE; + #endif } g_scan_css_state = SCAN_CSS_STATE_FOUND; @@ -263,7 +279,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) g_update_status = true; break; - case SCAN_EDIT_STATE_BUSY: + case SCAN_EDIT_STATE_SAVE: if (g_input_box_index == 0) { g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; @@ -273,6 +289,10 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) break; case SCAN_EDIT_STATE_DONE: + #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) + //UART_SendText("edit done\r\n"); + #endif + if (!g_scan_single_frequency) { RADIO_InitInfo(g_tx_vfo, g_tx_vfo->channel_save, g_scan_frequency); @@ -280,7 +300,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) if (g_scan_use_css_result) { g_tx_vfo->freq_config_rx.code_type = g_scan_css_result_type; - g_tx_vfo->freq_config_rx.code = g_scan_css_result_code; + g_tx_vfo->freq_config_rx.code = g_scan_css_result_code; } g_tx_vfo->freq_config_tx = g_tx_vfo->freq_config_rx; @@ -292,9 +312,9 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) RADIO_ConfigureChannel(1, VFO_CONFIGURE_RELOAD); g_tx_vfo->freq_config_rx.code_type = g_scan_css_result_type; - g_tx_vfo->freq_config_rx.code = g_scan_css_result_code; + g_tx_vfo->freq_config_rx.code = g_scan_css_result_code; g_tx_vfo->freq_config_tx.code_type = g_scan_css_result_type; - g_tx_vfo->freq_config_tx.code = g_scan_css_result_code; + g_tx_vfo->freq_config_tx.code = g_scan_css_result_code; } if (g_tx_vfo->channel_save <= USER_CHANNEL_LAST) @@ -329,7 +349,7 @@ static void SCANNER_Key_MENU(bool key_pressed, bool key_held) static void SCANNER_Key_STAR(bool key_pressed, bool key_held) { - if (key_held || !key_pressed) + if (key_held || key_pressed) return; g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; @@ -345,16 +365,16 @@ static void SCANNER_Key_UP_DOWN(bool key_pressed, bool pKeyHeld, int8_t Directio } else { - if (!key_pressed) + if (key_pressed) return; g_input_box_index = 0; g_beep_to_play = BEEP_1KHZ_60MS_OPTIONAL; } - if (g_scanner_edit_state == SCAN_EDIT_STATE_BUSY) + if (g_scanner_edit_state == SCAN_EDIT_STATE_SAVE) { - g_scan_channel = NUMBER_AddWithWraparound(g_scan_channel, Direction, 0, USER_CHANNEL_LAST); + g_scan_channel = NUMBER_AddWithWraparound(g_scan_channel, Direction, 0, USER_CHANNEL_LAST); g_show_chan_prefix = RADIO_CheckValidChannel(g_scan_channel, false, 0); g_request_display_screen = DISPLAY_SCANNER; } @@ -460,9 +480,9 @@ void SCANNER_Start(void) g_CDCSS_lost = false; g_CDCSS_code_type = 0; g_CTCSS_lost = false; - #ifdef ENABLE_VOX + #ifdef ENABLE_VOX g_vox_lost = false; - #endif + #endif g_squelch_lost = false; g_scanner_edit_state = SCAN_EDIT_STATE_NONE; g_scan_freq_css_timer_10ms = 0; diff --git a/app/scanner.h b/app/scanner.h index 65fee6e..4f9014b 100644 --- a/app/scanner.h +++ b/app/scanner.h @@ -40,7 +40,7 @@ typedef enum scan_state_dir_e scan_state_dir_t; enum scan_edit_state_e { SCAN_EDIT_STATE_NONE = 0, - SCAN_EDIT_STATE_BUSY, + SCAN_EDIT_STATE_SAVE, SCAN_EDIT_STATE_DONE }; typedef enum scan_edit_state_e scan_edit_state_t; diff --git a/app/uart.c b/app/uart.c index e46e0a6..127e24d 100644 --- a/app/uart.c +++ b/app/uart.c @@ -14,6 +14,8 @@ * limitations under the License. */ +#define INCLUDE_AES + #include #if !defined(ENABLE_OVERLAY) @@ -43,65 +45,70 @@ #define DMA_INDEX(x, y) (((x) + (y)) % sizeof(UART_DMA_Buffer)) +#define EEPROM_SIZE 0x2000u // 8192 .. BL24C64 I2C eeprom chip + +// **************************************************** + typedef struct { uint16_t ID; uint16_t Size; -} Header_t; +} __attribute__((packed)) Header_t; typedef struct { - uint8_t Padding[2]; + uint8_t pad[2]; uint16_t ID; -} Footer_t; +} __attribute__((packed)) Footer_t; typedef struct { Header_t Header; - uint32_t Timestamp; -} CMD_0514_t; + uint32_t time_stamp; +} __attribute__((packed)) cmd_0514_t; +// version typedef struct { Header_t Header; struct { char Version[16]; - bool g_has_custom_aes_key; - bool g_is_in_lock_screen; - uint8_t Padding[2]; + uint8_t has_custom_aes_key; + uint8_t password_locked; + uint8_t pad[2]; uint32_t Challenge[4]; - } Data; -} REPLY_0514_t; + } __attribute__((packed)) Data; +} __attribute__((packed)) reply_0514_t; typedef struct { Header_t Header; uint16_t Offset; uint8_t Size; - uint8_t Padding; - uint32_t Timestamp; -} CMD_051B_t; + uint8_t pad; + uint32_t time_stamp; +} __attribute__((packed)) cmd_051B_t; typedef struct { Header_t Header; struct { uint16_t Offset; uint8_t Size; - uint8_t Padding; + uint8_t pad; uint8_t Data[128]; - } Data; -} REPLY_051B_t; + } __attribute__((packed)) Data; +} __attribute__((packed)) reply_051B_t; typedef struct { Header_t Header; uint16_t Offset; uint8_t Size; - bool bAllowPassword; - uint32_t Timestamp; - uint8_t Data[0]; -} CMD_051D_t; + uint8_t allow_password; + uint32_t time_stamp; +// uint8_t Data[0]; // new compiler strict warning settings doesn't allow zero-length arrays +} __attribute__((packed)) cmd_051D_t; typedef struct { Header_t Header; struct { uint16_t Offset; - } Data; -} REPLY_051D_t; + } __attribute__((packed)) Data; +} __attribute__((packed)) reply_051D_t; typedef struct { Header_t Header; @@ -109,39 +116,34 @@ typedef struct { uint16_t RSSI; uint8_t ExNoiseIndicator; uint8_t GlitchIndicator; - } Data; -} REPLY_0527_t; + } __attribute__((packed)) Data; +} __attribute__((packed)) reply_0527_t; typedef struct { Header_t Header; struct { uint16_t Voltage; uint16_t Current; - } Data; -} REPLY_0529_t; + } __attribute__((packed)) Data; +} __attribute__((packed)) reply_0529_t; typedef struct { Header_t Header; uint32_t Response[4]; -} CMD_052D_t; +} __attribute__((packed)) cmd_052D_t; typedef struct { Header_t Header; struct { - bool bIsLocked; - uint8_t Padding[3]; - } Data; -} REPLY_052D_t; + uint8_t locked; + uint8_t pad[3]; + } __attribute__((packed)) Data; +} __attribute__((packed)) reply_052D_t; typedef struct { Header_t Header; - uint32_t Timestamp; -} CMD_052F_t; - -static const uint8_t Obfuscation[16] = -{ - 0x16, 0x6C, 0x14, 0xE6, 0x2E, 0x91, 0x0D, 0x40, 0x21, 0x35, 0xD5, 0x40, 0x13, 0x03, 0xE9, 0x80 -}; + uint32_t time_stamp; +} __attribute__((packed)) cmd_052F_t; static union { @@ -149,73 +151,81 @@ static union struct { Header_t Header; - uint8_t Data[252]; - }; -} UART_Command; + uint8_t Data[252]; + } __attribute__((packed)); +} __attribute__((packed)) UART_Command; -static uint32_t Timestamp; -static uint16_t g_uart_write_index; -static bool bIsEncrypted = true; +static const uint8_t Obfuscation[16] = { + 0x16, 0x6C, 0x14, 0xE6, 0x2E, 0x91, 0x0D, 0x40, 0x21, 0x35, 0xD5, 0x40, 0x13, 0x03, 0xE9, 0x80 +}; -static void SendReply(void *pReply, uint16_t Size) +uint32_t time_stamp = 0; +uint16_t write_index = 0; +bool is_encrypted = true; + +#ifdef INCLUDE_AES + uint8_t is_locked = (uint8_t)true; + uint8_t try_count = 0; +#endif + +// **************************************************** + +static void SendReply(void *preply, uint16_t Size) { Header_t Header; Footer_t Footer; - if (bIsEncrypted) + if (is_encrypted) { - uint8_t *pBytes = (uint8_t *)pReply; + uint8_t *pBytes = (uint8_t *)preply; unsigned int i; for (i = 0; i < Size; i++) pBytes[i] ^= Obfuscation[i % 16]; } - Header.ID = 0xCDAB; + Header.ID = 0xCDAB; Header.Size = Size; UART_Send(&Header, sizeof(Header)); - UART_Send(pReply, Size); + UART_Send(preply, Size); - if (bIsEncrypted) + if (is_encrypted) { - Footer.Padding[0] = Obfuscation[(Size + 0) % 16] ^ 0xFF; - Footer.Padding[1] = Obfuscation[(Size + 1) % 16] ^ 0xFF; + Footer.pad[0] = Obfuscation[(Size + 0) % 16] ^ 0xFF; + Footer.pad[1] = Obfuscation[(Size + 1) % 16] ^ 0xFF; } else { - Footer.Padding[0] = 0xFF; - Footer.Padding[1] = 0xFF; + Footer.pad[0] = 0xFF; + Footer.pad[1] = 0xFF; } Footer.ID = 0xBADC; - UART_Send(&Footer, sizeof(Footer)); } static void SendVersion(void) { - REPLY_0514_t Reply; + reply_0514_t reply; - Reply.Header.ID = 0x0515; - Reply.Header.Size = sizeof(Reply.Data); - strcpy(Reply.Data.Version, Version); - Reply.Data.g_has_custom_aes_key = g_has_custom_aes_key; - Reply.Data.g_is_in_lock_screen = g_is_in_lock_screen; - Reply.Data.Challenge[0] = g_challenge[0]; - Reply.Data.Challenge[1] = g_challenge[1]; - Reply.Data.Challenge[2] = g_challenge[2]; - Reply.Data.Challenge[3] = g_challenge[3]; + memset(&reply, 0, sizeof(reply)); + reply.Header.ID = 0x0515; + reply.Header.Size = sizeof(reply.Data); + strcpy(reply.Data.Version, Version); + reply.Data.has_custom_aes_key = g_has_custom_aes_key; + reply.Data.password_locked = g_password_locked; + reply.Data.Challenge[0] = g_challenge[0]; + reply.Data.Challenge[1] = g_challenge[1]; + reply.Data.Challenge[2] = g_challenge[2]; + reply.Data.Challenge[3] = g_challenge[3]; - SendReply(&Reply, sizeof(Reply)); + SendReply(&reply, sizeof(reply)); } +#ifdef INCLUDE_AES + static bool IsBadChallenge(const uint32_t *pKey, const uint32_t *pIn, const uint32_t *pResponse) { unsigned int i; - uint32_t IV[4]; - - IV[0] = 0; - IV[1] = 0; - IV[2] = 0; - IV[3] = 0; + uint32_t IV[4] = {0, 0, 0, 0}; AES_Encrypt(pKey, IV, pIn, IV, true); @@ -226,174 +236,216 @@ static bool IsBadChallenge(const uint32_t *pKey, const uint32_t *pIn, const uint return false; } -static void CMD_0514(const uint8_t *pBuffer) +#endif + +// version +static void cmd_0514(const uint8_t *pBuffer) { - const CMD_0514_t *pCmd = (const CMD_0514_t *)pBuffer; + const cmd_0514_t *pCmd = (const cmd_0514_t *)pBuffer; - Timestamp = pCmd->Timestamp; - - #ifdef ENABLE_FMRADIO - g_fm_radio_count_down_500ms = fm_radio_countdown_500ms; - #endif + time_stamp = pCmd->time_stamp; g_serial_config_count_down_500ms = serial_config_count_down_500ms; - - // turn the LCD backlight off -// GPIO_ClearBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); // show message g_request_display_screen = DISPLAY_MAIN; - g_update_display = true; + g_update_display = true; SendVersion(); } -static void CMD_051B(const uint8_t *pBuffer) +// read eeprom +static void cmd_051B(const uint8_t *pBuffer) { - const CMD_051B_t *pCmd = (const CMD_051B_t *)pBuffer; - REPLY_051B_t Reply; - bool bLocked = false; + const cmd_051B_t *pCmd = (const cmd_051B_t *)pBuffer; + unsigned int addr = pCmd->Offset; + unsigned int size = pCmd->Size; +// bool locked = false; + reply_051B_t reply; - if (pCmd->Timestamp != Timestamp) - return; +// if (pCmd->time_stamp != time_stamp) +// return; g_serial_config_count_down_500ms = serial_config_count_down_500ms; - #ifdef ENABLE_FMRADIO - g_fm_radio_count_down_500ms = fm_radio_countdown_500ms; - #endif + if (addr >= EEPROM_SIZE) + return; - memset(&Reply, 0, sizeof(Reply)); - Reply.Header.ID = 0x051C; - Reply.Header.Size = pCmd->Size + 4; - Reply.Data.Offset = pCmd->Offset; - Reply.Data.Size = pCmd->Size; + if (size > sizeof(reply.Data.Data)) + size = sizeof(reply.Data.Data); + if (size > (EEPROM_SIZE - addr)) + size = EEPROM_SIZE - addr; - if (g_has_custom_aes_key) - bLocked = g_is_locked; + if (size == 0) + return; - if (!bLocked) - EEPROM_ReadBuffer(pCmd->Offset, Reply.Data.Data, pCmd->Size); + memset(&reply, 0, sizeof(reply)); + reply.Header.ID = 0x051C; + reply.Header.Size = size + 4; + reply.Data.Offset = addr; + reply.Data.Size = size; - SendReply(&Reply, pCmd->Size + 8); +// if (g_has_custom_aes_key) +// locked = is_locked; + +// if (!locked) + EEPROM_ReadBuffer(addr, reply.Data.Data, size); + + SendReply(&reply, size + 8); } -static void CMD_051D(const uint8_t *pBuffer) +// write eeprom +static void cmd_051D(const uint8_t *pBuffer) { - const CMD_051D_t *pCmd = (const CMD_051D_t *)pBuffer; - REPLY_051D_t Reply; - bool bReloadEeprom; - bool bIsLocked; + const unsigned int write_size = 8; + const cmd_051D_t *pCmd = (const cmd_051D_t *)pBuffer; + unsigned int addr = pCmd->Offset; + unsigned int size = pCmd->Size; +#ifdef INCLUDE_AES + bool reload_eeprom = false; + bool locked = g_has_custom_aes_key ? is_locked : g_has_custom_aes_key; +#endif + reply_051D_t reply; - if (pCmd->Timestamp != Timestamp) - return; +// if (pCmd->time_stamp != time_stamp) +// return; g_serial_config_count_down_500ms = serial_config_count_down_500ms; - - bReloadEeprom = false; - #ifdef ENABLE_FMRADIO - g_fm_radio_count_down_500ms = fm_radio_countdown_500ms; - #endif + if (addr >= EEPROM_SIZE) + return; - Reply.Header.ID = 0x051E; - Reply.Header.Size = sizeof(Reply.Data); - Reply.Data.Offset = pCmd->Offset; + if (size > sizeof(reply.Data)) + size = sizeof(reply.Data); + if (size > (EEPROM_SIZE - addr)) + size = EEPROM_SIZE - addr; - bIsLocked = g_has_custom_aes_key ? g_is_locked : g_has_custom_aes_key; + if (size == 0) + return; - if (!bIsLocked) + memset(&reply, 0, sizeof(reply)); + reply.Header.ID = 0x051E; + reply.Header.Size = size; + reply.Data.Offset = addr; + +#ifdef INCLUDE_AES + if (!locked) +#endif { + const uint8_t *data = (uint8_t *)&pCmd + sizeof(cmd_051D_t); // point to the RX'ed data to write to eeprom unsigned int i; - for (i = 0; i < (pCmd->Size / 8); i++) + for (i = 0; i < (size / write_size); i++) { - const uint16_t Offset = pCmd->Offset + (i * 8U); + const uint16_t Offset = addr + (i * write_size); - if (Offset >= 0x0F30 && Offset < 0x0F40) - if (!g_is_locked) - bReloadEeprom = true; + if ((Offset + write_size) > EEPROM_SIZE) + break; - if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !g_is_in_lock_screen || pCmd->bAllowPassword) - EEPROM_WriteBuffer(Offset, &pCmd->Data[i * 8U]); + #ifdef INCLUDE_AES + if (Offset >= 0x0F30 && Offset < 0x0F40) // AES key + if (!is_locked) + reload_eeprom = true; + #endif + + #ifdef ENABLE_PWRON_PASSWORD + if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !g_password_locked || pCmd->bAllowPassword) + EEPROM_WriteBuffer(Offset, &pCmd->Data[i * write_size]); + #else + EEPROM_WriteBuffer(Offset, &data[i * write_size]); + #endif } - if (bReloadEeprom) - BOARD_EEPROM_Init(); + #ifdef INCLUDE_AES + if (reload_eeprom) + BOARD_EEPROM_load(); + #endif } - SendReply(&Reply, sizeof(Reply)); + SendReply(&reply, sizeof(reply)); } -static void CMD_0527(void) +// read RSSI +static void cmd_0527(void) { - REPLY_0527_t Reply; + reply_0527_t reply; - Reply.Header.ID = 0x0528; - Reply.Header.Size = sizeof(Reply.Data); - Reply.Data.RSSI = BK4819_ReadRegister(BK4819_REG_67) & 0x01FF; - Reply.Data.ExNoiseIndicator = BK4819_ReadRegister(BK4819_REG_65) & 0x007F; - Reply.Data.GlitchIndicator = BK4819_ReadRegister(BK4819_REG_63); + memset(&reply, 0, sizeof(reply)); + reply.Header.ID = 0x0528; + reply.Header.Size = sizeof(reply.Data); + reply.Data.RSSI = BK4819_ReadRegister(BK4819_REG_67) & 0x01FF; + reply.Data.ExNoiseIndicator = BK4819_ReadRegister(BK4819_REG_65) & 0x007F; + reply.Data.GlitchIndicator = BK4819_ReadRegister(BK4819_REG_63); - SendReply(&Reply, sizeof(Reply)); + SendReply(&reply, sizeof(reply)); } -static void CMD_0529(void) +// read ADC +static void cmd_0529(void) { - REPLY_0529_t Reply; - - Reply.Header.ID = 0x52A; - Reply.Header.Size = sizeof(Reply.Data); - + uint16_t voltage; + uint16_t current; + reply_0529_t reply; + memset(&reply, 0, sizeof(reply)); + reply.Header.ID = 0x52A; + reply.Header.Size = sizeof(reply.Data); // Original doesn't actually send current! - BOARD_ADC_GetBatteryInfo(&Reply.Data.Voltage, &Reply.Data.Current); - - SendReply(&Reply, sizeof(Reply)); + BOARD_ADC_GetBatteryInfo(&voltage, ¤t); + reply.Data.Voltage = voltage; + reply.Data.Current = current; + SendReply(&reply, sizeof(reply)); } -static void CMD_052D(const uint8_t *pBuffer) +#ifdef INCLUDE_AES + +static void cmd_052D(const uint8_t *pBuffer) { - const CMD_052D_t *pCmd = (const CMD_052D_t *)pBuffer; - REPLY_052D_t Reply; - bool bIsLocked; + cmd_052D_t *pCmd = (cmd_052D_t *)pBuffer; + bool locked = g_has_custom_aes_key; + uint32_t response[4]; + reply_052D_t reply; - #ifdef ENABLE_FMRADIO - g_fm_radio_count_down_500ms = fm_radio_countdown_500ms; - #endif - Reply.Header.ID = 0x052E; - Reply.Header.Size = sizeof(Reply.Data); + g_serial_config_count_down_500ms = serial_config_count_down_500ms; - bIsLocked = g_has_custom_aes_key; - - if (!bIsLocked) - bIsLocked = IsBadChallenge(g_custom_aes_key, g_challenge, pCmd->Response); - - if (!bIsLocked) + if (!locked) { - bIsLocked = IsBadChallenge(g_default_aes_key, g_challenge, pCmd->Response); - if (bIsLocked) - g_try_count++; + memmove((void *)&response, &pCmd->Response, sizeof(response)); // overcome strict compiler warning settings + locked = IsBadChallenge(g_custom_aes_key, g_challenge, response); } - if (g_try_count < 3) + if (!locked) { - if (!bIsLocked) - g_try_count = 0; + memmove((void *)&response, &pCmd->Response, sizeof(response)); // overcome strict compiler warning settings + locked = IsBadChallenge(g_default_aes_key, g_challenge, response); + if (locked) + try_count++; + } + + if (try_count < 3) + { + if (!locked) + try_count = 0; } else { - g_try_count = 3; - bIsLocked = true; + try_count = 3; + locked = true; } - - g_is_locked = bIsLocked; - Reply.Data.bIsLocked = bIsLocked; - SendReply(&Reply, sizeof(Reply)); + is_locked = locked; + + memset(&reply, 0, sizeof(reply)); + reply.Header.ID = 0x052E; + reply.Header.Size = sizeof(reply.Data); + reply.Data.locked = is_locked; + + SendReply(&reply, sizeof(reply)); } -static void CMD_052F(const uint8_t *pBuffer) +#endif + +static void cmd_052F(const uint8_t *pBuffer) { - const CMD_052F_t *pCmd = (const CMD_052F_t *)pBuffer; + const cmd_052F_t *pCmd = (const cmd_052F_t *)pBuffer; g_eeprom.dual_watch = DUAL_WATCH_OFF; g_eeprom.cross_vfo_rx_tx = CROSS_BAND_OFF; @@ -406,6 +458,8 @@ static void CMD_052F(const uint8_t *pBuffer) g_eeprom.vfo_info[0].dtmf_ptt_id_tx_mode = PTT_ID_OFF; g_eeprom.vfo_info[0].dtmf_decoding_enable = false; + g_serial_config_count_down_500ms = serial_config_count_down_500ms; + #ifdef ENABLE_NOAA g_is_noaa_mode = false; #endif @@ -413,12 +467,7 @@ static void CMD_052F(const uint8_t *pBuffer) if (g_current_function == FUNCTION_POWER_SAVE) FUNCTION_Select(FUNCTION_FOREGROUND); - g_serial_config_count_down_500ms = serial_config_count_down_500ms; - - Timestamp = pCmd->Timestamp; - - // turn the LCD backlight off -// GPIO_ClearBit(&GPIOB->DATA, GPIOB_PIN_BACKLIGHT); + time_stamp = pCmd->time_stamp; // show message g_request_display_screen = DISPLAY_MAIN; @@ -438,35 +487,35 @@ bool UART_IsCommandAvailable(void) while (1) { - if (g_uart_write_index == DmaLength) + if (write_index == DmaLength) return false; - while (g_uart_write_index != DmaLength && UART_DMA_Buffer[g_uart_write_index] != 0xABU) - g_uart_write_index = DMA_INDEX(g_uart_write_index, 1); + while (write_index != DmaLength && UART_DMA_Buffer[write_index] != 0xABU) + write_index = DMA_INDEX(write_index, 1); - if (g_uart_write_index == DmaLength) + if (write_index == DmaLength) return false; - if (g_uart_write_index < DmaLength) - CommandLength = DmaLength - g_uart_write_index; + if (write_index < DmaLength) + CommandLength = DmaLength - write_index; else - CommandLength = (DmaLength + sizeof(UART_DMA_Buffer)) - g_uart_write_index; + CommandLength = (DmaLength + sizeof(UART_DMA_Buffer)) - write_index; if (CommandLength < 8) return 0; - if (UART_DMA_Buffer[DMA_INDEX(g_uart_write_index, 1)] == 0xCD) + if (UART_DMA_Buffer[DMA_INDEX(write_index, 1)] == 0xCD) break; - g_uart_write_index = DMA_INDEX(g_uart_write_index, 1); + write_index = DMA_INDEX(write_index, 1); } - Index = DMA_INDEX(g_uart_write_index, 2); + Index = DMA_INDEX(write_index, 2); Size = (UART_DMA_Buffer[DMA_INDEX(Index, 1)] << 8) | UART_DMA_Buffer[Index]; if ((Size + 8u) > sizeof(UART_DMA_Buffer)) { - g_uart_write_index = DmaLength; + write_index = DmaLength; return false; } @@ -478,7 +527,7 @@ bool UART_IsCommandAvailable(void) if (UART_DMA_Buffer[TailIndex] != 0xDC || UART_DMA_Buffer[DMA_INDEX(TailIndex, 1)] != 0xBA) { - g_uart_write_index = DmaLength; + write_index = DmaLength; return false; } @@ -492,29 +541,29 @@ bool UART_IsCommandAvailable(void) memmove(UART_Command.Buffer, UART_DMA_Buffer + Index, TailIndex - Index); TailIndex = DMA_INDEX(TailIndex, 2); - if (TailIndex < g_uart_write_index) + if (TailIndex < write_index) { - memset(UART_DMA_Buffer + g_uart_write_index, 0, sizeof(UART_DMA_Buffer) - g_uart_write_index); + memset(UART_DMA_Buffer + write_index, 0, sizeof(UART_DMA_Buffer) - write_index); memset(UART_DMA_Buffer, 0, TailIndex); } else - memset(UART_DMA_Buffer + g_uart_write_index, 0, TailIndex - g_uart_write_index); + memset(UART_DMA_Buffer + write_index, 0, TailIndex - write_index); - g_uart_write_index = TailIndex; + write_index = TailIndex; if (UART_Command.Header.ID == 0x0514) - bIsEncrypted = false; + is_encrypted = false; if (UART_Command.Header.ID == 0x6902) - bIsEncrypted = true; + is_encrypted = true; - if (bIsEncrypted) + if (is_encrypted) { unsigned int i; for (i = 0; i < (Size + 2u); i++) UART_Command.Buffer[i] ^= Obfuscation[i % 16]; } - + CRC = UART_Command.Buffer[Size] | (UART_Command.Buffer[Size + 1] << 8); return (CRC_Calculate(UART_Command.Buffer, Size) != CRC) ? false : true; @@ -524,41 +573,43 @@ void UART_HandleCommand(void) { switch (UART_Command.Header.ID) { - case 0x0514: - CMD_0514(UART_Command.Buffer); + case 0x0514: // version + cmd_0514(UART_Command.Buffer); break; - - case 0x051B: - CMD_051B(UART_Command.Buffer); + + case 0x051B: // read eeprom + cmd_051B(UART_Command.Buffer); break; - - case 0x051D: - CMD_051D(UART_Command.Buffer); + + case 0x051D: // write eeprom + cmd_051D(UART_Command.Buffer); break; - + case 0x051F: // Not implementing non-authentic command break; - + case 0x0521: // Not implementing non-authentic command break; - - case 0x0527: - CMD_0527(); + + case 0x0527: // read RSSI + cmd_0527(); break; - - case 0x0529: - CMD_0529(); + + case 0x0529: // read ADC + cmd_0529(); break; - - case 0x052D: - CMD_052D(UART_Command.Buffer); + +#ifdef INCLUDE_AES + case 0x052D: // + cmd_052D(UART_Command.Buffer); break; - - case 0x052F: - CMD_052F(UART_Command.Buffer); +#endif + + case 0x052F: // + cmd_052F(UART_Command.Buffer); break; - - case 0x05DD: + + case 0x05DD: // reboot #if defined(ENABLE_OVERLAY) overlay_FLASH_RebootToBootloader(); #else diff --git a/audio.c b/audio.c index 4a64d64..7c6083b 100644 --- a/audio.c +++ b/audio.c @@ -44,7 +44,7 @@ 0x5A, 0x4B, 0x4B, 0x46, 0x46, 0x69, 0x64, 0x6E, 0x5A, 0x64, }; - + static const uint8_t VoiceClipLengthEnglish[76] = { 0x50, 0x32, 0x2D, 0x2D, 0x2D, 0x37, 0x37, 0x37, @@ -58,14 +58,14 @@ 0x55, 0x4B, 0x4B, 0x32, 0x32, 0x32, 0x32, 0x37, 0x41, 0x32, 0x3C, 0x37, }; - + voice_id_t g_voice_id[8]; uint8_t g_voice_read_index; uint8_t g_voice_write_index; volatile uint16_t g_count_down_to_play_next_voice_10ms; volatile bool g_flag_play_queued_voice; voice_id_t g_another_voice_id = VOICE_ID_INVALID; - + #endif beep_type_t g_beep_to_play = BEEP_NONE; @@ -88,7 +88,7 @@ void AUDIO_PlayBeep(beep_type_t Beep) if (g_screen_to_display == DISPLAY_AIRCOPY) return; #endif - + if (g_current_function == FUNCTION_RECEIVE) return; @@ -103,10 +103,12 @@ void AUDIO_PlayBeep(beep_type_t Beep) BK4819_RX_TurnOn(); #ifdef ENABLE_FMRADIO - if (g_fm_radio_mode) - BK1080_Mute(true); + #ifdef MUTE_AUDIO_FOR_VOICE + if (g_fm_radio_mode) + BK1080_Mute(true); + #endif #endif - + SYSTEM_DelayMs(20); switch (Beep) @@ -133,7 +135,7 @@ void AUDIO_PlayBeep(beep_type_t Beep) ToneFrequency = 880; break; } - + BK4819_PlayTone(ToneFrequency, true); SYSTEM_DelayMs(2); @@ -152,7 +154,7 @@ void AUDIO_PlayBeep(beep_type_t Beep) SYSTEM_DelayMs(60); BK4819_EnterTxMute(); SYSTEM_DelayMs(20); - + case BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL: case BEEP_500HZ_60MS_DOUBLE_BEEP: BK4819_ExitTxMute(); @@ -170,7 +172,7 @@ void AUDIO_PlayBeep(beep_type_t Beep) BK4819_ExitTxMute(); Duration = 40; break; - + case BEEP_880HZ_200MS: BK4819_ExitTxMute(); Duration = 200; @@ -208,7 +210,7 @@ void AUDIO_PlayBeep(beep_type_t Beep) if (g_fm_radio_mode) BK1080_Mute(false); #endif - + if (g_current_function == FUNCTION_POWER_SAVE && g_rx_idle_mode) BK4819_Sleep(); } @@ -218,18 +220,20 @@ void AUDIO_PlayBeep(beep_type_t Beep) void AUDIO_PlayVoice(uint8_t VoiceID) { unsigned int i; - + + if (g_eeprom.voice_prompt == VOICE_PROMPT_OFF) + return; + GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0); SYSTEM_DelayMs(20); GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0); - + for (i = 0; i < 8; i++) { if ((VoiceID & 0x80U) == 0) GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_VOICE_1); else GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_1); - SYSTICK_DelayUs(1000); GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_VOICE_0); SYSTICK_DelayUs(1200); @@ -238,122 +242,123 @@ void AUDIO_PlayBeep(beep_type_t Beep) SYSTICK_DelayUs(200); } } - + void AUDIO_PlaySingleVoice(bool flag) { - uint8_t VoiceID; uint8_t Delay; - - VoiceID = g_voice_id[0]; - - if (g_eeprom.voice_prompt != VOICE_PROMPT_OFF && g_voice_write_index > 0) - { - if (g_eeprom.voice_prompt == VOICE_PROMPT_CHINESE) - { // Chinese - if (VoiceID >= ARRAY_SIZE(VoiceClipLengthChinese)) - goto Bailout; - - Delay = VoiceClipLengthChinese[VoiceID]; - VoiceID += VOICE_ID_CHI_BASE; - } - else - { // English - if (VoiceID >= ARRAY_SIZE(VoiceClipLengthEnglish)) - goto Bailout; - - Delay = VoiceClipLengthEnglish[VoiceID]; - VoiceID += VOICE_ID_ENG_BASE; - } - - if (g_current_function == FUNCTION_RECEIVE || - g_current_function == FUNCTION_MONITOR || - g_current_function == FUNCTION_INCOMING) // 1of11 + uint8_t VoiceID = g_voice_id[0]; + + if (g_eeprom.voice_prompt == VOICE_PROMPT_OFF || g_voice_write_index == 0) + goto Bailout; + + if (g_eeprom.voice_prompt == VOICE_PROMPT_CHINESE) + { // Chinese + if (VoiceID >= ARRAY_SIZE(VoiceClipLengthChinese)) + goto Bailout; + + Delay = VoiceClipLengthChinese[VoiceID]; + VoiceID += VOICE_ID_CHI_BASE; + } + else + { // English + if (VoiceID >= ARRAY_SIZE(VoiceClipLengthEnglish)) + goto Bailout; + + Delay = VoiceClipLengthEnglish[VoiceID]; + VoiceID += VOICE_ID_ENG_BASE; + } + + #ifdef MUTE_AUDIO_FOR_VOICE + if (g_current_function == FUNCTION_RECEIVE || g_current_function == FUNCTION_MONITOR) BK4819_SetAF(BK4819_AF_MUTE); - - #ifdef ENABLE_FMRADIO + #endif + + #ifdef ENABLE_FMRADIO + #ifdef MUTE_AUDIO_FOR_VOICE if (g_fm_radio_mode) BK1080_Mute(true); #endif - - GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + #endif + + GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + + #ifdef ENABLE_VOX + g_vox_resume_count_down = 2000; + #endif + + SYSTEM_DelayMs(5); + + AUDIO_PlayVoice(VoiceID); + + if (g_voice_write_index == 1) + Delay += 3; + + if (flag) + { + SYSTEM_DelayMs(Delay * 10); + + if (g_current_function == FUNCTION_RECEIVE || g_current_function == FUNCTION_MONITOR) + BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); + + #ifdef ENABLE_FMRADIO + if (g_fm_radio_mode) + BK1080_Mute(false); + #endif + + if (!g_enable_speaker) + GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); + + g_voice_write_index = 0; + g_voice_read_index = 0; #ifdef ENABLE_VOX - g_vox_resume_count_down = 2000; + g_vox_resume_count_down = 80; #endif - - SYSTEM_DelayMs(5); - AUDIO_PlayVoice(VoiceID); - - if (g_voice_write_index == 1) - Delay += 3; - - if (flag) - { - SYSTEM_DelayMs(Delay * 10); - - if (g_current_function == FUNCTION_RECEIVE || - g_current_function == FUNCTION_MONITOR || - g_current_function == FUNCTION_INCOMING) // 1of11 - BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); - - #ifdef ENABLE_FMRADIO - if (g_fm_radio_mode) - BK1080_Mute(false); - #endif - - if (!g_enable_speaker) - GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); - - g_voice_write_index = 0; - g_voice_read_index = 0; - - #ifdef ENABLE_VOX - g_vox_resume_count_down = 80; - #endif - - return; - } - - g_voice_read_index = 1; - g_count_down_to_play_next_voice_10ms = Delay; - g_flag_play_queued_voice = false; - + return; } - + + g_voice_read_index = 1; + g_count_down_to_play_next_voice_10ms = Delay; + g_flag_play_queued_voice = false; + + return; + Bailout: g_voice_read_index = 0; g_voice_write_index = 0; } - + void AUDIO_SetVoiceID(uint8_t Index, voice_id_t VoiceID) { - if (Index >= ARRAY_SIZE(g_voice_id)) - return; - - if (Index == 0) + if (g_eeprom.voice_prompt == VOICE_PROMPT_OFF || Index == 0) { g_voice_write_index = 0; g_voice_read_index = 0; } - - g_voice_id[Index] = VoiceID; - - g_voice_write_index++; + + if (g_eeprom.voice_prompt != VOICE_PROMPT_OFF && Index < ARRAY_SIZE(g_voice_id)) + { + g_voice_id[Index] = VoiceID; + g_voice_write_index++; + } } - + uint8_t AUDIO_SetDigitVoice(uint8_t Index, uint16_t Value) { uint16_t Remainder; uint8_t Result; uint8_t Count; - - if (Index == 0) + + if (g_eeprom.voice_prompt == VOICE_PROMPT_OFF || Index == 0) { g_voice_write_index = 0; g_voice_read_index = 0; } - + + if (g_eeprom.voice_prompt == VOICE_PROMPT_OFF) + return 0; + Count = 0; Result = Value / 1000U; Remainder = Value % 1000U; @@ -373,21 +378,26 @@ void AUDIO_PlayBeep(beep_type_t Beep) g_voice_id[g_voice_write_index++] = (voice_id_t)Result; Count++; Remainder -= Result * 10U; - + Skip: g_voice_id[g_voice_write_index++] = (voice_id_t)Remainder; - + return Count + 1U; } - + void AUDIO_PlayQueuedVoice(void) { uint8_t VoiceID; uint8_t Delay; - bool Skip; - - Skip = false; - + bool Skip = false; + + if (g_eeprom.voice_prompt == VOICE_PROMPT_OFF) + { + g_voice_write_index = 0; + g_voice_read_index = 0; + return; + } + if (g_voice_read_index != g_voice_write_index && g_eeprom.voice_prompt != VOICE_PROMPT_OFF) { VoiceID = g_voice_id[g_voice_read_index]; @@ -411,44 +421,47 @@ void AUDIO_PlayBeep(beep_type_t Beep) else Skip = true; } - + g_voice_read_index++; - + if (!Skip) { if (g_voice_read_index == g_voice_write_index) Delay += 3; - + AUDIO_PlayVoice(VoiceID); - + g_count_down_to_play_next_voice_10ms = Delay; g_flag_play_queued_voice = false; #ifdef ENABLE_VOX g_vox_resume_count_down = 2000; #endif - + return; } } - - if (g_current_function == FUNCTION_RECEIVE || - g_current_function == FUNCTION_MONITOR || - g_current_function == FUNCTION_INCOMING) // 1of11 + + // *********************** + // unmute the radios audio + + if (g_current_function == FUNCTION_RECEIVE || g_current_function == FUNCTION_MONITOR) BK4819_SetAF(g_rx_vfo->am_mode ? BK4819_AF_AM : BK4819_AF_FM); - + #ifdef ENABLE_FMRADIO if (g_fm_radio_mode) BK1080_Mute(false); #endif - + if (!g_enable_speaker) GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH); - + + // ********************** + #ifdef ENABLE_VOX g_vox_resume_count_down = 80; #endif - + g_voice_write_index = 0; g_voice_read_index = 0; } diff --git a/board.c b/board.c index 4007a27..fd16771 100644 --- a/board.c +++ b/board.c @@ -516,7 +516,7 @@ void BOARD_Init(void) CRC_Init(); } -void BOARD_EEPROM_Init(void) +void BOARD_EEPROM_load(void) { unsigned int i; uint8_t Data[16]; @@ -700,21 +700,21 @@ void BOARD_EEPROM_Init(void) // 0F40..0F47 EEPROM_ReadBuffer(0x0F40, Data, 8); - g_setting_f_lock = (Data[0] < 6) ? Data[0] : F_LOCK_OFF; - g_setting_350_tx_enable = (Data[1] < 2) ? Data[1] : false; // was true - g_setting_killed = (Data[2] < 2) ? Data[2] : false; - g_setting_200_tx_enable = (Data[3] < 2) ? Data[3] : false; - g_setting_500_tx_enable = (Data[4] < 2) ? Data[4] : false; - g_setting_350_enable = (Data[5] < 2) ? Data[5] : true; + g_setting_freq_lock = (Data[0] < 6) ? Data[0] : F_LOCK_OFF; + g_setting_350_tx_enable = (Data[1] < 2) ? Data[1] : false; // was true + g_setting_killed = (Data[2] < 2) ? Data[2] : false; + g_setting_200_tx_enable = (Data[3] < 2) ? Data[3] : false; + g_setting_500_tx_enable = (Data[4] < 2) ? Data[4] : false; + g_setting_350_enable = (Data[5] < 2) ? Data[5] : true; g_setting_scramble_enable = (Data[6] < 2) ? Data[6] : true; - g_setting_tx_enable = (Data[7] & (1u << 0)) ? true : false; - g_setting_live_dtmf_decoder = (Data[7] & (1u << 1)) ? true : false; - g_setting_battery_text = (((Data[7] >> 2) & 3u) <= 2) ? (Data[7] >> 2) & 3 : 2; + g_setting_tx_enable = (Data[7] & (1u << 0)) ? true : false; + g_setting_live_dtmf_decoder = (Data[7] & (1u << 1)) ? true : false; + g_setting_battery_text = (((Data[7] >> 2) & 3u) <= 2) ? (Data[7] >> 2) & 3 : 2; #ifdef ENABLE_AUDIO_BAR - g_setting_mic_bar = (Data[7] & (1u << 4)) ? true : false; + g_setting_mic_bar = (Data[7] & (1u << 4)) ? true : false; #endif #ifdef ENABLE_AM_FIX - g_setting_am_fix = (Data[7] & (1u << 5)) ? true : false; + g_setting_am_fix = (Data[7] & (1u << 5)) ? true : false; #endif g_setting_backlight_on_tx_rx = (Data[7] >> 6) & 3u; @@ -727,7 +727,7 @@ void BOARD_EEPROM_Init(void) // 0D60..0E27 EEPROM_ReadBuffer(0x0D60, g_user_channel_attributes, sizeof(g_user_channel_attributes)); - // 0F30..0F3F + // 0F30..0F3F .. AES key EEPROM_ReadBuffer(0x0F30, g_custom_aes_key, sizeof(g_custom_aes_key)); g_has_custom_aes_key = false; for (i = 0; i < ARRAY_SIZE(g_custom_aes_key); i++) @@ -735,9 +735,20 @@ void BOARD_EEPROM_Init(void) if (g_custom_aes_key[i] != 0xFFFFFFFFu) { g_has_custom_aes_key = true; - return; + break; } } + +#if ENABLE_RESET_AES_KEY + if (g_has_custom_aes_key) + { // ugh :( .. wipe it + uint8_t *p_aes = (uint8_t*)&g_custom_aes_key; + memset(p_aes, 0xff, sizeof(g_custom_aes_key)); + for (i = 0; i < sizeof(g_custom_aes_key); i += 8) + EEPROM_WriteBuffer(0x0F30 + i, &p_aes[i]); + g_has_custom_aes_key = false; + } +#endif } void BOARD_EEPROM_LoadMoreSettings(void) diff --git a/board.h b/board.h index 74e60d2..e07cae2 100644 --- a/board.h +++ b/board.h @@ -25,7 +25,7 @@ void BOARD_PORTCON_Init(void); void BOARD_ADC_Init(void); void BOARD_ADC_GetBatteryInfo(uint16_t *pVoltage, uint16_t *pCurrent); void BOARD_Init(void); -void BOARD_EEPROM_Init(void); +void BOARD_EEPROM_load(void); void BOARD_EEPROM_LoadMoreSettings(void); uint32_t BOARD_fetchChannelFrequency(const int channel); void BOARD_fetchChannelName(char *s, const int channel); diff --git a/firmware.bin b/firmware.bin index 20565b3c1753fc8372e29dcd5b14bf7bdbb3b56d..9cc687aa46818f84f26c35fdc0f662f034eec876 100644 GIT binary patch delta 25836 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 CRlPp| delta 26009 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 i1&@q>@b;x6eIa08J5 diff --git a/firmware.packed.bin b/firmware.packed.bin index ef3938151f832f328f6bedb481bfecdebe6b9826..806f0f5027315c2e7b38da25a3e73c6079907108 100644 GIT binary patch delta 58629 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ʬvg5hFYJZVoo}~?LTZ=}mS4j(CfpFMjg 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 diff --git a/frequencies.c b/frequencies.c index 7b9667d..53e2072 100644 --- a/frequencies.c +++ b/frequencies.c @@ -134,7 +134,7 @@ int TX_freq_check(const uint32_t Frequency) if (Frequency >= BX4819_band1.upper && Frequency < BX4819_band2.lower) return -1; // BX chip does not work in this range - switch (g_setting_f_lock) + switch (g_setting_freq_lock) { case F_LOCK_OFF: if (Frequency >= 13600000 && Frequency < 17400000) diff --git a/helper/boot.c b/helper/boot.c index 40055b9..b048988 100644 --- a/helper/boot.c +++ b/helper/boot.c @@ -31,7 +31,7 @@ #include "ui/menu.h" #include "ui/ui.h" -BOOT_Mode_t BOOT_GetMode(void) +boot_mode_t BOOT_GetMode(void) { unsigned int i; key_code_t Keys[2]; @@ -47,7 +47,7 @@ BOOT_Mode_t BOOT_GetMode(void) if (Keys[0] == Keys[1]) { if (Keys[0] == KEY_SIDE1) - return BOOT_MODE_F_LOCK; + return BOOT_MODE_UNHIDE_HIDDEN; #ifdef ENABLE_AIRCOPY if (Keys[0] == KEY_SIDE2) @@ -58,9 +58,9 @@ BOOT_Mode_t BOOT_GetMode(void) return BOOT_MODE_NORMAL; } -void BOOT_ProcessMode(BOOT_Mode_t Mode) +void BOOT_ProcessMode(boot_mode_t Mode) { - if (Mode == BOOT_MODE_F_LOCK) + if (Mode == BOOT_MODE_UNHIDE_HIDDEN) { GUI_SelectNextDisplay(DISPLAY_MENU); } diff --git a/helper/boot.h b/helper/boot.h index fd6c96e..5abb5d9 100644 --- a/helper/boot.h +++ b/helper/boot.h @@ -20,19 +20,18 @@ #include #include "driver/keyboard.h" -enum BOOT_Mode_t +enum boot_mode_e { - BOOT_MODE_NORMAL = 0, - BOOT_MODE_F_LOCK, + BOOT_MODE_NORMAL = 0, // normal boot + BOOT_MODE_UNHIDE_HIDDEN, // unhide the hidden menu items #ifdef ENABLE_AIRCOPY - BOOT_MODE_AIRCOPY + BOOT_MODE_AIRCOPY // do an air-copy #endif }; +typedef enum boot_mode_e boot_mode_t; -typedef enum BOOT_Mode_t BOOT_Mode_t; - -BOOT_Mode_t BOOT_GetMode(void); -void BOOT_ProcessMode(BOOT_Mode_t Mode); +boot_mode_t BOOT_GetMode(void); +void BOOT_ProcessMode(boot_mode_t Mode); #endif diff --git a/main.c b/main.c index 77c31dc..6ce05bc 100644 --- a/main.c +++ b/main.c @@ -51,7 +51,7 @@ void _putchar(char c) void Main(void) { unsigned int i; - BOOT_Mode_t BootMode; + boot_mode_t BootMode; // Enable clock gating of blocks we need SYSCON_DEV_CLK_GATE = 0 @@ -89,7 +89,7 @@ void Main(void) BOARD_ADC_GetBatteryInfo(&g_usb_current_voltage, &g_usb_current); - BOARD_EEPROM_Init(); + BOARD_EEPROM_load(); BOARD_EEPROM_LoadMoreSettings(); @@ -105,33 +105,33 @@ void Main(void) BATTERY_GetReadings(false); + ST7565_SetContrast(g_setting_contrast); + #ifdef ENABLE_AM_FIX AM_fix_init(); #endif BootMode = BOOT_GetMode(); - g_f_lock = (BootMode == BOOT_MODE_F_LOCK); // flag to say include the hidden menu items + g_unhide_hidden = (BootMode == BOOT_MODE_UNHIDE_HIDDEN); // flag to say include the hidden menu items #if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG) - if (g_f_lock) - UART_SendText("boot_f_lock\r\n"); + if (g_unhide_hidden) + UART_SendText("boot_unhide_hidden\r\n"); #endif // sort the menu list - UI_SortMenu(!g_f_lock); - - ST7565_SetContrast(g_setting_contrast); + UI_SortMenu(!g_unhide_hidden); // wait for user to release all butts before moving on if (!GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) || KEYBOARD_Poll() != KEY_INVALID || BootMode != BOOT_MODE_NORMAL) - { // keys are pressed - UI_DisplayReleaseKeys(); + { backlight_turn_on(); + UI_DisplayReleaseKeys(); i = 0; - while (i < 50) // 500ms + while (i < (500 / 10)) // 500ms { i = (GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_PTT) && KEYBOARD_Poll() == KEY_INVALID) ? i + 1 : 0; SYSTEM_DelayMs(10); @@ -156,8 +156,8 @@ void Main(void) backlight_turn_on(); #ifdef ENABLE_VOICE - AUDIO_SetVoiceID(0, VOICE_ID_WELCOME); - AUDIO_PlaySingleVoice(0); +// AUDIO_SetVoiceID(0, VOICE_ID_WELCOME); +// AUDIO_PlaySingleVoice(0); #endif if (g_eeprom.pwr_on_display_mode != PWR_ON_DISPLAY_MODE_NONE) @@ -179,9 +179,9 @@ void Main(void) #ifdef ENABLE_PWRON_PASSWORD if (g_eeprom.power_on_password < 1000000) { - g_is_in_lock_screen = true; + g_password_locked = true; UI_DisplayLock(); - g_is_in_lock_screen = false; + g_password_locked = false; } #endif @@ -192,12 +192,13 @@ void Main(void) g_update_status = true; #ifdef ENABLE_VOICE + if (g_eeprom.voice_prompt != VOICE_PROMPT_OFF) { - uint8_t Channel; + const uint8_t Channel = g_eeprom.screen_channel[g_eeprom.tx_vfo]; -// AUDIO_SetVoiceID(0, VOICE_ID_WELCOME); + AUDIO_SetVoiceID(0, VOICE_ID_WELCOME); + AUDIO_PlaySingleVoice(0); - Channel = g_eeprom.screen_channel[g_eeprom.tx_vfo]; if (IS_USER_CHANNEL(Channel)) { AUDIO_SetVoiceID(1, VOICE_ID_CHANNEL_MODE); @@ -212,8 +213,6 @@ void Main(void) #ifdef ENABLE_NOAA RADIO_ConfigureNOAA(); #endif - - // ****************** } while (1) diff --git a/misc.c b/misc.c index f270e05..c21e709 100644 --- a/misc.c +++ b/misc.c @@ -90,7 +90,7 @@ bool g_setting_200_tx_enable; bool g_setting_500_tx_enable; bool g_setting_350_enable; bool g_setting_tx_enable; -uint8_t g_setting_f_lock; +uint8_t g_setting_freq_lock; bool g_setting_scramble_enable; uint8_t g_setting_backlight_on_tx_rx; @@ -119,7 +119,6 @@ bool g_monitor_enabled = false; // true opens the squ uint32_t g_custom_aes_key[4]; bool g_has_custom_aes_key; uint32_t g_challenge[4]; -uint8_t g_try_count; uint8_t g_eeprom_1EC0_0[8]; uint8_t g_eeprom_1EC0_1[8]; @@ -161,7 +160,7 @@ bool g_enable_speaker; uint8_t g_key_input_count_down = 0; uint8_t g_key_lock_count_down_500ms; uint8_t g_rtte_count_down; -bool g_is_in_lock_screen; +bool g_password_locked; uint8_t g_update_status; uint8_t g_found_CTCSS; uint8_t g_found_CDCSS; @@ -240,7 +239,7 @@ uint8_t g_fsk_wite_index; bool g_update_display; -bool g_f_lock = false; +bool g_unhide_hidden = false; uint8_t g_show_chan_prefix; @@ -264,8 +263,6 @@ volatile uint8_t g_boot_counter_10ms; int16_t g_current_rssi[2] = {0, 0}; // now one per VFO -uint8_t g_is_locked = 0xFF; - unsigned int get_RX_VFO(void) { unsigned int rx_vfo = g_eeprom.tx_vfo; diff --git a/misc.h b/misc.h index 9c07516..7210056 100644 --- a/misc.h +++ b/misc.h @@ -166,7 +166,7 @@ extern bool g_setting_200_tx_enable; extern bool g_setting_500_tx_enable; extern bool g_setting_350_enable; extern bool g_setting_tx_enable; -extern uint8_t g_setting_f_lock; +extern uint8_t g_setting_freq_lock; extern bool g_setting_scramble_enable; extern uint8_t g_setting_backlight_on_tx_rx; @@ -196,7 +196,6 @@ extern const uint32_t g_default_aes_key[4]; extern uint32_t g_custom_aes_key[4]; extern bool g_has_custom_aes_key; extern uint32_t g_challenge[4]; -extern uint8_t g_try_count; extern uint8_t g_eeprom_1EC0_0[8]; extern uint8_t g_eeprom_1EC0_1[8]; @@ -240,7 +239,7 @@ extern bool g_enable_speaker; extern uint8_t g_key_input_count_down; extern uint8_t g_key_lock_count_down_500ms; extern uint8_t g_rtte_count_down; -extern bool g_is_in_lock_screen; +extern bool g_password_locked; extern uint8_t g_update_status; extern uint8_t g_found_CTCSS; extern uint8_t g_found_CDCSS; @@ -313,7 +312,7 @@ extern uint8_t g_fsk_wite_index; #endif extern volatile bool g_next_time_slice; extern bool g_update_display; -extern bool g_f_lock; +extern bool g_unhide_hidden; #ifdef ENABLE_FMRADIO extern uint8_t g_fm_channel_position; #endif @@ -333,7 +332,6 @@ extern volatile bool g_flag_tail_tone_elimination_complete; extern volatile bool g_schedule_fm; #endif extern int16_t g_current_rssi[2]; // now one per VFO -extern uint8_t g_is_locked; extern volatile uint8_t g_boot_counter_10ms; unsigned int get_TX_VFO(void); diff --git a/settings.c b/settings.c index 5682679..0ba3c5e 100644 --- a/settings.c +++ b/settings.c @@ -283,7 +283,7 @@ void SETTINGS_SaveSettings(void) EEPROM_WriteBuffer(0x0F18, State); memset(State, 0xFF, sizeof(State)); - State[0] = g_setting_f_lock; + State[0] = g_setting_freq_lock; State[1] = g_setting_350_tx_enable; State[2] = g_setting_killed; State[3] = g_setting_200_tx_enable; diff --git a/ui/menu.c b/ui/menu.c index 2b8c56f..7011ddf 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -50,14 +50,14 @@ const t_menu_item g_menu_list[] = {"W/N", VOICE_ID_CHANNEL_BANDWIDTH, MENU_W_N }, {"Tx PWR", VOICE_ID_POWER, MENU_TXP }, // was "TXP" {"Rx DCS", VOICE_ID_DCS, MENU_R_DCS }, // was "R_DCS" - {"RxCTCS", VOICE_ID_CTCSS, MENU_R_CTCS }, // was "R_CTCS" + {"Rx CTS", VOICE_ID_CTCSS, MENU_R_CTCS }, // was "R_CTCS" {"Tx DCS", VOICE_ID_DCS, MENU_T_DCS }, // was "T_DCS" - {"TxCTCS", VOICE_ID_CTCSS, MENU_T_CTCS }, // was "T_CTCS" + {"Tx CTS", VOICE_ID_CTCSS, MENU_T_CTCS }, // was "T_CTCS" {"Tx DIR", VOICE_ID_TX_OFFSET_FREQ_DIR, MENU_SFT_D }, // was "SFT_D" - {"TxOFFS", VOICE_ID_TX_OFFSET_FREQ, MENU_OFFSET }, // was "OFFSET" + {"Tx OFS", VOICE_ID_TX_OFFSET_FREQ, MENU_OFFSET }, // was "OFFSET" {"Tx TO", VOICE_ID_TRANSMIT_OVER_TIME, MENU_TOT }, // was "TOT" {"Tx VFO", VOICE_ID_INVALID, MENU_XB }, // was "WX" - {"2nd RX", VOICE_ID_DUAL_STANDBY, MENU_TDR }, // was "TDR" + {"Dual W", VOICE_ID_DUAL_STANDBY, MENU_TDR }, // was "TDR" {"SCRAM", VOICE_ID_SCRAMBLER_ON, MENU_SCR }, // was "SCR" {"BCL", VOICE_ID_BUSY_LOCKOUT, MENU_BCL }, {"CH SAV", VOICE_ID_MEMORY_CHANNEL, MENU_MEM_CH }, // was "MEM-CH" @@ -266,11 +266,11 @@ const char g_sub_menu_pwr_on_msg[4][8] = "NONE" }; -const char g_sub_menu_roger_mode[3][9] = +const char g_sub_menu_roger_mode[3][16] = { "OFF", - "ROGER", - "MDC\n1200" + "TX END\nROGER", + "TX END\nMDC\n1200" }; const char g_sub_menu_RESET[2][4] = @@ -549,28 +549,31 @@ void UI_DisplayMenu(void) case MENU_R_DCS: case MENU_T_DCS: + strcpy(String, "CDCSS\n"); if (g_sub_menu_selection == 0) - strcpy(String, "OFF"); + strcat(String, "OFF"); else if (g_sub_menu_selection < 105) - sprintf(String, "D%03oN", DCS_OPTIONS[g_sub_menu_selection - 1]); + sprintf(String + strlen(String), "D%03oN", DCS_OPTIONS[g_sub_menu_selection - 1]); else - sprintf(String, "D%03oI", DCS_OPTIONS[g_sub_menu_selection - 105]); + sprintf(String + strlen(String), "D%03oI", DCS_OPTIONS[g_sub_menu_selection - 105]); break; case MENU_R_CTCS: case MENU_T_CTCS: { + strcpy(String, "CTCSS\n"); #if 1 // set CTCSS as the user adjusts it unsigned int Code; freq_config_t *pConfig = (g_menu_cursor == MENU_R_CTCS) ? &g_tx_vfo->freq_config_rx : &g_tx_vfo->freq_config_tx; if (g_sub_menu_selection == 0) { - strcpy(String, "OFF"); + strcat(String, "OFF"); if (pConfig->code_type != CODE_TYPE_CONTINUOUS_TONE) break; + Code = 0; pConfig->code_type = CODE_TYPE_OFF; pConfig->code = Code; @@ -579,7 +582,7 @@ void UI_DisplayMenu(void) } else { - sprintf(String, "%u.%uHz", CTCSS_OPTIONS[g_sub_menu_selection - 1] / 10, CTCSS_OPTIONS[g_sub_menu_selection - 1] % 10); + sprintf(String + strlen(String), "%u.%uHz", CTCSS_OPTIONS[g_sub_menu_selection - 1] / 10, CTCSS_OPTIONS[g_sub_menu_selection - 1] % 10); pConfig->code_type = CODE_TYPE_CONTINUOUS_TONE; Code = g_sub_menu_selection - 1; @@ -589,9 +592,9 @@ void UI_DisplayMenu(void) } #else if (g_sub_menu_selection == 0) - strcpy(String, "OFF"); + strcat(String, "OFF"); else - sprintf(String, "%u.%uHz", CTCSS_OPTIONS[g_sub_menu_selection - 1] / 10, CTCSS_OPTIONS[g_sub_menu_selection - 1] % 10); + sprintf(String + strlen(String), "%u.%uHz", CTCSS_OPTIONS[g_sub_menu_selection - 1] / 10, CTCSS_OPTIONS[g_sub_menu_selection - 1] % 10); #endif break; @@ -921,7 +924,7 @@ void UI_DisplayMenu(void) break; case MENU_PTT_ID: - strcpy(String, "TX ID\n"); + strcpy(String, (g_sub_menu_selection > 0) ? "TX ID\n" : ""); strcat(String, g_sub_menu_PTT_ID[g_sub_menu_selection]); break; @@ -950,8 +953,7 @@ void UI_DisplayMenu(void) break; case MENU_ROGER: - strcpy(String, "TX END\n"); - strcpy(String + strlen(String), g_sub_menu_roger_mode[g_sub_menu_selection]); + strcpy(String, g_sub_menu_roger_mode[g_sub_menu_selection]); break; case MENU_VOL: diff --git a/ui/menu.h b/ui/menu.h index 0ddc282..fe90bf0 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -162,7 +162,7 @@ extern const char g_sub_menu_mdf[4][15]; extern const char g_sub_menu_D_RSP[4][9]; extern const char g_sub_menu_PTT_ID[5][15]; extern const char g_sub_menu_pwr_on_msg[4][8]; -extern const char g_sub_menu_roger_mode[3][9]; +extern const char g_sub_menu_roger_mode[3][16]; extern const char g_sub_menu_RESET[2][4]; extern const char g_sub_menu_f_lock[6][8]; extern const char g_sub_menu_backlight[8][7]; diff --git a/ui/scanner.c b/ui/scanner.c index 57c12ed..1cef95e 100644 --- a/ui/scanner.c +++ b/ui/scanner.c @@ -18,6 +18,7 @@ #include #include "app/scanner.h" +#include "board.h" #include "dcs.h" #include "driver/st7565.h" #include "external/printf/printf.h" @@ -161,14 +162,20 @@ void UI_DisplayScanner(void) break; - case SCAN_EDIT_STATE_BUSY: + case SCAN_EDIT_STATE_SAVE: strcpy(String, "SAVE "); - UI_GenerateChannelStringEx(String + strlen(String), g_show_chan_prefix, g_scan_channel); + { + char s[11]; + BOARD_fetchChannelName(s, g_scan_channel); + if (s[0] == 0) + UI_GenerateChannelStringEx(s, g_show_chan_prefix, g_scan_channel); + strcat(String, s); + } break; case SCAN_EDIT_STATE_DONE: + strcpy(String, "* repeat M save"); text_centered = true; - strcpy(String, "SAVE ?"); break; }