0
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:
OneOfEleven 2023-10-14 10:33:21 +01:00
parent 373f747824
commit aac309be88
10 changed files with 59 additions and 37 deletions

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

Binary file not shown.

Binary file not shown.

View File

@ -134,15 +134,24 @@ 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:
case FREQ_LOCK_OFF:
#ifdef ENABLE_TX_EVERYWHERE
return 0;
#else
if (Frequency >= 13600000 && Frequency < 17400000)
return 0;
if (Frequency >= 17400000 && Frequency < 35000000)
@ -156,37 +165,38 @@ int TX_freq_check(const uint32_t Frequency)
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)

View File

@ -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;

View File

@ -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

View File

@ -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