mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 22:31:25 +03:00
Keylock can be disabled to save 400 bytes.
This commit is contained in:
parent
989f8cb56e
commit
a81ecadfe1
24
Makefile
24
Makefile
@ -3,6 +3,9 @@
|
|||||||
# 0 = remove code
|
# 0 = remove code
|
||||||
# 1 = include code
|
# 1 = include code
|
||||||
|
|
||||||
|
# When testing the extra options, be careful not to exceed the
|
||||||
|
# 64 kb flash memory limit.
|
||||||
|
|
||||||
ENABLE_CLANG := 0
|
ENABLE_CLANG := 0
|
||||||
ENABLE_SWD := 0
|
ENABLE_SWD := 0
|
||||||
ENABLE_OVERLAY := 0
|
ENABLE_OVERLAY := 0
|
||||||
@ -15,7 +18,7 @@ ENABLE_AIRCOPY := 1
|
|||||||
ENABLE_AIRCOPY_REMEMBER_FREQ := 1
|
ENABLE_AIRCOPY_REMEMBER_FREQ := 1
|
||||||
ENABLE_AIRCOPY_RX_REBOOT := 0
|
ENABLE_AIRCOPY_RX_REBOOT := 0
|
||||||
# FM Radio 4.2 kb
|
# FM Radio 4.2 kb
|
||||||
ENABLE_FMRADIO := 1
|
ENABLE_FMRADIO := 0
|
||||||
# NOAA 1.2 kb
|
# NOAA 1.2 kb
|
||||||
ENABLE_NOAA := 0
|
ENABLE_NOAA := 0
|
||||||
# Voice 1.7 kb
|
# Voice 1.7 kb
|
||||||
@ -24,11 +27,13 @@ ENABLE_MUTE_RADIO_FOR_VOICE := 1
|
|||||||
# Tx on Voice 1.0 kb
|
# Tx on Voice 1.0 kb
|
||||||
ENABLE_VOX := 0
|
ENABLE_VOX := 0
|
||||||
ENABLE_REDUCE_LOW_MID_TX_POWER := 1
|
ENABLE_REDUCE_LOW_MID_TX_POWER := 1
|
||||||
|
# Tx Alarm 0.6 kb
|
||||||
ENABLE_ALARM := 0
|
ENABLE_ALARM := 0
|
||||||
ENABLE_TX1750 := 0
|
ENABLE_TX1750 := 0
|
||||||
ENABLE_PWRON_PASSWORD := 0
|
ENABLE_PWRON_PASSWORD := 0
|
||||||
ENABLE_RESET_AES_KEY := 1
|
ENABLE_RESET_AES_KEY := 1
|
||||||
ENABLE_BIG_FREQ := 0
|
ENABLE_BIG_FREQ := 0
|
||||||
|
# Small Bold Font 0.6 kb
|
||||||
ENABLE_SMALL_BOLD := 1
|
ENABLE_SMALL_BOLD := 1
|
||||||
ENABLE_KEEP_MEM_NAME := 1
|
ENABLE_KEEP_MEM_NAME := 1
|
||||||
ENABLE_WIDE_RX := 1
|
ENABLE_WIDE_RX := 1
|
||||||
@ -43,17 +48,25 @@ ENABLE_SHOW_CHARGE_LEVEL := 0
|
|||||||
ENABLE_REVERSE_BAT_SYMBOL := 1
|
ENABLE_REVERSE_BAT_SYMBOL := 1
|
||||||
ENABLE_FREQ_SEARCH_TIMEOUT := 0
|
ENABLE_FREQ_SEARCH_TIMEOUT := 0
|
||||||
ENABLE_CODE_SEARCH_TIMEOUT := 0
|
ENABLE_CODE_SEARCH_TIMEOUT := 0
|
||||||
|
# Kill and Revive 0.4 kb
|
||||||
ENABLE_KILL_REVIVE := 0
|
ENABLE_KILL_REVIVE := 0
|
||||||
|
# AM Fix 0.8 kb
|
||||||
ENABLE_AM_FIX := 1
|
ENABLE_AM_FIX := 1
|
||||||
ENABLE_AM_FIX_SHOW_DATA := 1
|
ENABLE_AM_FIX_SHOW_DATA := 1
|
||||||
ENABLE_SQUELCH_MORE_SENSITIVE := 1
|
ENABLE_SQUELCH_MORE_SENSITIVE := 1
|
||||||
ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1
|
ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1
|
||||||
ENABLE_FASTER_CHANNEL_SCAN := 1
|
ENABLE_FASTER_CHANNEL_SCAN := 1
|
||||||
ENABLE_RX_SIGNAL_BAR := 1
|
|
||||||
ENABLE_TX_TIMEOUT_BAR := 0
|
|
||||||
ENABLE_TX_AUDIO_BAR := 1
|
|
||||||
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1
|
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1
|
||||||
|
# Rx Signal Bar 0.4 kb
|
||||||
|
ENABLE_RX_SIGNAL_BAR := 1
|
||||||
|
# Tx Timeout Bar 0.2 kb
|
||||||
|
ENABLE_TX_TIMEOUT_BAR := 0
|
||||||
|
# Tx Audio Bar 0.3 kb
|
||||||
|
ENABLE_TX_AUDIO_BAR := 1
|
||||||
|
# Side Button Menu 0.3 kb
|
||||||
ENABLE_SIDE_BUTT_MENU := 1
|
ENABLE_SIDE_BUTT_MENU := 1
|
||||||
|
# Key Lock 0.4 kb
|
||||||
|
ENABLE_KEYLOCK := 1
|
||||||
#ENABLE_PANADAPTER := 0
|
#ENABLE_PANADAPTER := 0
|
||||||
#ENABLE_SINGLE_VFO_CHAN := 0
|
#ENABLE_SINGLE_VFO_CHAN := 0
|
||||||
|
|
||||||
@ -385,6 +398,9 @@ endif
|
|||||||
ifeq ($(ENABLE_SIDE_BUTT_MENU),1)
|
ifeq ($(ENABLE_SIDE_BUTT_MENU),1)
|
||||||
CFLAGS += -DENABLE_SIDE_BUTT_MENU
|
CFLAGS += -DENABLE_SIDE_BUTT_MENU
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(ENABLE_KEYLOCK),1)
|
||||||
|
CFLAGS += -DENABLE_KEYLOCK
|
||||||
|
endif
|
||||||
ifeq ($(ENABLE_SINGLE_VFO_CHAN),1)
|
ifeq ($(ENABLE_SINGLE_VFO_CHAN),1)
|
||||||
CFLAGS += -DENABLE_SINGLE_VFO_CHAN
|
CFLAGS += -DENABLE_SINGLE_VFO_CHAN
|
||||||
endif
|
endif
|
||||||
|
22
README.md
22
README.md
@ -37,20 +37,20 @@ You'll find the options at the top of "Makefile" ('0' = remove code, '1' = inclu
|
|||||||
ENABLE_CLANG := 0 **experimental, builds with clang instead of gcc (LTO will be disabled if you enable this)
|
ENABLE_CLANG := 0 **experimental, builds with clang instead of gcc (LTO will be disabled if you enable this)
|
||||||
ENABLE_SWD := 0 only needed if using CPU's SWD port (debugging/programming)
|
ENABLE_SWD := 0 only needed if using CPU's SWD port (debugging/programming)
|
||||||
ENABLE_OVERLAY := 0 cpu FLASH stuff, not needed
|
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_LTO := 1 **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 := 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_UART_DEBUG := 0 just for code debugging, it sends debug info along the USB serial connection (programming lead)
|
||||||
ENABLE_AIRCOPY := 1 clone radio-to-radio via RF
|
ENABLE_AIRCOPY := 1 clone radio-to-radio via RF
|
||||||
ENABLE_AIRCOPY_REMEMBER_FREQ := 1 remember the aircopy frequency
|
ENABLE_AIRCOPY_REMEMBER_FREQ := 1 remember the aircopy frequency
|
||||||
ENABLE_AIRCOPY_RX_REBOOT := 0 auto reboot on an aircopy successful RX completion
|
ENABLE_AIRCOPY_RX_REBOOT := 0 auto reboot on an aircopy successful RX completion
|
||||||
ENABLE_FMRADIO := 1 WBFM VHF broadcast band receiver
|
ENABLE_FMRADIO := 1 WBFM VHF broadcast band receiver
|
||||||
ENABLE_NOAA := 1 everything NOAA (only of any use in the USA)
|
ENABLE_NOAA := 0 everything NOAA (only of any use in the USA)
|
||||||
ENABLE_VOICE := 0 want to hear voices ?
|
ENABLE_VOICE := 0 want to hear voices ?
|
||||||
ENABLE_MUTE_RADIO_FOR_VOICE := 1 mute the radios audio when a voice is playing
|
ENABLE_MUTE_RADIO_FOR_VOICE := 1 mute the radios audio when a voice is playing
|
||||||
ENABLE_VOX := 1 voice operated transmission
|
ENABLE_VOX := 0 voice operated transmission
|
||||||
ENABLE_REDUCE_LOW_MID_TX_POWER := 1 reduce the low and mid TX power levels (high remains unchanged)
|
ENABLE_REDUCE_LOW_MID_TX_POWER := 1 reduce the low and mid TX power levels (high remains unchanged)
|
||||||
ENABLE_ALARM := 1 TX alarms
|
ENABLE_ALARM := 0 TX alarms
|
||||||
ENABLE_1750HZ := 1 side key 1750Hz TX tone (older style repeater access)
|
ENABLE_1750HZ := 0 side key 1750Hz TX tone (older style repeater access)
|
||||||
ENABLE_PWRON_PASSWORD := 0 include power-on password code
|
ENABLE_PWRON_PASSWORD := 0 include power-on password code
|
||||||
ENABLE_RESET_AES_KEY := 1 '1' = reset/clear the AES key stored in the eeprom (only if it's set)
|
ENABLE_RESET_AES_KEY := 1 '1' = reset/clear the AES key stored in the eeprom (only if it's set)
|
||||||
ENABLE_BIG_FREQ := 0 big font frequencies (like original QS firmware)
|
ENABLE_BIG_FREQ := 0 big font frequencies (like original QS firmware)
|
||||||
@ -66,18 +66,20 @@ ENABLE_BOOT_BEEPS := 0 gives user audio feedback on volume
|
|||||||
ENABLE_DTMF_CALL_FLASH_LIGHT := 1 flash the flash light LED when a DTMF call is received
|
ENABLE_DTMF_CALL_FLASH_LIGHT := 1 flash the flash light LED when a DTMF call is received
|
||||||
ENABLE_SHOW_CHARGE_LEVEL := 0 show the charge level when the radio is on charge
|
ENABLE_SHOW_CHARGE_LEVEL := 0 show the charge level when the radio is on charge
|
||||||
ENABLE_REVERSE_BAT_SYMBOL := 1 mirror the battery symbol on the status bar (+ pole on the right)
|
ENABLE_REVERSE_BAT_SYMBOL := 1 mirror the battery symbol on the status bar (+ pole on the right)
|
||||||
ENABLE_FREQ_SEARCH_TIMEOUT := 1 timeout if FREQ not found when using F+4 search function
|
ENABLE_FREQ_SEARCH_TIMEOUT := 0 timeout if FREQ not found when using F+4 search function
|
||||||
ENABLE_CODE_SEARCH_TIMEOUT := 0 timeout if CTCSS/CDCSS not found when using F+* search function
|
ENABLE_CODE_SEARCH_TIMEOUT := 0 timeout if CTCSS/CDCSS not found when using F+* search function
|
||||||
ENABLE_KILL_REVIVE := 0 include kill and revive code
|
ENABLE_KILL_REVIVE := 0 include kill and revive code
|
||||||
ENABLE_AM_FIX := 1 dynamically adjust the front end gains when in AM mode to helo prevent AM demodulator saturation, ignore the on-screen RSSI level (for now)
|
ENABLE_AM_FIX := 1 dynamically adjust the front end gains when in AM mode to help prevent AM demodulator saturation, ignore the on-screen RSSI level (for now)
|
||||||
ENABLE_AM_FIX_SHOW_DATA := 0 show debug data for the AM fix (still tweaking it)
|
ENABLE_AM_FIX_SHOW_DATA := 1 show debug data for the AM fix (still tweaking it)
|
||||||
ENABLE_SQUELCH_MORE_SENSITIVE := 1 make squelch levels a little bit more sensitive - I plan to let user adjust the values themselves
|
ENABLE_SQUELCH_MORE_SENSITIVE := 1 make squelch levels a little bit more sensitive - I plan to let user adjust the values themselves
|
||||||
ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1 open the squelch when holding down UP or DN buttons when in frequency mode
|
ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1 open the squelch when holding down UP or DN buttons when in frequency mode
|
||||||
ENABLE_FASTER_CHANNEL_SCAN := 1 increases the channel scan speed, but the squelch is also made more twitchy
|
ENABLE_FASTER_CHANNEL_SCAN := 1 increase the channel scan speed, but also make the squelch more twitchy
|
||||||
|
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 long press M, copy channel to VFO, or VFO to channel
|
||||||
ENABLE_RX_SIGNAL_BAR := 1 enable a dBm/Sn RSSI bar graph level inplace of the little antenna symbols
|
ENABLE_RX_SIGNAL_BAR := 1 enable a dBm/Sn RSSI bar graph level inplace of the little antenna symbols
|
||||||
ENABLE_TX_TIMEOUT_BAR := 0 show the remainng TX time
|
ENABLE_TX_TIMEOUT_BAR := 0 show the remainng TX time
|
||||||
ENABLE_TX_AUDIO_BAR := 1 enable TX audio level bar, includes remaining TX time (in seconds)
|
ENABLE_TX_AUDIO_BAR := 1 enable TX audio level bar, includes remaining TX time (in seconds)
|
||||||
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 long press M, copy channel to VFO, or VFO to channel
|
ENABLE_SIDE_BUTT_MENU := 1 change programmable side buttons in menu
|
||||||
|
ENABLE_KEYLOCK := 1 auto lock after 30 sec or long press F to lock
|
||||||
#ENABLE_BAND_SCOPE := 0 not yet implemented - spectrum/pan-adapter
|
#ENABLE_BAND_SCOPE := 0 not yet implemented - spectrum/pan-adapter
|
||||||
#ENABLE_SINGLE_VFO_CHAN := 0 not yet implemented - single VFO on display when possible
|
#ENABLE_SINGLE_VFO_CHAN := 0 not yet implemented - single VFO on display when possible
|
||||||
```
|
```
|
||||||
|
@ -2125,6 +2125,7 @@ void APP_time_slice_500ms(void)
|
|||||||
g_search_css_state == SEARCH_CSS_STATE_REPEAT))
|
g_search_css_state == SEARCH_CSS_STATE_REPEAT))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (g_eeprom.auto_keypad_lock &&
|
if (g_eeprom.auto_keypad_lock &&
|
||||||
g_key_lock_count_down_500ms > 0 &&
|
g_key_lock_count_down_500ms > 0 &&
|
||||||
!g_dtmf_input_mode &&
|
!g_dtmf_input_mode &&
|
||||||
@ -2137,6 +2138,7 @@ void APP_time_slice_500ms(void)
|
|||||||
g_update_status = true;
|
g_update_status = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (exit_menu)
|
if (exit_menu)
|
||||||
{
|
{
|
||||||
@ -2428,9 +2430,11 @@ static void APP_process_key(const key_code_t Key, const bool key_pressed, const
|
|||||||
// stay awake - for now
|
// stay awake - for now
|
||||||
g_battery_save_count_down_10ms = battery_save_count_10ms;
|
g_battery_save_count_down_10ms = battery_save_count_10ms;
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
// keep the auto keylock at bay
|
// keep the auto keylock at bay
|
||||||
if (g_eeprom.auto_keypad_lock)
|
if (g_eeprom.auto_keypad_lock)
|
||||||
g_key_lock_count_down_500ms = key_lock_timeout_500ms;
|
g_key_lock_count_down_500ms = key_lock_timeout_500ms;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (g_fkey_pressed && (Key == KEY_PTT || Key == KEY_EXIT || Key == KEY_SIDE1 || Key == KEY_SIDE2))
|
if (g_fkey_pressed && (Key == KEY_PTT || Key == KEY_EXIT || Key == KEY_SIDE1 || Key == KEY_SIDE2))
|
||||||
{ // cancel the F-key
|
{ // cancel the F-key
|
||||||
@ -2440,6 +2444,7 @@ static void APP_process_key(const key_code_t Key, const bool key_pressed, const
|
|||||||
|
|
||||||
// ********************
|
// ********************
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (g_eeprom.key_lock && g_current_function != FUNCTION_TRANSMIT && Key != KEY_PTT)
|
if (g_eeprom.key_lock && g_current_function != FUNCTION_TRANSMIT && Key != KEY_PTT)
|
||||||
{ // keyboard is locked
|
{ // keyboard is locked
|
||||||
|
|
||||||
@ -2482,6 +2487,7 @@ static void APP_process_key(const key_code_t Key, const bool key_pressed, const
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// key beep
|
// key beep
|
||||||
// if (Key != KEY_PTT && !key_held && key_pressed)
|
// if (Key != KEY_PTT && !key_held && key_pressed)
|
||||||
|
@ -51,6 +51,7 @@ void GENERIC_Key_F(bool key_pressed, bool key_held)
|
|||||||
if (key_held)
|
if (key_held)
|
||||||
{ // f-key held
|
{ // f-key held
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (key_pressed && g_screen_to_display != DISPLAY_MENU && g_current_function != FUNCTION_TRANSMIT)
|
if (key_pressed && g_screen_to_display != DISPLAY_MENU && g_current_function != FUNCTION_TRANSMIT)
|
||||||
{ // toggle the keyboad lock
|
{ // toggle the keyboad lock
|
||||||
|
|
||||||
@ -66,6 +67,7 @@ void GENERIC_Key_F(bool key_pressed, bool key_held)
|
|||||||
g_keypad_locked = 4; // 2 second pop-up
|
g_keypad_locked = 4; // 2 second pop-up
|
||||||
g_update_display = true;
|
g_update_display = true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,9 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
|
|||||||
#endif
|
#endif
|
||||||
case MENU_BUSY_CHAN_LOCK:
|
case MENU_BUSY_CHAN_LOCK:
|
||||||
case MENU_BEEP:
|
case MENU_BEEP:
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
case MENU_AUTO_KEY_LOCK:
|
case MENU_AUTO_KEY_LOCK:
|
||||||
|
#endif
|
||||||
case MENU_S_ADD1:
|
case MENU_S_ADD1:
|
||||||
case MENU_S_ADD2:
|
case MENU_S_ADD2:
|
||||||
case MENU_STE:
|
case MENU_STE:
|
||||||
@ -614,10 +616,12 @@ void MENU_AcceptSetting(void)
|
|||||||
g_eeprom.channel_display_mode = g_sub_menu_selection;
|
g_eeprom.channel_display_mode = g_sub_menu_selection;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
case MENU_AUTO_KEY_LOCK:
|
case MENU_AUTO_KEY_LOCK:
|
||||||
g_eeprom.auto_keypad_lock = g_sub_menu_selection;
|
g_eeprom.auto_keypad_lock = g_sub_menu_selection;
|
||||||
g_key_lock_count_down_500ms = key_lock_timeout_500ms;
|
g_key_lock_count_down_500ms = key_lock_timeout_500ms;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_S_ADD1:
|
case MENU_S_ADD1:
|
||||||
g_tx_vfo->scanlist_1_participation = g_sub_menu_selection;
|
g_tx_vfo->scanlist_1_participation = g_sub_menu_selection;
|
||||||
@ -1091,9 +1095,11 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
g_sub_menu_selection = g_eeprom.channel_display_mode;
|
g_sub_menu_selection = g_eeprom.channel_display_mode;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
case MENU_AUTO_KEY_LOCK:
|
case MENU_AUTO_KEY_LOCK:
|
||||||
g_sub_menu_selection = g_eeprom.auto_keypad_lock;
|
g_sub_menu_selection = g_eeprom.auto_keypad_lock;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_S_ADD1:
|
case MENU_S_ADD1:
|
||||||
g_sub_menu_selection = g_tx_vfo->scanlist_1_participation;
|
g_sub_menu_selection = g_tx_vfo->scanlist_1_participation;
|
||||||
|
20
bitmaps.c
20
bitmaps.c
@ -111,15 +111,17 @@ const uint8_t BITMAP_USB_C[8] =
|
|||||||
__extension__ 0b00011100
|
__extension__ 0b00011100
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_KEYLOCK[6] =
|
#ifdef ENABLE_KEYLOCK
|
||||||
{ // teeny weeny padlock symbol
|
const uint8_t BITMAP_KEYLOCK[6] =
|
||||||
__extension__ 0b00000000,
|
{ // teeny weeny padlock symbol
|
||||||
__extension__ 0b01111100,
|
__extension__ 0b00000000,
|
||||||
__extension__ 0b01000110,
|
__extension__ 0b01111100,
|
||||||
__extension__ 0b01000101,
|
__extension__ 0b01000110,
|
||||||
__extension__ 0b01000110,
|
__extension__ 0b01000101,
|
||||||
__extension__ 0b01111100
|
__extension__ 0b01000110,
|
||||||
};
|
__extension__ 0b01111100
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
const uint8_t BITMAP_F_KEY[6] =
|
const uint8_t BITMAP_F_KEY[6] =
|
||||||
{ // F-Key symbol
|
{ // F-Key symbol
|
||||||
|
@ -12,7 +12,9 @@ extern const uint8_t BITMAP_BATTERY_LEVEL[17];
|
|||||||
|
|
||||||
extern const uint8_t BITMAP_USB_C[8];
|
extern const uint8_t BITMAP_USB_C[8];
|
||||||
|
|
||||||
extern const uint8_t BITMAP_KEYLOCK[6];
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
extern const uint8_t BITMAP_KEYLOCK[6];
|
||||||
|
#endif
|
||||||
|
|
||||||
extern const uint8_t BITMAP_F_KEY[6];
|
extern const uint8_t BITMAP_F_KEY[6];
|
||||||
|
|
||||||
|
4
board.c
4
board.c
@ -531,7 +531,9 @@ void BOARD_EEPROM_load(void)
|
|||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
g_eeprom.noaa_auto_scan = (Data[3] < 2) ? Data[3] : false;
|
g_eeprom.noaa_auto_scan = (Data[3] < 2) ? Data[3] : false;
|
||||||
#endif
|
#endif
|
||||||
g_eeprom.key_lock = (Data[4] < 2) ? Data[4] : false;
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
g_eeprom.key_lock = (Data[4] < 2) ? Data[4] : false;
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
g_eeprom.vox_switch = (Data[5] < 2) ? Data[5] : false;
|
g_eeprom.vox_switch = (Data[5] < 2) ? Data[5] : false;
|
||||||
g_eeprom.vox_level = (Data[6] < 10) ? Data[6] : 1;
|
g_eeprom.vox_level = (Data[6] < 10) ? Data[6] : 1;
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
12
misc.c
12
misc.c
@ -43,8 +43,10 @@ const uint8_t dtmf_txstop_countdown_500ms = 3000 / 500; // 6 sec
|
|||||||
|
|
||||||
const uint8_t serial_config_count_down_500ms = 3000 / 500; // 3 seconds
|
const uint8_t serial_config_count_down_500ms = 3000 / 500; // 3 seconds
|
||||||
|
|
||||||
const uint8_t key_input_timeout_500ms = 6000 / 500; // 6 seconds
|
const uint8_t key_input_timeout_500ms = 6000 / 500; // 6 seconds
|
||||||
const uint8_t key_lock_timeout_500ms = 30000 / 500; // 30 seconds
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
const uint8_t key_lock_timeout_500ms = 30000 / 500; // 30 seconds
|
||||||
|
#endif
|
||||||
|
|
||||||
const uint8_t key_debounce_10ms = 30 / 10; // 30ms
|
const uint8_t key_debounce_10ms = 30 / 10; // 30ms
|
||||||
const uint8_t key_long_press_10ms = 300 / 10; // 300ms
|
const uint8_t key_long_press_10ms = 300 / 10; // 300ms
|
||||||
@ -159,8 +161,10 @@ volatile uint16_t g_tail_tone_elimination_count_down_10ms;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool g_enable_speaker;
|
bool g_enable_speaker;
|
||||||
uint8_t g_key_input_count_down;
|
uint8_t g_key_input_count_down;
|
||||||
uint8_t g_key_lock_count_down_500ms;
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
uint8_t g_key_lock_count_down_500ms;
|
||||||
|
#endif
|
||||||
uint8_t g_rtte_count_down;
|
uint8_t g_rtte_count_down;
|
||||||
bool g_password_locked;
|
bool g_password_locked;
|
||||||
uint8_t g_update_status;
|
uint8_t g_update_status;
|
||||||
|
11
misc.h
11
misc.h
@ -129,7 +129,10 @@ extern const uint8_t dtmf_txstop_countdown_500ms;
|
|||||||
extern const uint8_t serial_config_count_down_500ms;
|
extern const uint8_t serial_config_count_down_500ms;
|
||||||
|
|
||||||
extern const uint8_t key_input_timeout_500ms;
|
extern const uint8_t key_input_timeout_500ms;
|
||||||
extern const uint8_t key_lock_timeout_500ms;
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
extern const uint8_t key_lock_timeout_500ms;
|
||||||
|
#endif
|
||||||
|
|
||||||
extern const uint8_t key_debounce_10ms;
|
extern const uint8_t key_debounce_10ms;
|
||||||
extern const uint8_t key_long_press_10ms;
|
extern const uint8_t key_long_press_10ms;
|
||||||
@ -245,7 +248,11 @@ extern volatile uint16_t g_tail_tone_elimination_count_down_10ms;
|
|||||||
#endif
|
#endif
|
||||||
extern bool g_enable_speaker;
|
extern bool g_enable_speaker;
|
||||||
extern uint8_t g_key_input_count_down;
|
extern uint8_t g_key_input_count_down;
|
||||||
extern uint8_t g_key_lock_count_down_500ms;
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
extern uint8_t g_key_lock_count_down_500ms;
|
||||||
|
#endif
|
||||||
|
|
||||||
extern uint8_t g_rtte_count_down;
|
extern uint8_t g_rtte_count_down;
|
||||||
extern bool g_password_locked;
|
extern bool g_password_locked;
|
||||||
extern uint8_t g_update_status;
|
extern uint8_t g_update_status;
|
||||||
|
@ -200,7 +200,12 @@ void SETTINGS_save(void)
|
|||||||
#else
|
#else
|
||||||
State[3] = false;
|
State[3] = false;
|
||||||
#endif
|
#endif
|
||||||
State[4] = g_eeprom.key_lock;
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
State[4] = g_eeprom.key_lock;
|
||||||
|
#else
|
||||||
|
State[4] = false;
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
State[5] = g_eeprom.vox_switch;
|
State[5] = g_eeprom.vox_switch;
|
||||||
State[6] = g_eeprom.vox_level;
|
State[6] = g_eeprom.vox_level;
|
||||||
|
@ -476,7 +476,9 @@ typedef struct {
|
|||||||
|
|
||||||
uint8_t squelch_level;
|
uint8_t squelch_level;
|
||||||
uint8_t tx_timeout_timer;
|
uint8_t tx_timeout_timer;
|
||||||
bool key_lock;
|
#ifdef ENABLE_KEYLOCK
|
||||||
|
bool key_lock;
|
||||||
|
#endif
|
||||||
bool vox_switch;
|
bool vox_switch;
|
||||||
uint8_t vox_level;
|
uint8_t vox_level;
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
|
@ -34,6 +34,7 @@ void UI_DisplayFM(void)
|
|||||||
|
|
||||||
memset(g_frame_buffer, 0, sizeof(g_frame_buffer));
|
memset(g_frame_buffer, 0, sizeof(g_frame_buffer));
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
||||||
{ // tell user how to unlock the keyboard
|
{ // tell user how to unlock the keyboard
|
||||||
backlight_turn_on(0);
|
backlight_turn_on(0);
|
||||||
@ -42,6 +43,7 @@ void UI_DisplayFM(void)
|
|||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// *************************************
|
// *************************************
|
||||||
// upper text line
|
// upper text line
|
||||||
|
@ -262,8 +262,10 @@ void UI_drawBars(uint8_t *p, const unsigned int level)
|
|||||||
|
|
||||||
char s[16];
|
char s[16];
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
||||||
return false; // display is in use
|
return false; // display is in use
|
||||||
|
#endif
|
||||||
|
|
||||||
if (g_current_function == FUNCTION_TRANSMIT ||
|
if (g_current_function == FUNCTION_TRANSMIT ||
|
||||||
g_screen_to_display != DISPLAY_MAIN ||
|
g_screen_to_display != DISPLAY_MAIN ||
|
||||||
@ -370,8 +372,10 @@ void UI_update_rssi(const int16_t rssi, const int vfo)
|
|||||||
|
|
||||||
// **********************************************************
|
// **********************************************************
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
||||||
return; // display is in use
|
return; // display is in use
|
||||||
|
#endif
|
||||||
|
|
||||||
if (g_current_function == FUNCTION_TRANSMIT || g_screen_to_display != DISPLAY_MAIN)
|
if (g_current_function == FUNCTION_TRANSMIT || g_screen_to_display != DISPLAY_MAIN)
|
||||||
return; // display is in use
|
return; // display is in use
|
||||||
@ -420,6 +424,7 @@ void UI_DisplayMain(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
if (g_eeprom.key_lock && g_keypad_locked > 0)
|
||||||
{ // tell user how to unlock the keyboard
|
{ // tell user how to unlock the keyboard
|
||||||
backlight_turn_on(10); // 5 seconds
|
backlight_turn_on(10); // 5 seconds
|
||||||
@ -428,6 +433,7 @@ void UI_DisplayMain(void)
|
|||||||
ST7565_BlitFullScreen();
|
ST7565_BlitFullScreen();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for (vfo_num = 0; vfo_num < 2; vfo_num++)
|
for (vfo_num = 0; vfo_num < 2; vfo_num++)
|
||||||
{
|
{
|
||||||
|
@ -82,7 +82,9 @@ const t_menu_item g_menu_list[] =
|
|||||||
{"VOICE", VOICE_ID_VOICE_PROMPT, MENU_VOICE },
|
{"VOICE", VOICE_ID_VOICE_PROMPT, MENU_VOICE },
|
||||||
#endif
|
#endif
|
||||||
{"SC REV", VOICE_ID_INVALID, MENU_SCAN_CAR_RESUME }, // was "SC_REV"
|
{"SC REV", VOICE_ID_INVALID, MENU_SCAN_CAR_RESUME }, // was "SC_REV"
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
{"KeyLOC", VOICE_ID_INVALID, MENU_AUTO_KEY_LOCK }, // was "AUTOLk"
|
{"KeyLOC", VOICE_ID_INVALID, MENU_AUTO_KEY_LOCK }, // was "AUTOLk"
|
||||||
|
#endif
|
||||||
{"S ADD1", VOICE_ID_INVALID, MENU_S_ADD1 },
|
{"S ADD1", VOICE_ID_INVALID, MENU_S_ADD1 },
|
||||||
{"S ADD2", VOICE_ID_INVALID, MENU_S_ADD2 },
|
{"S ADD2", VOICE_ID_INVALID, MENU_S_ADD2 },
|
||||||
{"STE", VOICE_ID_INVALID, MENU_STE },
|
{"STE", VOICE_ID_INVALID, MENU_STE },
|
||||||
@ -716,12 +718,14 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
case MENU_AUTO_KEY_LOCK:
|
case MENU_AUTO_KEY_LOCK:
|
||||||
if (g_sub_menu_selection == 0)
|
if (g_sub_menu_selection == 0)
|
||||||
strcpy(String, "OFF");
|
strcpy(String, "OFF");
|
||||||
else
|
else
|
||||||
sprintf(String, "%u secs", key_lock_timeout_500ms / 2);
|
sprintf(String, "%u secs", key_lock_timeout_500ms / 2);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case MENU_COMPAND:
|
case MENU_COMPAND:
|
||||||
strcpy(String, g_sub_menu_rx_tx[g_sub_menu_selection]);
|
strcpy(String, g_sub_menu_rx_tx[g_sub_menu_selection]);
|
||||||
|
18
ui/menu.h
18
ui/menu.h
@ -119,7 +119,9 @@ enum
|
|||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
MENU_VOICE,
|
MENU_VOICE,
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
MENU_AUTO_KEY_LOCK,
|
MENU_AUTO_KEY_LOCK,
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_SIDE_BUTT_MENU
|
#ifdef ENABLE_SIDE_BUTT_MENU
|
||||||
MENU_SIDE1_SHORT,
|
MENU_SIDE1_SHORT,
|
||||||
MENU_SIDE1_LONG,
|
MENU_SIDE1_LONG,
|
||||||
@ -134,19 +136,19 @@ enum
|
|||||||
// ************************************
|
// ************************************
|
||||||
// items after here are normally hidden
|
// items after here are normally hidden
|
||||||
|
|
||||||
MENU_BAT_CAL, // battery voltage calibration
|
MENU_BAT_CAL, // battery voltage calibration
|
||||||
|
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
MENU_F_CALI, // 26MHz reference xtal calibration
|
MENU_F_CALI, // 26MHz reference xtal calibration
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MENU_SCRAMBLER_EN, // scrambler enable/disable
|
MENU_SCRAMBLER_EN, // scrambler enable/disable
|
||||||
MENU_FREQ_LOCK, // lock to a selected region
|
MENU_FREQ_LOCK, // lock to a selected region
|
||||||
MENU_350_EN, // 350~400MHz enable/disable
|
MENU_350_EN, // 350~400MHz enable/disable
|
||||||
MENU_174_TX, // 174~350MHz TX enable/disable
|
MENU_174_TX, // 174~350MHz TX enable/disable
|
||||||
MENU_350_TX, // 350~400MHz TX enable/disable
|
MENU_350_TX, // 350~400MHz TX enable/disable
|
||||||
MENU_470_TX, // 470MHz and up TX enable/disable
|
MENU_470_TX, // 470MHz and up TX enable/disable
|
||||||
MENU_TX_EN, // disable the TX entirely
|
MENU_TX_EN, // disable the TX entirely
|
||||||
|
|
||||||
// ************************************
|
// ************************************
|
||||||
// ************************************
|
// ************************************
|
||||||
|
@ -178,6 +178,7 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
x += sizeof(BITMAP_VOX);
|
x += sizeof(BITMAP_VOX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_KEYLOCK
|
||||||
// KEY-LOCK indicator
|
// KEY-LOCK indicator
|
||||||
if (g_eeprom.key_lock || test_display)
|
if (g_eeprom.key_lock || test_display)
|
||||||
{
|
{
|
||||||
@ -186,6 +187,7 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
x1 = x;
|
x1 = x;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
if (g_fkey_pressed)
|
if (g_fkey_pressed)
|
||||||
{
|
{
|
||||||
memmove(line + x, BITMAP_F_KEY, sizeof(BITMAP_F_KEY));
|
memmove(line + x, BITMAP_F_KEY, sizeof(BITMAP_F_KEY));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user