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_TX_WHEN_AM := 0
|
||||
ENABLE_F_CAL_MENU := 0
|
||||
ENABLE_TX_EVERYWHERE := 0
|
||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
||||
ENABLE_BOOT_BEEPS := 0
|
||||
ENABLE_SHOW_CHARGE_LEVEL := 0
|
||||
@ -300,6 +301,9 @@ endif
|
||||
ifeq ($(ENABLE_F_CAL_MENU),1)
|
||||
CFLAGS += -DENABLE_F_CAL_MENU
|
||||
endif
|
||||
ifeq ($(ENABLE_TX_EVERYWHERE),1)
|
||||
CFLAGS += -DENABLE_TX_EVERYWHERE
|
||||
endif
|
||||
ifeq ($(ENABLE_CTCSS_TAIL_PHASE_SHIFT),1)
|
||||
CFLAGS += -DENABLE_CTCSS_TAIL_PHASE_SHIFT
|
||||
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_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_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_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
|
||||
|
@ -118,9 +118,9 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
|
||||
*pMax = ARRAY_SIZE(g_sub_menu_backlight) - 1;
|
||||
break;
|
||||
|
||||
case MENU_F_LOCK:
|
||||
case MENU_FREQ_LOCK:
|
||||
*pMin = 0;
|
||||
*pMax = ARRAY_SIZE(g_sub_menu_f_lock) - 1;
|
||||
*pMax = ARRAY_SIZE(g_sub_menu_freq_lock) - 1;
|
||||
break;
|
||||
|
||||
case MENU_MDF:
|
||||
@ -791,7 +791,7 @@ void MENU_AcceptSetting(void)
|
||||
g_setting_350_tx_enable = g_sub_menu_selection;
|
||||
break;
|
||||
|
||||
case MENU_F_LOCK:
|
||||
case MENU_FREQ_LOCK:
|
||||
g_setting_freq_lock = g_sub_menu_selection;
|
||||
break;
|
||||
|
||||
@ -1225,7 +1225,7 @@ void MENU_ShowCurrentSetting(void)
|
||||
g_sub_menu_selection = g_setting_350_tx_enable;
|
||||
break;
|
||||
|
||||
case MENU_F_LOCK:
|
||||
case MENU_FREQ_LOCK:
|
||||
g_sub_menu_selection = g_setting_freq_lock;
|
||||
break;
|
||||
|
||||
|
2
board.c
2
board.c
@ -723,7 +723,7 @@ void BOARD_EEPROM_load(void)
|
||||
|
||||
// 0F40..0F47
|
||||
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_killed = (Data[2] < 2) ? Data[2] : 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,59 +134,69 @@ int TX_freq_check(const uint32_t Frequency)
|
||||
{ // return '0' if TX frequency is allowed
|
||||
// otherwise return '-1'
|
||||
|
||||
if (Frequency < FREQ_BAND_TABLE[0].lower || Frequency > FREQ_BAND_TABLE[ARRAY_SIZE(FREQ_BAND_TABLE) - 1].upper)
|
||||
return -1; // not allowed outside this range
|
||||
if (Frequency < BX4819_BAND1.lower || Frequency > BX4819_BAND2.upper)
|
||||
return -1; // BX radio chip does not work out this range
|
||||
|
||||
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)
|
||||
{
|
||||
case F_LOCK_OFF:
|
||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||
case FREQ_LOCK_OFF:
|
||||
#ifdef ENABLE_TX_EVERYWHERE
|
||||
return 0;
|
||||
if (Frequency >= 17400000 && Frequency < 35000000)
|
||||
if (g_setting_200_tx_enable)
|
||||
#else
|
||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||
return 0;
|
||||
if (Frequency >= 35000000 && Frequency < 40000000)
|
||||
if (g_setting_350_tx_enable && g_setting_350_enable)
|
||||
return 0;
|
||||
if (Frequency >= 40000000 && Frequency < 47000000)
|
||||
return 0;
|
||||
if (Frequency >= 47000000 && Frequency <= 60000000)
|
||||
if (g_setting_500_tx_enable)
|
||||
if (Frequency >= 17400000 && Frequency < 35000000)
|
||||
if (g_setting_200_tx_enable)
|
||||
return 0;
|
||||
if (Frequency >= 35000000 && Frequency < 40000000)
|
||||
if (g_setting_350_tx_enable && g_setting_350_enable)
|
||||
return 0;
|
||||
if (Frequency >= 40000000 && Frequency < 47000000)
|
||||
return 0;
|
||||
if (Frequency >= 47000000 && Frequency <= 60000000)
|
||||
if (g_setting_500_tx_enable)
|
||||
return 0;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case F_LOCK_FCC:
|
||||
case FREQ_LOCK_FCC:
|
||||
if (Frequency >= 14400000 && Frequency < 14800000)
|
||||
return 0;
|
||||
if (Frequency >= 42000000 && Frequency < 45000000)
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case F_LOCK_CE:
|
||||
case FREQ_LOCK_CE:
|
||||
if (Frequency >= 14400000 && Frequency < 14600000)
|
||||
return 0;
|
||||
if (Frequency >= 43000000 && Frequency < 44000000)
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case F_LOCK_GB:
|
||||
case FREQ_LOCK_GB:
|
||||
if (Frequency >= 14400000 && Frequency < 14800000)
|
||||
return 0;
|
||||
if (Frequency >= 43000000 && Frequency < 44000000)
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case F_LOCK_430:
|
||||
case FREQ_LOCK_430:
|
||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||
return 0;
|
||||
if (Frequency >= 40000000 && Frequency < 43000000)
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case F_LOCK_438:
|
||||
case FREQ_LOCK_438:
|
||||
if (Frequency >= 13600000 && Frequency < 17400000)
|
||||
return 0;
|
||||
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;
|
||||
|
||||
enum {
|
||||
F_LOCK_OFF = 0,
|
||||
F_LOCK_FCC,
|
||||
F_LOCK_CE,
|
||||
F_LOCK_GB,
|
||||
F_LOCK_430,
|
||||
F_LOCK_438
|
||||
FREQ_LOCK_OFF = 0,
|
||||
FREQ_LOCK_FCC,
|
||||
FREQ_LOCK_CE,
|
||||
FREQ_LOCK_GB,
|
||||
FREQ_LOCK_430,
|
||||
FREQ_LOCK_438
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -353,7 +353,7 @@ typedef struct {
|
||||
uint8_t aes_key[16];
|
||||
|
||||
// 0x0F40
|
||||
uint8_t f_lock;
|
||||
uint8_t freq_lock;
|
||||
uint8_t enable_tx_350;
|
||||
uint8_t killed;
|
||||
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
|
||||
// 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 350", VOICE_ID_INVALID, MENU_350TX }, // was "350TX"
|
||||
{"Tx 500", VOICE_ID_INVALID, MENU_500TX }, // was "500TX"
|
||||
@ -281,7 +281,7 @@ const char g_sub_menu_RESET[2][4] =
|
||||
"ALL"
|
||||
};
|
||||
|
||||
const char g_sub_menu_f_lock[6][8] =
|
||||
const char g_sub_menu_freq_lock[6][8] =
|
||||
{
|
||||
"OFF",
|
||||
"FCC",
|
||||
@ -1014,8 +1014,15 @@ void UI_DisplayMenu(void)
|
||||
strcpy(String, g_sub_menu_RESET[g_sub_menu_selection]);
|
||||
break;
|
||||
|
||||
case MENU_F_LOCK:
|
||||
strcpy(String, g_sub_menu_f_lock[g_sub_menu_selection]);
|
||||
case MENU_FREQ_LOCK:
|
||||
#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;
|
||||
|
||||
#ifdef ENABLE_F_CAL_MENU
|
||||
|
@ -123,7 +123,7 @@ enum
|
||||
// ************************************
|
||||
// items after here are normally hidden
|
||||
|
||||
MENU_F_LOCK,
|
||||
MENU_FREQ_LOCK,
|
||||
MENU_200TX,
|
||||
MENU_350TX,
|
||||
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_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_freq_lock[6][8];
|
||||
extern const char g_sub_menu_backlight[8][7];
|
||||
extern const char g_sub_menu_rx_tx[4][6];
|
||||
#ifdef ENABLE_AM_FIX_TEST1
|
||||
|
Loading…
x
Reference in New Issue
Block a user