mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 22:31:25 +03:00
Added TX unlock option - eeek
This commit is contained in:
parent
373f747824
commit
aac309be88
4
Makefile
4
Makefile
@ -27,6 +27,7 @@ ENABLE_WIDE_RX := 1
|
|||||||
ENABLE_1250HZ_STEP := 1
|
ENABLE_1250HZ_STEP := 1
|
||||||
ENABLE_TX_WHEN_AM := 0
|
ENABLE_TX_WHEN_AM := 0
|
||||||
ENABLE_F_CAL_MENU := 0
|
ENABLE_F_CAL_MENU := 0
|
||||||
|
ENABLE_TX_EVERYWHERE := 0
|
||||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
||||||
ENABLE_BOOT_BEEPS := 0
|
ENABLE_BOOT_BEEPS := 0
|
||||||
ENABLE_SHOW_CHARGE_LEVEL := 0
|
ENABLE_SHOW_CHARGE_LEVEL := 0
|
||||||
@ -300,6 +301,9 @@ endif
|
|||||||
ifeq ($(ENABLE_F_CAL_MENU),1)
|
ifeq ($(ENABLE_F_CAL_MENU),1)
|
||||||
CFLAGS += -DENABLE_F_CAL_MENU
|
CFLAGS += -DENABLE_F_CAL_MENU
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(ENABLE_TX_EVERYWHERE),1)
|
||||||
|
CFLAGS += -DENABLE_TX_EVERYWHERE
|
||||||
|
endif
|
||||||
ifeq ($(ENABLE_CTCSS_TAIL_PHASE_SHIFT),1)
|
ifeq ($(ENABLE_CTCSS_TAIL_PHASE_SHIFT),1)
|
||||||
CFLAGS += -DENABLE_CTCSS_TAIL_PHASE_SHIFT
|
CFLAGS += -DENABLE_CTCSS_TAIL_PHASE_SHIFT
|
||||||
endif
|
endif
|
||||||
|
@ -58,6 +58,7 @@ ENABLE_WIDE_RX := 1 full 18MHz to 1300MHz RX (though fron
|
|||||||
ENABLE_1250HZ_STEP := 1 enable smaller 1.25kHz frequency steps
|
ENABLE_1250HZ_STEP := 1 enable smaller 1.25kHz frequency steps
|
||||||
ENABLE_TX_WHEN_AM := 0 allow TX (always FM) when RX is set to AM
|
ENABLE_TX_WHEN_AM := 0 allow TX (always FM) when RX is set to AM
|
||||||
ENABLE_F_CAL_MENU := 0 enable/disable the radios hidden frequency calibration menu
|
ENABLE_F_CAL_MENU := 0 enable/disable the radios hidden frequency calibration menu
|
||||||
|
ENABLE_TX_EVERYWHERE := 0 '1' = allow TX everywhere EXCEPT airband (108~136) .. TX harmonic content will cause interference to other services, do so entirely at your own risk !
|
||||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1 standard CTCSS tail phase shift rather than QS's own 55Hz tone method
|
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1 standard CTCSS tail phase shift rather than QS's own 55Hz tone method
|
||||||
ENABLE_BOOT_BEEPS := 0 gives user audio feedback on volume knob position at boot-up
|
ENABLE_BOOT_BEEPS := 0 gives user audio feedback on volume knob position at boot-up
|
||||||
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
|
||||||
|
@ -118,9 +118,9 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
|
|||||||
*pMax = ARRAY_SIZE(g_sub_menu_backlight) - 1;
|
*pMax = ARRAY_SIZE(g_sub_menu_backlight) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_F_LOCK:
|
case MENU_FREQ_LOCK:
|
||||||
*pMin = 0;
|
*pMin = 0;
|
||||||
*pMax = ARRAY_SIZE(g_sub_menu_f_lock) - 1;
|
*pMax = ARRAY_SIZE(g_sub_menu_freq_lock) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_MDF:
|
case MENU_MDF:
|
||||||
@ -791,7 +791,7 @@ void MENU_AcceptSetting(void)
|
|||||||
g_setting_350_tx_enable = g_sub_menu_selection;
|
g_setting_350_tx_enable = g_sub_menu_selection;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_F_LOCK:
|
case MENU_FREQ_LOCK:
|
||||||
g_setting_freq_lock = g_sub_menu_selection;
|
g_setting_freq_lock = g_sub_menu_selection;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1225,7 +1225,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
g_sub_menu_selection = g_setting_350_tx_enable;
|
g_sub_menu_selection = g_setting_350_tx_enable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_F_LOCK:
|
case MENU_FREQ_LOCK:
|
||||||
g_sub_menu_selection = g_setting_freq_lock;
|
g_sub_menu_selection = g_setting_freq_lock;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
2
board.c
2
board.c
@ -723,7 +723,7 @@ void BOARD_EEPROM_load(void)
|
|||||||
|
|
||||||
// 0F40..0F47
|
// 0F40..0F47
|
||||||
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
EEPROM_ReadBuffer(0x0F40, Data, 8);
|
||||||
g_setting_freq_lock = (Data[0] < 6) ? Data[0] : F_LOCK_OFF;
|
g_setting_freq_lock = (Data[0] < 6) ? Data[0] : FREQ_LOCK_OFF;
|
||||||
g_setting_350_tx_enable = (Data[1] < 2) ? Data[1] : false; // was true
|
g_setting_350_tx_enable = (Data[1] < 2) ? Data[1] : false; // was true
|
||||||
g_setting_killed = (Data[2] < 2) ? Data[2] : false;
|
g_setting_killed = (Data[2] < 2) ? Data[2] : false;
|
||||||
g_setting_200_tx_enable = (Data[3] < 2) ? Data[3] : false;
|
g_setting_200_tx_enable = (Data[3] < 2) ? Data[3] : false;
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -134,15 +134,24 @@ int TX_freq_check(const uint32_t Frequency)
|
|||||||
{ // return '0' if TX frequency is allowed
|
{ // return '0' if TX frequency is allowed
|
||||||
// otherwise return '-1'
|
// otherwise return '-1'
|
||||||
|
|
||||||
if (Frequency < FREQ_BAND_TABLE[0].lower || Frequency > FREQ_BAND_TABLE[ARRAY_SIZE(FREQ_BAND_TABLE) - 1].upper)
|
if (Frequency < BX4819_BAND1.lower || Frequency > BX4819_BAND2.upper)
|
||||||
return -1; // not allowed outside this range
|
return -1; // BX radio chip does not work out this range
|
||||||
|
|
||||||
if (Frequency >= BX4819_BAND1.upper && Frequency < BX4819_BAND2.lower)
|
if (Frequency >= BX4819_BAND1.upper && Frequency < BX4819_BAND2.lower)
|
||||||
return -1; // BX chip does not work in this range
|
return -1; // BX radio chip does not work in this range
|
||||||
|
|
||||||
|
if (Frequency >= 10800000 && Frequency < 13600000)
|
||||||
|
return -1; // TX not allowed in the airband
|
||||||
|
|
||||||
|
if (Frequency < FREQ_BAND_TABLE[0].lower || Frequency > FREQ_BAND_TABLE[ARRAY_SIZE(FREQ_BAND_TABLE) - 1].upper)
|
||||||
|
return -1; // TX not allowed outside this range
|
||||||
|
|
||||||
switch (g_setting_freq_lock)
|
switch (g_setting_freq_lock)
|
||||||
{
|
{
|
||||||
case F_LOCK_OFF:
|
case FREQ_LOCK_OFF:
|
||||||
|
#ifdef ENABLE_TX_EVERYWHERE
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||||
return 0;
|
return 0;
|
||||||
if (Frequency >= 17400000 && Frequency < 35000000)
|
if (Frequency >= 17400000 && Frequency < 35000000)
|
||||||
@ -156,37 +165,38 @@ int TX_freq_check(const uint32_t Frequency)
|
|||||||
if (Frequency >= 47000000 && Frequency <= 60000000)
|
if (Frequency >= 47000000 && Frequency <= 60000000)
|
||||||
if (g_setting_500_tx_enable)
|
if (g_setting_500_tx_enable)
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_LOCK_FCC:
|
case FREQ_LOCK_FCC:
|
||||||
if (Frequency >= 14400000 && Frequency < 14800000)
|
if (Frequency >= 14400000 && Frequency < 14800000)
|
||||||
return 0;
|
return 0;
|
||||||
if (Frequency >= 42000000 && Frequency < 45000000)
|
if (Frequency >= 42000000 && Frequency < 45000000)
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_LOCK_CE:
|
case FREQ_LOCK_CE:
|
||||||
if (Frequency >= 14400000 && Frequency < 14600000)
|
if (Frequency >= 14400000 && Frequency < 14600000)
|
||||||
return 0;
|
return 0;
|
||||||
if (Frequency >= 43000000 && Frequency < 44000000)
|
if (Frequency >= 43000000 && Frequency < 44000000)
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_LOCK_GB:
|
case FREQ_LOCK_GB:
|
||||||
if (Frequency >= 14400000 && Frequency < 14800000)
|
if (Frequency >= 14400000 && Frequency < 14800000)
|
||||||
return 0;
|
return 0;
|
||||||
if (Frequency >= 43000000 && Frequency < 44000000)
|
if (Frequency >= 43000000 && Frequency < 44000000)
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_LOCK_430:
|
case FREQ_LOCK_430:
|
||||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||||
return 0;
|
return 0;
|
||||||
if (Frequency >= 40000000 && Frequency < 43000000)
|
if (Frequency >= 40000000 && Frequency < 43000000)
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_LOCK_438:
|
case FREQ_LOCK_438:
|
||||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||||
return 0;
|
return 0;
|
||||||
if (Frequency >= 40000000 && Frequency < 43800000)
|
if (Frequency >= 40000000 && Frequency < 43800000)
|
||||||
|
14
settings.h
14
settings.h
@ -32,12 +32,12 @@ enum pwr_on_display_mode_e {
|
|||||||
typedef enum pwr_on_display_mode_e pwr_on_display_mode_t;
|
typedef enum pwr_on_display_mode_e pwr_on_display_mode_t;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
F_LOCK_OFF = 0,
|
FREQ_LOCK_OFF = 0,
|
||||||
F_LOCK_FCC,
|
FREQ_LOCK_FCC,
|
||||||
F_LOCK_CE,
|
FREQ_LOCK_CE,
|
||||||
F_LOCK_GB,
|
FREQ_LOCK_GB,
|
||||||
F_LOCK_430,
|
FREQ_LOCK_430,
|
||||||
F_LOCK_438
|
FREQ_LOCK_438
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -353,7 +353,7 @@ typedef struct {
|
|||||||
uint8_t aes_key[16];
|
uint8_t aes_key[16];
|
||||||
|
|
||||||
// 0x0F40
|
// 0x0F40
|
||||||
uint8_t f_lock;
|
uint8_t freq_lock;
|
||||||
uint8_t enable_tx_350;
|
uint8_t enable_tx_350;
|
||||||
uint8_t killed;
|
uint8_t killed;
|
||||||
uint8_t enable_tx_200;
|
uint8_t enable_tx_200;
|
||||||
|
15
ui/menu.c
15
ui/menu.c
@ -129,7 +129,7 @@ const t_menu_item g_menu_list[] =
|
|||||||
// hidden menu items from here on
|
// hidden menu items from here on
|
||||||
// enabled by pressing both the PTT and upper side button at power-on
|
// enabled by pressing both the PTT and upper side button at power-on
|
||||||
|
|
||||||
{"F LOCK", VOICE_ID_INVALID, MENU_F_LOCK }, // country/area specific
|
{"F LOCK", VOICE_ID_INVALID, MENU_FREQ_LOCK }, // country/area specific
|
||||||
{"Tx 200", VOICE_ID_INVALID, MENU_200TX }, // was "200TX"
|
{"Tx 200", VOICE_ID_INVALID, MENU_200TX }, // was "200TX"
|
||||||
{"Tx 350", VOICE_ID_INVALID, MENU_350TX }, // was "350TX"
|
{"Tx 350", VOICE_ID_INVALID, MENU_350TX }, // was "350TX"
|
||||||
{"Tx 500", VOICE_ID_INVALID, MENU_500TX }, // was "500TX"
|
{"Tx 500", VOICE_ID_INVALID, MENU_500TX }, // was "500TX"
|
||||||
@ -281,7 +281,7 @@ const char g_sub_menu_RESET[2][4] =
|
|||||||
"ALL"
|
"ALL"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char g_sub_menu_f_lock[6][8] =
|
const char g_sub_menu_freq_lock[6][8] =
|
||||||
{
|
{
|
||||||
"OFF",
|
"OFF",
|
||||||
"FCC",
|
"FCC",
|
||||||
@ -1014,8 +1014,15 @@ void UI_DisplayMenu(void)
|
|||||||
strcpy(String, g_sub_menu_RESET[g_sub_menu_selection]);
|
strcpy(String, g_sub_menu_RESET[g_sub_menu_selection]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_F_LOCK:
|
case MENU_FREQ_LOCK:
|
||||||
strcpy(String, g_sub_menu_f_lock[g_sub_menu_selection]);
|
#ifdef ENABLE_TX_EVERYWHERE
|
||||||
|
if (g_sub_menu_selection == FREQ_LOCK_OFF)
|
||||||
|
strcpy(String, " WARNING!\nTX\nUNLOCKED");
|
||||||
|
else
|
||||||
|
strcpy(String, g_sub_menu_freq_lock[g_sub_menu_selection]);
|
||||||
|
#else
|
||||||
|
strcpy(String, g_sub_menu_freq_lock[g_sub_menu_selection]);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef ENABLE_F_CAL_MENU
|
#ifdef ENABLE_F_CAL_MENU
|
||||||
|
@ -123,7 +123,7 @@ enum
|
|||||||
// ************************************
|
// ************************************
|
||||||
// items after here are normally hidden
|
// items after here are normally hidden
|
||||||
|
|
||||||
MENU_F_LOCK,
|
MENU_FREQ_LOCK,
|
||||||
MENU_200TX,
|
MENU_200TX,
|
||||||
MENU_350TX,
|
MENU_350TX,
|
||||||
MENU_500TX,
|
MENU_500TX,
|
||||||
@ -165,7 +165,7 @@ extern const char g_sub_menu_PTT_ID[5][15];
|
|||||||
extern const char g_sub_menu_pwr_on_msg[4][14];
|
extern const char g_sub_menu_pwr_on_msg[4][14];
|
||||||
extern const char g_sub_menu_roger_mode[3][16];
|
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_RESET[2][4];
|
||||||
extern const char g_sub_menu_f_lock[6][8];
|
extern const char g_sub_menu_freq_lock[6][8];
|
||||||
extern const char g_sub_menu_backlight[8][7];
|
extern const char g_sub_menu_backlight[8][7];
|
||||||
extern const char g_sub_menu_rx_tx[4][6];
|
extern const char g_sub_menu_rx_tx[4][6];
|
||||||
#ifdef ENABLE_AM_FIX_TEST1
|
#ifdef ENABLE_AM_FIX_TEST1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user