mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 22:31:25 +03:00
vox update - disabled while in menu mode
This commit is contained in:
parent
bb3b6812c6
commit
5055586035
4
Makefile
4
Makefile
@ -30,6 +30,7 @@ ENABLE_VOICE := 0
|
|||||||
ENABLE_MUTE_RADIO_FOR_VOICE := 0
|
ENABLE_MUTE_RADIO_FOR_VOICE := 0
|
||||||
# Tx on Voice 1.0 kB
|
# Tx on Voice 1.0 kB
|
||||||
ENABLE_VOX := 1
|
ENABLE_VOX := 1
|
||||||
|
ENABLE_VOX_MORE_SENSITIVE := 1
|
||||||
ENABLE_REDUCE_LOW_MID_TX_POWER := 1
|
ENABLE_REDUCE_LOW_MID_TX_POWER := 1
|
||||||
# Tx Alarm 600 B
|
# Tx Alarm 600 B
|
||||||
ENABLE_ALARM := 0
|
ENABLE_ALARM := 0
|
||||||
@ -348,6 +349,9 @@ endif
|
|||||||
ifeq ($(ENABLE_VOX),1)
|
ifeq ($(ENABLE_VOX),1)
|
||||||
CFLAGS += -DENABLE_VOX
|
CFLAGS += -DENABLE_VOX
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(ENABLE_VOX_MORE_SENSITIVE),1)
|
||||||
|
CFLAGS += -DENABLE_VOX_MORE_SENSITIVE
|
||||||
|
endif
|
||||||
ifeq ($(ENABLE_REDUCE_LOW_MID_TX_POWER),1)
|
ifeq ($(ENABLE_REDUCE_LOW_MID_TX_POWER),1)
|
||||||
CFLAGS += -DENABLE_REDUCE_LOW_MID_TX_POWER
|
CFLAGS += -DENABLE_REDUCE_LOW_MID_TX_POWER
|
||||||
endif
|
endif
|
||||||
|
@ -54,6 +54,7 @@ ENABLE_NOAA := 0 everything NOAA (only of any use in
|
|||||||
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 := 0 voice operated transmission
|
ENABLE_VOX := 0 voice operated transmission
|
||||||
|
ENABLE_VOX_MORE_SENSITIVE := 1 make VOX more sensitive
|
||||||
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 := 0 TX alarms
|
ENABLE_ALARM := 0 TX alarms
|
||||||
ENABLE_1750HZ := 0 side key 1750Hz TX tone (older style repeater access)
|
ENABLE_1750HZ := 0 side key 1750Hz TX tone (older style repeater access)
|
||||||
|
@ -300,7 +300,8 @@ void ACTION_Scan(bool bRestart)
|
|||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
void ACTION_Vox(void)
|
void ACTION_Vox(void)
|
||||||
{
|
{
|
||||||
g_eeprom.config.setting.vox_switch = (g_eeprom.config.setting.vox_switch + 1) & 1u;
|
// toggle VOX on/off
|
||||||
|
g_eeprom.config.setting.vox_enabled = (g_eeprom.config.setting.vox_enabled + 1) & 1u;
|
||||||
g_request_save_settings = true;
|
g_request_save_settings = true;
|
||||||
g_flag_reconfigure_vfos = true;
|
g_flag_reconfigure_vfos = true;
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
|
89
app/app.c
89
app/app.c
@ -1011,9 +1011,15 @@ void APP_process_radio_interrupts(void)
|
|||||||
if (int_bits & BK4819_REG_02_VOX_LOST)
|
if (int_bits & BK4819_REG_02_VOX_LOST)
|
||||||
{
|
{
|
||||||
g_vox_lost = true;
|
g_vox_lost = true;
|
||||||
g_vox_pause_tick_10ms = 10;
|
g_vox_pause_tick_10ms = 10; // 100ms
|
||||||
|
|
||||||
if (g_eeprom.config.setting.vox_switch)
|
g_update_status = true;
|
||||||
|
|
||||||
|
#if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG)
|
||||||
|
// UART_SendText("vox lost\r\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (g_eeprom.config.setting.vox_enabled)
|
||||||
{
|
{
|
||||||
if (g_current_function == FUNCTION_POWER_SAVE && !g_rx_idle_mode)
|
if (g_current_function == FUNCTION_POWER_SAVE && !g_rx_idle_mode)
|
||||||
{
|
{
|
||||||
@ -1034,6 +1040,12 @@ void APP_process_radio_interrupts(void)
|
|||||||
{
|
{
|
||||||
g_vox_lost = false;
|
g_vox_lost = false;
|
||||||
g_vox_pause_tick_10ms = 0;
|
g_vox_pause_tick_10ms = 0;
|
||||||
|
|
||||||
|
g_update_status = true;
|
||||||
|
|
||||||
|
#if defined(ENABLE_UART) && defined(ENABLE_UART_DEBUG)
|
||||||
|
// UART_SendText("vox found\r\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1111,26 +1123,18 @@ void APP_end_tx(void)
|
|||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
static void APP_process_vox(void)
|
static void APP_process_vox(void)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_KILL_REVIVE
|
|
||||||
if (g_eeprom.config.setting.radio_disabled)
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (g_vox_resume_tick_10ms == 0)
|
if (g_vox_resume_tick_10ms == 0)
|
||||||
{
|
{
|
||||||
if (g_vox_pause_tick_10ms)
|
if (g_vox_pause_tick_10ms > 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_vox_lost = false;
|
g_vox_lost = false;
|
||||||
g_vox_pause_tick_10ms = 0;
|
g_vox_pause_tick_10ms = 0;
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
g_update_status = true;
|
||||||
if (g_fm_radio_mode)
|
}
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (g_current_function == FUNCTION_RECEIVE || g_monitor_enabled)
|
if (g_current_function == FUNCTION_RECEIVE || g_monitor_enabled)
|
||||||
return;
|
return;
|
||||||
@ -1141,18 +1145,20 @@ void APP_end_tx(void)
|
|||||||
if (g_vox_noise_detected)
|
if (g_vox_noise_detected)
|
||||||
{
|
{
|
||||||
if (g_vox_lost)
|
if (g_vox_lost)
|
||||||
g_vox_stop_tick_10ms = vox_stop_10ms;
|
{
|
||||||
|
g_vox_stop_tick_10ms = vox_stop_10ms; // 1 second
|
||||||
|
}
|
||||||
else
|
else
|
||||||
if (g_vox_stop_tick_10ms == 0)
|
if (g_vox_stop_tick_10ms == 0)
|
||||||
|
{
|
||||||
g_vox_noise_detected = false;
|
g_vox_noise_detected = false;
|
||||||
|
g_update_status = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (g_current_function == FUNCTION_TRANSMIT &&
|
if (g_current_function == FUNCTION_TRANSMIT && !g_ptt_is_pressed && !g_vox_noise_detected)
|
||||||
!g_ptt_is_pressed &&
|
|
||||||
!g_vox_noise_detected)
|
|
||||||
{
|
{
|
||||||
if (g_flag_end_tx)
|
if (g_flag_end_tx)
|
||||||
{
|
{ // back to RX mode
|
||||||
//if (g_current_function != FUNCTION_FOREGROUND)
|
|
||||||
FUNCTION_Select(FUNCTION_FOREGROUND);
|
FUNCTION_Select(FUNCTION_FOREGROUND);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1170,24 +1176,47 @@ void APP_end_tx(void)
|
|||||||
|
|
||||||
g_flag_end_tx = false;
|
g_flag_end_tx = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_vox_lost)
|
if (!g_vox_lost)
|
||||||
{
|
return;
|
||||||
|
|
||||||
g_vox_noise_detected = true;
|
g_vox_noise_detected = true;
|
||||||
|
|
||||||
|
g_update_status = true;
|
||||||
|
|
||||||
|
#ifdef ENABLE_KILL_REVIVE
|
||||||
|
if (g_eeprom.config.setting.radio_disabled)
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!g_eeprom.config.setting.tx_enable)
|
||||||
|
return;
|
||||||
|
|
||||||
|
#ifdef ENABLE_FMRADIO
|
||||||
|
if (g_fm_radio_mode)
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (g_current_display_screen == DISPLAY_MENU)
|
||||||
|
return;
|
||||||
|
|
||||||
if (g_current_function == FUNCTION_POWER_SAVE)
|
if (g_current_function == FUNCTION_POWER_SAVE)
|
||||||
FUNCTION_Select(FUNCTION_FOREGROUND);
|
FUNCTION_Select(FUNCTION_FOREGROUND);
|
||||||
|
|
||||||
if (g_current_function != FUNCTION_TRANSMIT && g_serial_config_tick_500ms == 0)
|
if (g_current_function == FUNCTION_TRANSMIT || g_serial_config_tick_500ms > 0)
|
||||||
{
|
return;
|
||||||
|
|
||||||
|
// ************* go into TX mode
|
||||||
|
|
||||||
g_dtmf_reply_state = DTMF_REPLY_NONE;
|
g_dtmf_reply_state = DTMF_REPLY_NONE;
|
||||||
|
|
||||||
RADIO_PrepareTX();
|
RADIO_PrepareTX();
|
||||||
|
|
||||||
g_update_display = true;
|
g_update_display = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// called every 10ms
|
// called every 10ms
|
||||||
@ -1235,9 +1264,9 @@ void APP_check_keys(void)
|
|||||||
{ // PTT released
|
{ // PTT released
|
||||||
|
|
||||||
#ifdef ENABLE_KILL_REVIVE
|
#ifdef ENABLE_KILL_REVIVE
|
||||||
if (g_ptt_is_pressed || g_serial_config_tick_500ms > 0 || !g_eeprom.config.setting.tx_enable || g_current_function == FUNCTION_TRANSMIT || g_eeprom.config.setting.radio_disabled)
|
if (g_ptt_is_pressed || g_serial_config_tick_500ms > 0 || !g_eeprom.config.setting.tx_enable || g_eeprom.config.setting.radio_disabled)
|
||||||
#else
|
#else
|
||||||
if (g_ptt_is_pressed || g_serial_config_tick_500ms > 0 || !g_eeprom.config.setting.tx_enable || g_current_function == FUNCTION_TRANSMIT)
|
if (g_ptt_is_pressed || g_serial_config_tick_500ms > 0 || !g_eeprom.config.setting.tx_enable)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (--g_ptt_debounce <= 0)
|
if (--g_ptt_debounce <= 0)
|
||||||
@ -1825,8 +1854,8 @@ void APP_process_power_save(void)
|
|||||||
BK4819_Conditional_RX_TurnOn();
|
BK4819_Conditional_RX_TurnOn();
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
if (g_eeprom.config.setting.vox_switch)
|
if (g_eeprom.config.setting.vox_enabled)
|
||||||
BK4819_EnableVox(g_vox_threshold[1], g_vox_threshold[0]);
|
RADIO_enable_vox(g_eeprom.config.setting.vox_level);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (APP_toggle_dual_watch_vfo())
|
if (APP_toggle_dual_watch_vfo())
|
||||||
@ -2401,7 +2430,7 @@ void APP_time_slice_10ms(void)
|
|||||||
if (g_vox_pause_tick_10ms > 0)
|
if (g_vox_pause_tick_10ms > 0)
|
||||||
g_vox_pause_tick_10ms--;
|
g_vox_pause_tick_10ms--;
|
||||||
|
|
||||||
if (g_eeprom.config.setting.vox_switch)
|
if (g_eeprom.config.setting.vox_enabled)
|
||||||
APP_process_vox();
|
APP_process_vox();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -557,8 +557,8 @@ void MENU_AcceptSetting(void)
|
|||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
case MENU_VOX:
|
case MENU_VOX:
|
||||||
g_eeprom.config.setting.vox_switch = g_sub_menu_selection != 0;
|
g_eeprom.config.setting.vox_enabled = (g_sub_menu_selection != 0) ? 1 : 0;
|
||||||
if (g_eeprom.config.setting.vox_switch)
|
if (g_eeprom.config.setting.vox_enabled)
|
||||||
g_eeprom.config.setting.vox_level = g_sub_menu_selection - 1;
|
g_eeprom.config.setting.vox_level = g_sub_menu_selection - 1;
|
||||||
g_flag_reconfigure_vfos = true;
|
g_flag_reconfigure_vfos = true;
|
||||||
g_update_status = true;
|
g_update_status = true;
|
||||||
@ -1056,7 +1056,7 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
case MENU_VOX:
|
case MENU_VOX:
|
||||||
g_sub_menu_selection = g_eeprom.config.setting.vox_switch ? g_eeprom.config.setting.vox_level + 1 : 0;
|
g_sub_menu_selection = g_eeprom.config.setting.vox_enabled ? g_eeprom.config.setting.vox_level + 1 : 0;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
44
bitmaps.c
44
bitmaps.c
@ -134,8 +134,9 @@ const uint8_t BITMAP_F_KEY[6] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
const uint8_t BITMAP_VOX[18] =
|
const uint8_t BITMAP_VOX[17] =
|
||||||
{ // "VOX"
|
{ // "VOX"
|
||||||
|
#if 0
|
||||||
__extension__ 0b00000000,
|
__extension__ 0b00000000,
|
||||||
__extension__ 0b00011111,
|
__extension__ 0b00011111,
|
||||||
__extension__ 0b00100000,
|
__extension__ 0b00100000,
|
||||||
@ -146,7 +147,6 @@ const uint8_t BITMAP_F_KEY[6] =
|
|||||||
__extension__ 0b00111110,
|
__extension__ 0b00111110,
|
||||||
__extension__ 0b01000001,
|
__extension__ 0b01000001,
|
||||||
__extension__ 0b01000001,
|
__extension__ 0b01000001,
|
||||||
__extension__ 0b01000001,
|
|
||||||
__extension__ 0b00111110,
|
__extension__ 0b00111110,
|
||||||
__extension__ 0b00000000,
|
__extension__ 0b00000000,
|
||||||
__extension__ 0b01100011,
|
__extension__ 0b01100011,
|
||||||
@ -154,6 +154,46 @@ const uint8_t BITMAP_F_KEY[6] =
|
|||||||
__extension__ 0b00001000,
|
__extension__ 0b00001000,
|
||||||
__extension__ 0b00010100,
|
__extension__ 0b00010100,
|
||||||
__extension__ 0b01100011
|
__extension__ 0b01100011
|
||||||
|
#else
|
||||||
|
__extension__ 0b00000000,
|
||||||
|
__extension__ 0b00111111,
|
||||||
|
__extension__ 0b01111111,
|
||||||
|
__extension__ 0b01100000,
|
||||||
|
__extension__ 0b01111111,
|
||||||
|
__extension__ 0b00111111,
|
||||||
|
__extension__ 0b00000000,
|
||||||
|
__extension__ 0b00111110,
|
||||||
|
__extension__ 0b01100011,
|
||||||
|
__extension__ 0b01100011,
|
||||||
|
__extension__ 0b00111110,
|
||||||
|
__extension__ 0b00000000,
|
||||||
|
__extension__ 0b01100011,
|
||||||
|
__extension__ 0b00110110,
|
||||||
|
__extension__ 0b00011100,
|
||||||
|
__extension__ 0b00110110,
|
||||||
|
__extension__ 0b01100011
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t BITMAP_VOX_SMALL[17] =
|
||||||
|
{ // "vox"
|
||||||
|
__extension__ 0b00000000,
|
||||||
|
__extension__ 0b00000111,
|
||||||
|
__extension__ 0b00001000,
|
||||||
|
__extension__ 0b00010000,
|
||||||
|
__extension__ 0b00001000,
|
||||||
|
__extension__ 0b00000111,
|
||||||
|
__extension__ 0b00000000,
|
||||||
|
__extension__ 0b00001110,
|
||||||
|
__extension__ 0b00010001,
|
||||||
|
__extension__ 0b00010001,
|
||||||
|
__extension__ 0b00001110,
|
||||||
|
__extension__ 0b00000000,
|
||||||
|
__extension__ 0b00010001,
|
||||||
|
__extension__ 0b00001010,
|
||||||
|
__extension__ 0b00000100,
|
||||||
|
__extension__ 0b00001010,
|
||||||
|
__extension__ 0b00010001
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -19,7 +19,8 @@ extern const uint8_t BITMAP_USB_C[8];
|
|||||||
extern const uint8_t BITMAP_F_KEY[6];
|
extern const uint8_t BITMAP_F_KEY[6];
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
extern const uint8_t BITMAP_VOX[18];
|
extern const uint8_t BITMAP_VOX[17];
|
||||||
|
extern const uint8_t BITMAP_VOX_SMALL[17];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -399,23 +399,28 @@ void BK4819_set_GPIO_pin(bk4819_gpio_pin_t Pin, bool bSet)
|
|||||||
void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold)
|
void BK4819_EnableVox(uint16_t VoxEnableThreshold, uint16_t VoxDisableThreshold)
|
||||||
{
|
{
|
||||||
// VOX Algorithm
|
// VOX Algorithm
|
||||||
//if (voxamp>VoxEnableThreshold) VOX = 1;
|
//if (vox_amp > VoxEnableThreshold) VOX = 1;
|
||||||
//else
|
//else
|
||||||
//if (voxamp<VoxDisableThreshold) (After Delay) VOX = 0;
|
//if (vox_amp < VoxDisableThreshold) (After Delay) VOX = 0;
|
||||||
|
|
||||||
const uint16_t REG_31_Value = BK4819_ReadRegister(0x31);
|
const uint16_t REG_31_Value = BK4819_ReadRegister(0x31);
|
||||||
|
|
||||||
|
if (VoxEnableThreshold > 2047)
|
||||||
|
VoxEnableThreshold = 2047;
|
||||||
|
if (VoxDisableThreshold > 2047)
|
||||||
|
VoxDisableThreshold = 2047;
|
||||||
|
|
||||||
// 0xA000 is undocumented?
|
// 0xA000 is undocumented?
|
||||||
BK4819_WriteRegister(0x46, 0xA000 | (VoxEnableThreshold & 0x07FF));
|
BK4819_WriteRegister(0x46, 0xA000 | VoxEnableThreshold);
|
||||||
|
|
||||||
// 0x1800 is undocumented?
|
// 0x1800 is undocumented?
|
||||||
BK4819_WriteRegister(0x79, 0x1800 | (VoxDisableThreshold & 0x07FF));
|
BK4819_WriteRegister(0x79, 0x1800 | VoxDisableThreshold);
|
||||||
|
|
||||||
// Bottom 12 bits are undocumented, 15:12 vox disable delay *128ms
|
// Bottom 12 bits are undocumented, 15:12 vox disable delay *128ms
|
||||||
BK4819_WriteRegister(0x7A, 0x289A); // vox disable delay = 128*5 = 640ms
|
BK4819_WriteRegister(0x7A, 0x289A); // vox disable delay = 128*5 = 640ms
|
||||||
|
|
||||||
// Enable VOX
|
// Enable VOX
|
||||||
BK4819_WriteRegister(0x31, REG_31_Value | (1u << 2)); // VOX Enable
|
BK4819_WriteRegister(0x31, REG_31_Value | (1u << 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void BK4819_set_TX_deviation(const bool narrow)
|
void BK4819_set_TX_deviation(const bool narrow)
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -69,7 +69,7 @@ void BOOT_ProcessMode(boot_mode_t Mode)
|
|||||||
g_eeprom.config.setting.dual_watch = DUAL_WATCH_OFF;
|
g_eeprom.config.setting.dual_watch = DUAL_WATCH_OFF;
|
||||||
g_eeprom.config.setting.battery_save_ratio = 0;
|
g_eeprom.config.setting.battery_save_ratio = 0;
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
g_eeprom.config.setting.vox_switch = false;
|
g_eeprom.config.setting.vox_enabled = false;
|
||||||
#endif
|
#endif
|
||||||
g_eeprom.config.setting.cross_vfo = CROSS_BAND_OFF;
|
g_eeprom.config.setting.cross_vfo = CROSS_BAND_OFF;
|
||||||
g_eeprom.config.setting.auto_key_lock = 0;
|
g_eeprom.config.setting.auto_key_lock = 0;
|
||||||
|
2
misc.c
2
misc.c
@ -99,8 +99,6 @@ bool g_monitor_enabled;
|
|||||||
bool g_has_aes_key;
|
bool g_has_aes_key;
|
||||||
uint32_t g_challenge[4];
|
uint32_t g_challenge[4];
|
||||||
|
|
||||||
uint16_t g_vox_threshold[2];
|
|
||||||
|
|
||||||
uint16_t g_eeprom_rssi_calib[7][4];
|
uint16_t g_eeprom_rssi_calib[7][4];
|
||||||
|
|
||||||
volatile uint16_t g_schedule_power_save_tick_10ms = battery_save_count_10ms;
|
volatile uint16_t g_schedule_power_save_tick_10ms = battery_save_count_10ms;
|
||||||
|
2
misc.h
2
misc.h
@ -296,8 +296,6 @@ extern scan_state_dir_t g_scan_state_dir; // the direction we're sc
|
|||||||
extern uint8_t g_rx_vfo_num;
|
extern uint8_t g_rx_vfo_num;
|
||||||
extern bool g_rx_vfo_is_active;
|
extern bool g_rx_vfo_is_active;
|
||||||
|
|
||||||
extern uint16_t g_vox_threshold[2];
|
|
||||||
|
|
||||||
extern uint16_t g_alarm_tone_counter_10ms;
|
extern uint16_t g_alarm_tone_counter_10ms;
|
||||||
extern uint16_t g_alarm_running_counter_10ms;
|
extern uint16_t g_alarm_running_counter_10ms;
|
||||||
extern uint8_t g_menu_list_count;
|
extern uint8_t g_menu_list_count;
|
||||||
|
35
radio.c
35
radio.c
@ -412,6 +412,35 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur
|
|||||||
p_vfo->freq_in_channel = SETTINGS_find_channel(frequency); // find channel that has this frequency
|
p_vfo->freq_in_channel = SETTINGS_find_channel(frequency); // find channel that has this frequency
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_VOX
|
||||||
|
void RADIO_enable_vox(unsigned int level)
|
||||||
|
{
|
||||||
|
uint16_t threshold_enable;
|
||||||
|
uint16_t threshold_disable;
|
||||||
|
|
||||||
|
if (level > (ARRAY_SIZE(g_eeprom.calib.vox[0].threshold) - 1))
|
||||||
|
level = ARRAY_SIZE(g_eeprom.calib.vox[0].threshold) - 1;
|
||||||
|
|
||||||
|
// my eeprom values ..
|
||||||
|
//
|
||||||
|
// vox threshold enable 30 50 70 90 110 130 150 170 200 230 FFFF FFFF
|
||||||
|
// vox threshold disable 20 40 60 80 100 120 140 160 190 220 FFFF FFFF
|
||||||
|
//
|
||||||
|
#ifdef ENABLE_VOX_MORE_SENSITIVE
|
||||||
|
// more sensitive
|
||||||
|
threshold_enable = g_eeprom.calib.vox[0].threshold[level] / 3;
|
||||||
|
threshold_disable = (threshold_enable > 13) ? threshold_enable - 10 : 3;
|
||||||
|
#else
|
||||||
|
threshold_enable = g_eeprom.calib.vox[0].threshold[level];
|
||||||
|
threshold_disable = g_eeprom.calib.vox[1].threshold[level];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
BK4819_EnableVox(threshold_enable, threshold_disable);
|
||||||
|
|
||||||
|
BK4819_WriteRegister(0x3F, BK4819_ReadRegister(0x3F) | BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *p_vfo)
|
void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *p_vfo)
|
||||||
{
|
{
|
||||||
// uint8_t tx_power[3];
|
// uint8_t tx_power[3];
|
||||||
@ -826,11 +855,11 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
|
|||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
!g_fm_radio_mode &&
|
!g_fm_radio_mode &&
|
||||||
#endif
|
#endif
|
||||||
g_eeprom.config.setting.vox_switch &&
|
g_eeprom.config.setting.vox_enabled &&
|
||||||
IS_NOT_NOAA_CHANNEL(g_current_vfo->channel_save) &&
|
IS_NOT_NOAA_CHANNEL(g_current_vfo->channel_save) &&
|
||||||
g_current_vfo->am_mode == 0)
|
g_current_vfo->am_mode == 0)
|
||||||
{
|
{
|
||||||
BK4819_EnableVox(g_vox_threshold[1], g_vox_threshold[0]);
|
RADIO_enable_vox(g_eeprom.config.setting.vox_level);
|
||||||
interrupt_mask |= BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST;
|
interrupt_mask |= BK4819_REG_3F_VOX_FOUND | BK4819_REG_3F_VOX_LOST;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1012,7 +1041,7 @@ void RADIO_set_vfo_state(vfo_state_t State)
|
|||||||
|
|
||||||
void RADIO_PrepareTX(void)
|
void RADIO_PrepareTX(void)
|
||||||
{
|
{
|
||||||
vfo_state_t State = VFO_STATE_NORMAL; // default to OK to TX
|
vfo_state_t State = VFO_STATE_NORMAL; // default to OK for TX
|
||||||
|
|
||||||
if (g_eeprom.config.setting.dual_watch != DUAL_WATCH_OFF)
|
if (g_eeprom.config.setting.dual_watch != DUAL_WATCH_OFF)
|
||||||
{ // dual-RX is enabled
|
{ // dual-RX is enabled
|
||||||
|
3
radio.h
3
radio.h
@ -142,6 +142,9 @@ bool RADIO_CheckValidChannel(uint16_t ChNum, bool bCheckScanList, uint8_t Ra
|
|||||||
uint8_t RADIO_FindNextChannel(uint8_t ChNum, scan_state_dir_t Direction, bool bCheckScanList, uint8_t RadioNum);
|
uint8_t RADIO_FindNextChannel(uint8_t ChNum, scan_state_dir_t Direction, bool bCheckScanList, uint8_t RadioNum);
|
||||||
void RADIO_InitInfo(vfo_info_t *p_vfo, const uint8_t ChannelSave, const uint32_t Frequency);
|
void RADIO_InitInfo(vfo_info_t *p_vfo, const uint8_t ChannelSave, const uint32_t Frequency);
|
||||||
void RADIO_configure_channel(const unsigned int VFO, const unsigned int configure);
|
void RADIO_configure_channel(const unsigned int VFO, const unsigned int configure);
|
||||||
|
#ifdef ENABLE_VOX
|
||||||
|
void RADIO_enable_vox(unsigned int level);
|
||||||
|
#endif
|
||||||
void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *p_vfo);
|
void RADIO_ConfigureSquelchAndOutputPower(vfo_info_t *p_vfo);
|
||||||
void RADIO_ApplyOffset(vfo_info_t *p_vfo, const bool set_pees);
|
void RADIO_ApplyOffset(vfo_info_t *p_vfo, const bool set_pees);
|
||||||
void RADIO_select_vfos(void);
|
void RADIO_select_vfos(void);
|
||||||
|
@ -76,7 +76,7 @@ void SETTINGS_read_eeprom(void)
|
|||||||
g_eeprom.config.setting.key_lock = (g_eeprom.config.setting.key_lock < 2) ? g_eeprom.config.setting.key_lock : 0;
|
g_eeprom.config.setting.key_lock = (g_eeprom.config.setting.key_lock < 2) ? g_eeprom.config.setting.key_lock : 0;
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
g_eeprom.config.setting.vox_switch = (g_eeprom.config.setting.vox_switch < 2) ? g_eeprom.config.setting.vox_switch : 0;
|
g_eeprom.config.setting.vox_enabled = (g_eeprom.config.setting.vox_enabled < 2) ? g_eeprom.config.setting.vox_enabled : 0;
|
||||||
g_eeprom.config.setting.vox_level = (g_eeprom.config.setting.vox_level < 10) ? g_eeprom.config.setting.vox_level : 1;
|
g_eeprom.config.setting.vox_level = (g_eeprom.config.setting.vox_level < 10) ? g_eeprom.config.setting.vox_level : 1;
|
||||||
#endif
|
#endif
|
||||||
g_eeprom.config.setting.mic_sensitivity = (g_eeprom.config.setting.mic_sensitivity < 5) ? g_eeprom.config.setting.mic_sensitivity : 4;
|
g_eeprom.config.setting.mic_sensitivity = (g_eeprom.config.setting.mic_sensitivity < 5) ? g_eeprom.config.setting.mic_sensitivity : 4;
|
||||||
@ -287,11 +287,6 @@ void SETTINGS_read_eeprom(void)
|
|||||||
}
|
}
|
||||||
g_eeprom.calib.battery[5] = 2300;
|
g_eeprom.calib.battery[5] = 2300;
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
|
||||||
g_vox_threshold[1] = g_eeprom.calib.vox[0].threshold[g_eeprom.config.setting.vox_level];
|
|
||||||
g_vox_threshold[0] = g_eeprom.calib.vox[1].threshold[g_eeprom.config.setting.vox_level];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//EEPROM_ReadBuffer(0x1F80 + g_eeprom.config.setting.mic_sensitivity, &Mic, 1);
|
//EEPROM_ReadBuffer(0x1F80 + g_eeprom.config.setting.mic_sensitivity, &Mic, 1);
|
||||||
//g_mic_sensitivity_tuning = (Mic < 32) ? Mic : 15;
|
//g_mic_sensitivity_tuning = (Mic < 32) ? Mic : 15;
|
||||||
g_mic_sensitivity_tuning = g_mic_gain_dB_2[g_eeprom.config.setting.mic_sensitivity];
|
g_mic_sensitivity_tuning = g_mic_gain_dB_2[g_eeprom.config.setting.mic_sensitivity];
|
||||||
@ -343,7 +338,7 @@ void SETTINGS_save(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ENABLE_VOX
|
#ifndef ENABLE_VOX
|
||||||
// g_eeprom.config.setting.vox_switch = 0;
|
// g_eeprom.config.setting.vox_enabled = 0;
|
||||||
// g_eeprom.config.setting.vox_level = 0;
|
// g_eeprom.config.setting.vox_level = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ typedef struct {
|
|||||||
uint8_t tx_timeout; //
|
uint8_t tx_timeout; //
|
||||||
uint8_t noaa_auto_scan; //
|
uint8_t noaa_auto_scan; //
|
||||||
uint8_t key_lock; //
|
uint8_t key_lock; //
|
||||||
uint8_t vox_switch; //
|
uint8_t vox_enabled; //
|
||||||
uint8_t vox_level; //
|
uint8_t vox_level; //
|
||||||
uint8_t mic_sensitivity; //
|
uint8_t mic_sensitivity; //
|
||||||
#ifdef ENABLE_CONTRAST
|
#ifdef ENABLE_CONTRAST
|
||||||
|
53
ui/status.c
53
ui/status.c
@ -36,7 +36,6 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
{
|
{
|
||||||
uint8_t *line = g_status_line;
|
uint8_t *line = g_status_line;
|
||||||
unsigned int x = 0;
|
unsigned int x = 0;
|
||||||
unsigned int x1 = 0;
|
|
||||||
|
|
||||||
g_update_status = false;
|
g_update_status = false;
|
||||||
|
|
||||||
@ -48,7 +47,6 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
if (g_current_function == FUNCTION_TRANSMIT)
|
if (g_current_function == FUNCTION_TRANSMIT)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_TX, sizeof(BITMAP_TX));
|
memcpy(line + x, BITMAP_TX, sizeof(BITMAP_TX));
|
||||||
x1 = x + sizeof(BITMAP_TX);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (g_current_function == FUNCTION_RECEIVE ||
|
if (g_current_function == FUNCTION_RECEIVE ||
|
||||||
@ -56,33 +54,27 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
g_monitor_enabled)
|
g_monitor_enabled)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_RX, sizeof(BITMAP_RX));
|
memcpy(line + x, BITMAP_RX, sizeof(BITMAP_RX));
|
||||||
x1 = x + sizeof(BITMAP_RX);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (g_current_function == FUNCTION_POWER_SAVE || test_display)
|
if (g_current_function == FUNCTION_POWER_SAVE || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_POWERSAVE, sizeof(BITMAP_POWERSAVE));
|
memcpy(line + x, BITMAP_POWERSAVE, sizeof(BITMAP_POWERSAVE));
|
||||||
x1 = x + sizeof(BITMAP_POWERSAVE);
|
|
||||||
}
|
}
|
||||||
x += sizeof(BITMAP_POWERSAVE);
|
x += sizeof(BITMAP_POWERSAVE) + 1;
|
||||||
x++;
|
|
||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
// NOAA scan indicator
|
// NOAA scan indicator
|
||||||
if (g_noaa_mode || test_display)
|
if (g_noaa_mode || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_NOAA, sizeof(BITMAP_NOAA));
|
memcpy(line + x, BITMAP_NOAA, sizeof(BITMAP_NOAA));
|
||||||
x1 = x + sizeof(BITMAP_NOAA);
|
x += sizeof(BITMAP_NOAA) + 1;
|
||||||
x += sizeof(BITMAP_NOAA);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_KILL_REVIVE
|
#ifdef ENABLE_KILL_REVIVE
|
||||||
if (g_eeprom.config.setting.radio_disabled)
|
if (g_eeprom.config.setting.radio_disabled)
|
||||||
{
|
{
|
||||||
memset(line + x, 0xFF, 10);
|
memset(line + x, 0xFF, 10);
|
||||||
x1 = x + 10;
|
|
||||||
x += 10;
|
x += 10;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -92,10 +84,8 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
if (g_fm_radio_mode || test_display)
|
if (g_fm_radio_mode || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_FM, sizeof(BITMAP_FM));
|
memcpy(line + x, BITMAP_FM, sizeof(BITMAP_FM));
|
||||||
x1 = x + sizeof(BITMAP_FM);
|
x += sizeof(BITMAP_FM) + 1;
|
||||||
x += sizeof(BITMAP_FM);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// SCAN indicator
|
// SCAN indicator
|
||||||
@ -119,21 +109,17 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
{ // frequency mode
|
{ // frequency mode
|
||||||
UI_PrintStringSmallBuffer("S", line + x);
|
UI_PrintStringSmallBuffer("S", line + x);
|
||||||
}
|
}
|
||||||
x1 = x + 7;
|
|
||||||
}
|
}
|
||||||
x += 7; // font character width
|
x += 7 + 1; // font character width + 1
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
// VOICE indicator
|
// VOICE indicator
|
||||||
if (g_eeprom.config.setting.voice_prompt != VOICE_PROMPT_OFF || test_display)
|
if (g_eeprom.config.setting.voice_prompt != VOICE_PROMPT_OFF || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_VOICE_PROMPT, sizeof(BITMAP_VOICE_PROMPT));
|
memcpy(line + x, BITMAP_VOICE_PROMPT, sizeof(BITMAP_VOICE_PROMPT));
|
||||||
x1 = x + sizeof(BITMAP_VOICE_PROMPT);
|
x += sizeof(BITMAP_VOICE_PROMPT) + 1;
|
||||||
x += sizeof(BITMAP_VOICE_PROMPT);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// DUAL-WATCH indicator
|
// DUAL-WATCH indicator
|
||||||
@ -152,38 +138,30 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_TDR_RUNNING, sizeof(BITMAP_TDR_RUNNING));
|
memcpy(line + x, BITMAP_TDR_RUNNING, sizeof(BITMAP_TDR_RUNNING));
|
||||||
}
|
}
|
||||||
x1 = x + sizeof(BITMAP_TDR_RUNNING);
|
x += sizeof(BITMAP_TDR_RUNNING) + 1;
|
||||||
x += sizeof(BITMAP_TDR_RUNNING);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
|
|
||||||
// monitor
|
// monitor
|
||||||
if (g_monitor_enabled)
|
if (g_monitor_enabled)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_MONITOR, sizeof(BITMAP_MONITOR));
|
memcpy(line + x, BITMAP_MONITOR, sizeof(BITMAP_MONITOR));
|
||||||
x1 = x + sizeof(BITMAP_MONITOR);
|
x += sizeof(BITMAP_MONITOR) + 1;
|
||||||
x += sizeof(BITMAP_MONITOR);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
|
|
||||||
// CROSS-VFO indicator
|
// CROSS-VFO indicator
|
||||||
if (g_eeprom.config.setting.cross_vfo != CROSS_BAND_OFF || test_display)
|
if (g_eeprom.config.setting.cross_vfo != CROSS_BAND_OFF || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_XB, sizeof(BITMAP_XB));
|
memcpy(line + x, BITMAP_XB, sizeof(BITMAP_XB));
|
||||||
x1 = x + sizeof(BITMAP_XB);
|
x += sizeof(BITMAP_XB) + 1;
|
||||||
x += sizeof(BITMAP_XB);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
// VOX indicator
|
// VOX indicator
|
||||||
if (g_eeprom.config.setting.vox_switch || test_display)
|
if (g_eeprom.config.setting.vox_enabled || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_VOX, sizeof(BITMAP_VOX));
|
memcpy(line + x, g_vox_noise_detected ? BITMAP_VOX : BITMAP_VOX_SMALL, sizeof(BITMAP_VOX));
|
||||||
x1 = x + sizeof(BITMAP_VOX);
|
x += sizeof(BITMAP_VOX) + 1;
|
||||||
x += sizeof(BITMAP_VOX);
|
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_KEYLOCK
|
#ifdef ENABLE_KEYLOCK
|
||||||
@ -191,9 +169,7 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
if (g_eeprom.config.setting.key_lock || test_display)
|
if (g_eeprom.config.setting.key_lock || test_display)
|
||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_KEYLOCK, sizeof(BITMAP_KEYLOCK));
|
memcpy(line + x, BITMAP_KEYLOCK, sizeof(BITMAP_KEYLOCK));
|
||||||
x += sizeof(BITMAP_KEYLOCK);
|
x += sizeof(BITMAP_KEYLOCK) + 1;
|
||||||
x1 = x;
|
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -201,7 +177,6 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
{
|
{
|
||||||
memcpy(line + x, BITMAP_F_KEY, sizeof(BITMAP_F_KEY));
|
memcpy(line + x, BITMAP_F_KEY, sizeof(BITMAP_F_KEY));
|
||||||
x += sizeof(BITMAP_F_KEY);
|
x += sizeof(BITMAP_F_KEY);
|
||||||
x1 = x;
|
|
||||||
}
|
}
|
||||||
x++;
|
x++;
|
||||||
|
|
||||||
@ -225,7 +200,7 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
const uint16_t voltage = (g_battery_voltage_average <= 999) ? g_battery_voltage_average : 999; // limit to 9.99V
|
const uint16_t voltage = (g_battery_voltage_average <= 999) ? g_battery_voltage_average : 999; // limit to 9.99V
|
||||||
sprintf(s, "%u.%02uV", voltage / 100, voltage % 100);
|
sprintf(s, "%u.%02uV", voltage / 100, voltage % 100);
|
||||||
space_needed = (7 * strlen(s));
|
space_needed = (7 * strlen(s));
|
||||||
if (x2 >= (x1 + space_needed))
|
if (x2 >= (x + space_needed))
|
||||||
UI_PrintStringSmallBuffer(s, line + x2 - space_needed);
|
UI_PrintStringSmallBuffer(s, line + x2 - space_needed);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -234,7 +209,7 @@ void UI_DisplayStatus(const bool test_display)
|
|||||||
{
|
{
|
||||||
sprintf(s, "%u%%", BATTERY_VoltsToPercent(g_battery_voltage_average));
|
sprintf(s, "%u%%", BATTERY_VoltsToPercent(g_battery_voltage_average));
|
||||||
space_needed = (7 * strlen(s));
|
space_needed = (7 * strlen(s));
|
||||||
if (x2 >= (x1 + space_needed))
|
if (x2 >= (x + space_needed))
|
||||||
UI_PrintStringSmallBuffer(s, line + x2 - space_needed);
|
UI_PrintStringSmallBuffer(s, line + x2 - space_needed);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user