mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-27 22:01:26 +03:00
.
This commit is contained in:
parent
907aa00f07
commit
e3f10d5409
2
Makefile
2
Makefile
@ -53,7 +53,7 @@ ENABLE_F_CAL_MENU := 0
|
||||
ENABLE_TX_UNLOCK_MENU := 0
|
||||
#ENABLE_TX_POWER_CAL_MENU := 0
|
||||
ENABLE_TX_POWER_FIX := 1
|
||||
ENABLE_TX_POWER_LOW_USER := 0
|
||||
ENABLE_TX_POWER_LOW_USER := 1
|
||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
||||
ENABLE_CONTRAST := 0
|
||||
ENABLE_BOOT_BEEPS := 0
|
||||
|
@ -73,7 +73,7 @@ ENABLE_F_CAL_MENU := 0 enable frequency calibration hidden
|
||||
ENABLE_TX_UNLOCK_MENU := 0 allow TX everywhere EXCEPT airband (108~137) .. TX harmonic content will cause interference to other services, do so entirely at your own risk !
|
||||
ENABLE_TX_POWER_CAL_MENU := 0 used to compute the TX power register values .. leave at '0'
|
||||
ENABLE_TX_POWER_FIX := 1 fix the TX output power, L ~ 10mW, M ~ 500mW, H ~ 4W
|
||||
ENABLE_TX_POWER_LOW_USER := 1 make the low power setting user settable - adds "TxPUSR" menu option
|
||||
ENABLE_TX_POWER_LOW_USER := 1 make the low power setting user settable (for local hotspots etc) .. adds "TxPUSR" menu option
|
||||
ENABLE_CTCSS_TAIL_PHASE_SHIFT := 0 standard CTCSS tail phase shift rather than QS's own 55Hz tone method
|
||||
ENABLE_CONTRAST := 0 add contrast menu
|
||||
ENABLE_BOOT_BEEPS := 0 gives user audio feedback on volume knob position at boot-up
|
||||
|
@ -433,7 +433,7 @@ bool DTMF_Reply(void)
|
||||
if (g_dtmf_call_state != DTMF_CALL_STATE_NONE ||
|
||||
g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_APOLLO ||
|
||||
g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_OFF ||
|
||||
g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_TX_DOWN)
|
||||
g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_EOT)
|
||||
{
|
||||
g_dtmf_reply_state = DTMF_REPLY_NONE;
|
||||
return false;
|
||||
|
@ -439,7 +439,7 @@ void MENU_AcceptSetting(void)
|
||||
|
||||
#ifdef ENABLE_TX_POWER_LOW_USER
|
||||
case MENU_TX_POWER_LOW_USER:
|
||||
g_tx_vfo->channel.tx_pwr_user = g_sub_menu_selection;
|
||||
g_tx_vfo->channel.tx_power_user = g_sub_menu_selection;
|
||||
g_request_save_channel = 1;
|
||||
break;
|
||||
#endif
|
||||
@ -769,7 +769,7 @@ void MENU_AcceptSetting(void)
|
||||
|
||||
case MENU_PTT_ID:
|
||||
g_tx_vfo->channel.dtmf_ptt_id_tx_mode = g_sub_menu_selection;
|
||||
if (g_tx_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_TX_DOWN ||
|
||||
if (g_tx_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_EOT ||
|
||||
g_tx_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_BOTH ||
|
||||
g_tx_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_APOLLO)
|
||||
{
|
||||
@ -1024,7 +1024,7 @@ void MENU_ShowCurrentSetting(void)
|
||||
|
||||
#ifdef ENABLE_TX_POWER_LOW_USER
|
||||
case MENU_TX_POWER_LOW_USER:
|
||||
g_sub_menu_selection = g_tx_vfo->channel.tx_pwr_user;
|
||||
g_sub_menu_selection = g_tx_vfo->channel.tx_power_user;
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
4
dcs.h
4
dcs.h
@ -30,8 +30,8 @@ enum dcs_code_type_e
|
||||
typedef enum dcs_code_type_e dcs_code_type_t;
|
||||
|
||||
enum {
|
||||
CDCSS_POSITIVE_CODE = 1U,
|
||||
CDCSS_NEGATIVE_CODE = 2U,
|
||||
CDCSS_POSITIVE_CODE = 1u,
|
||||
CDCSS_NEGATIVE_CODE = 2u,
|
||||
};
|
||||
|
||||
extern const uint16_t CTCSS_TONE_LIST[50];
|
||||
|
@ -406,11 +406,13 @@ void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold)
|
||||
|
||||
void BK4819_set_TX_deviation(const bool narrow)
|
||||
{
|
||||
const uint8_t scrambler = (BK4819_read_reg(0x31) >> 1) & 1u;
|
||||
uint16_t deviation = narrow ? 900 : 1232; // 0 ~ 4095
|
||||
if (scrambler)
|
||||
deviation -= 200;
|
||||
BK4819_write_reg(0x40, (3u << 12) | deviation);
|
||||
// const uint8_t scrambler = (BK4819_read_reg(0x31) >> 1) & 1u;
|
||||
uint16_t deviation = narrow ? 900 : 1232;
|
||||
// if (scrambler)
|
||||
// deviation -= 200;
|
||||
if (deviation > 4095)
|
||||
deviation = 4095;
|
||||
BK4819_write_reg(0x40, (3u << 12) | deviation); // deviaion 0 ~ 4095
|
||||
}
|
||||
|
||||
void BK4819_SetFilterBandwidth(const BK4819_filter_bandwidth_t Bandwidth)
|
||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
4
radio.c
4
radio.c
@ -632,7 +632,7 @@ void RADIO_ConfigureTXPower(vfo_info_t *p_vfo)
|
||||
|
||||
#ifdef ENABLE_TX_POWER_LOW_USER
|
||||
if (p_vfo->channel.tx_power == OUTPUT_POWER_LOW)
|
||||
p_vfo->txp_reg_value = 8 + (p_vfo->channel.tx_pwr_user * 2);
|
||||
p_vfo->txp_reg_value = 8 + (p_vfo->channel.tx_power_user * 2);
|
||||
else
|
||||
#endif
|
||||
p_vfo->txp_reg_value = FREQUENCY_CalculateOutputPower(tx_power[0], tx_power[1], tx_power[2], p_vfo->p_tx->frequency);
|
||||
@ -1220,7 +1220,7 @@ void RADIO_tx_eot(void)
|
||||
#endif
|
||||
|
||||
if (g_dtmf_call_state == DTMF_CALL_STATE_NONE &&
|
||||
(g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_TX_DOWN || g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_BOTH))
|
||||
(g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_EOT || g_current_vfo->channel.dtmf_ptt_id_tx_mode == PTT_ID_BOTH))
|
||||
{ // end-of-tx
|
||||
if (g_eeprom.config.setting.dtmf.side_tone)
|
||||
{
|
||||
|
57
settings.h
57
settings.h
@ -150,8 +150,8 @@ enum compand_e {
|
||||
|
||||
enum ptt_id_e {
|
||||
PTT_ID_OFF = 0, // OFF
|
||||
PTT_ID_TX_UP, // BEGIN OF TX
|
||||
PTT_ID_TX_DOWN, // END OF TX
|
||||
PTT_ID_BOT, // BEGIN OF TX
|
||||
PTT_ID_EOT, // END OF TX
|
||||
PTT_ID_BOTH, // BOTH
|
||||
PTT_ID_APOLLO // Apolo quindar tones
|
||||
};
|
||||
@ -185,51 +185,51 @@ typedef enum vfo_state_e vfo_state_t;
|
||||
//
|
||||
// 16 bytes
|
||||
typedef struct {
|
||||
// [0]
|
||||
uint32_t frequency; //
|
||||
// [4]
|
||||
uint32_t tx_offset; //
|
||||
// [8]
|
||||
uint8_t rx_ctcss_cdcss_code; //
|
||||
// [byte 0-3]
|
||||
uint32_t frequency; // rx frequency / 10
|
||||
// [byte 4-7]
|
||||
uint32_t tx_offset; // tx offset frequency / 10
|
||||
// [byte 8]
|
||||
uint8_t rx_ctcss_cdcss_code; // ctcss 0 ~ 49 cdcss 0 ~ 103
|
||||
// [9]
|
||||
uint8_t tx_ctcss_cdcss_code; //
|
||||
uint8_t tx_ctcss_cdcss_code; // ctcss 0 ~ 49 cdcss 0 ~ 103
|
||||
// [10]
|
||||
struct {
|
||||
uint8_t rx_ctcss_cdcss_type:2; //
|
||||
uint8_t rx_ctcss_cdcss_type:2; // 0=none 1=ctcss 2=cdcss 3=cdcss reverse
|
||||
uint8_t unused1:2; //
|
||||
uint8_t tx_ctcss_cdcss_type:2; //
|
||||
uint8_t tx_ctcss_cdcss_type:2; // 0=none 1=ctcss 2=cdcss 3=cdcss reverse
|
||||
uint8_t unused2:2; //
|
||||
};
|
||||
// [11]
|
||||
struct {
|
||||
uint8_t tx_offset_dir:2; // 0=none 1=neg 2=pos
|
||||
uint8_t mdc1200_mode:2; // 1of11
|
||||
uint8_t mdc1200_mode:2; // 1of11 0=none 1=bot 2=eot 3=both
|
||||
uint8_t mod_mode:2; // 0=FM 1=AM 2=DSB
|
||||
uint8_t unused4:2; //
|
||||
};
|
||||
// [12]
|
||||
struct {
|
||||
uint8_t frequency_reverse:1; // reverse repeater
|
||||
uint8_t channel_bandwidth:1; // wide/narrow
|
||||
uint8_t tx_power:2; // 0=Low 1=Medium 2=High
|
||||
uint8_t busy_channel_lock:1; //
|
||||
uint8_t frequency_reverse:1; // 0=disabled 1=enabled
|
||||
uint8_t channel_bandwidth:1; // 0=wide (25kHz) 1=narrow (12.5kHz)
|
||||
uint8_t tx_power:2; // 0=low/user 1=medium 2=high
|
||||
uint8_t busy_channel_lock:1; // 0=disabled 1=enabled
|
||||
uint8_t unused5:1; //
|
||||
uint8_t compand:2; // 0=off 1=TX 2=RX 3=TX/RX
|
||||
};
|
||||
// [13]
|
||||
struct {
|
||||
uint8_t dtmf_decoding_enable:1; //
|
||||
uint8_t dtmf_ptt_id_tx_mode:3; //
|
||||
uint8_t squelch_level:4; // 1of11 0 ~ 9 per channel squelch, 0 = use main squelch level
|
||||
uint8_t dtmf_decoding_enable:1; // 0=disabled 1=enabled
|
||||
uint8_t dtmf_ptt_id_tx_mode:3; // 0=none 1=bot 2=eot 3=both 4=apollo
|
||||
uint8_t squelch_level:4; // 1of11 0 = use main squelch level, 1 ~ 9 per channel squelch
|
||||
};
|
||||
// [14]
|
||||
struct {
|
||||
uint8_t step_setting:4; // step size index 0 ~ 15
|
||||
uint8_t tx_pwr_user:4; // 1of11
|
||||
uint8_t tx_power_user:4; // 1of11 .. user power setting 0 ~ 15
|
||||
};
|
||||
// [15]
|
||||
struct {
|
||||
uint8_t scrambler:5; // voice inversion scrambler frequency index
|
||||
uint8_t scrambler:5; // voice inversion scrambler frequency index 0 ~ 31
|
||||
uint8_t unused7:3; //
|
||||
};
|
||||
} __attribute__((packed)) t_channel;
|
||||
@ -491,8 +491,7 @@ typedef struct {
|
||||
} __attribute__((packed)) rssi_cal;
|
||||
|
||||
// 0x1ED0
|
||||
struct
|
||||
{
|
||||
struct {
|
||||
union {
|
||||
struct {
|
||||
uint8_t low[3]; //
|
||||
@ -506,11 +505,19 @@ typedef struct {
|
||||
|
||||
// 0x1F40
|
||||
uint16_t battery[6]; //
|
||||
#if 1
|
||||
// QS
|
||||
uint8_t unused1[4]; // 0xff's
|
||||
#else
|
||||
// 1of11
|
||||
struct {
|
||||
uint16_t wide; // 0 ~ 4095
|
||||
uint16_t narrow; // 0 ~ 4095
|
||||
} __attribute__((packed)) tx_deviation;
|
||||
#endif
|
||||
|
||||
// 0x1F50
|
||||
struct
|
||||
{
|
||||
struct {
|
||||
uint16_t threshold[10]; //
|
||||
uint8_t unused[4]; // 0xff's
|
||||
} __attribute__((packed)) vox[2];
|
||||
|
Loading…
x
Reference in New Issue
Block a user