mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 14:21:25 +03:00
Fix "TX BAR" and compander - hopefully
This commit is contained in:
parent
0974b2e0a6
commit
a89998c6ca
11
app/action.c
11
app/action.c
@ -212,10 +212,7 @@ void ACTION_Scan(bool bRestart)
|
|||||||
|
|
||||||
APP_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
g_request_display_screen = DISPLAY_MAIN;
|
||||||
g_another_voice_id = VOICE_ID_SCANNING_STOP;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,13 +256,7 @@ void ACTION_Scan(bool bRestart)
|
|||||||
else
|
else
|
||||||
{ // stop scanning
|
{ // stop scanning
|
||||||
g_monitor_enabled = false;
|
g_monitor_enabled = false;
|
||||||
|
|
||||||
APP_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
|
||||||
g_another_voice_id = VOICE_ID_SCANNING_STOP;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_request_display_screen = DISPLAY_MAIN;
|
g_request_display_screen = DISPLAY_MAIN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ void AIRCOPY_init(void)
|
|||||||
g_aircopy_state = AIRCOPY_READY;
|
g_aircopy_state = AIRCOPY_READY;
|
||||||
|
|
||||||
g_fsk_write_index = 0;
|
g_fsk_write_index = 0;
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); // LED off
|
||||||
BK4819_start_fsk_rx(AIRCOPY_DATA_PACKET_SIZE);
|
BK4819_start_fsk_rx(AIRCOPY_DATA_PACKET_SIZE);
|
||||||
|
|
||||||
GUI_SelectNextDisplay(DISPLAY_AIRCOPY);
|
GUI_SelectNextDisplay(DISPLAY_AIRCOPY);
|
||||||
@ -204,8 +204,8 @@ void AIRCOPY_stop_fsk_tx(void)
|
|||||||
|
|
||||||
// disable the TX
|
// disable the TX
|
||||||
BK4819_SetupPowerAmplifier(0, 0); //
|
BK4819_SetupPowerAmplifier(0, 0); //
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_UNKNOWN, false); // ???
|
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_PA_ENABLE, false); // PA off
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_RED, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_RED, false); // LED off
|
||||||
|
|
||||||
BK4819_reset_fsk();
|
BK4819_reset_fsk();
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ void AIRCOPY_process_fsk_rx_10ms(void)
|
|||||||
if ((status & (1u << 12)) == 0)
|
if ((status & (1u << 12)) == 0)
|
||||||
{ // FSK RX is disabled, enable it
|
{ // FSK RX is disabled, enable it
|
||||||
g_fsk_write_index = 0;
|
g_fsk_write_index = 0;
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); // LED off
|
||||||
BK4819_start_fsk_rx((g_aircopy_state == AIRCOPY_TX) ? AIRCOPY_REQ_PACKET_SIZE : AIRCOPY_DATA_PACKET_SIZE);
|
BK4819_start_fsk_rx((g_aircopy_state == AIRCOPY_TX) ? AIRCOPY_REQ_PACKET_SIZE : AIRCOPY_DATA_PACKET_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,15 +356,15 @@ void AIRCOPY_process_fsk_rx_10ms(void)
|
|||||||
interrupt_bits = BK4819_ReadRegister(BK4819_REG_02);
|
interrupt_bits = BK4819_ReadRegister(BK4819_REG_02);
|
||||||
|
|
||||||
if (interrupt_bits & BK4819_REG_02_FSK_RX_SYNC)
|
if (interrupt_bits & BK4819_REG_02_FSK_RX_SYNC)
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, true); // LED on
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, true); // LED on
|
||||||
|
|
||||||
if (interrupt_bits & BK4819_REG_02_FSK_RX_FINISHED)
|
if (interrupt_bits & BK4819_REG_02_FSK_RX_FINISHED)
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); // LED off
|
||||||
|
|
||||||
if ((interrupt_bits & BK4819_REG_02_FSK_FIFO_ALMOST_FULL) == 0)
|
if ((interrupt_bits & BK4819_REG_02_FSK_FIFO_ALMOST_FULL) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, true); // LED on
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, true); // LED on
|
||||||
|
|
||||||
// fetch RX'ed data
|
// fetch RX'ed data
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
@ -406,7 +406,7 @@ void AIRCOPY_process_fsk_rx_10ms(void)
|
|||||||
return; // not yet a complete packet
|
return; // not yet a complete packet
|
||||||
|
|
||||||
// restart the RX
|
// restart the RX
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); // LED off
|
||||||
BK4819_start_fsk_rx((g_aircopy_state == AIRCOPY_TX) ? AIRCOPY_REQ_PACKET_SIZE : AIRCOPY_DATA_PACKET_SIZE);
|
BK4819_start_fsk_rx((g_aircopy_state == AIRCOPY_TX) ? AIRCOPY_REQ_PACKET_SIZE : AIRCOPY_DATA_PACKET_SIZE);
|
||||||
|
|
||||||
g_update_display = true;
|
g_update_display = true;
|
||||||
@ -678,7 +678,7 @@ static void AIRCOPY_Key_EXIT(bool key_pressed, bool key_held)
|
|||||||
if (!key_held)
|
if (!key_held)
|
||||||
{
|
{
|
||||||
// turn the green LED off
|
// turn the green LED off
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false);
|
||||||
|
|
||||||
g_input_box_index = 0;
|
g_input_box_index = 0;
|
||||||
g_aircopy_state = AIRCOPY_READY;
|
g_aircopy_state = AIRCOPY_READY;
|
||||||
@ -713,7 +713,7 @@ static void AIRCOPY_Key_EXIT(bool key_pressed, bool key_held)
|
|||||||
{ // enter RX mode
|
{ // enter RX mode
|
||||||
|
|
||||||
// turn the green LED off
|
// turn the green LED off
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false);
|
||||||
|
|
||||||
g_input_box_index = 0;
|
g_input_box_index = 0;
|
||||||
|
|
||||||
|
15
app/app.c
15
app/app.c
@ -660,6 +660,10 @@ void APP_stop_scan(void)
|
|||||||
SETTINGS_SaveVfoIndices();
|
SETTINGS_SaveVfoIndices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_VOICE
|
||||||
|
g_another_voice_id = VOICE_ID_SCANNING_STOP;
|
||||||
|
#endif
|
||||||
|
|
||||||
g_update_status = true;
|
g_update_status = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -690,6 +694,7 @@ static void APP_next_freq(void)
|
|||||||
{ // don't need to go through all the other stuff .. lets speed things up !!
|
{ // don't need to go through all the other stuff .. lets speed things up !!
|
||||||
|
|
||||||
BK4819_set_rf_frequency(frequency, true);
|
BK4819_set_rf_frequency(frequency, true);
|
||||||
|
BK4819_set_rf_filter_path(frequency);
|
||||||
|
|
||||||
#ifdef ENABLE_FASTER_CHANNEL_SCAN
|
#ifdef ENABLE_FASTER_CHANNEL_SCAN
|
||||||
g_scan_pause_10ms = 10; // 100ms
|
g_scan_pause_10ms = 10; // 100ms
|
||||||
@ -951,13 +956,13 @@ void APP_process_radio_interrupts(void)
|
|||||||
if (interrupt_bits & BK4819_REG_02_SQUELCH_LOST)
|
if (interrupt_bits & BK4819_REG_02_SQUELCH_LOST)
|
||||||
{
|
{
|
||||||
g_squelch_lost = true;
|
g_squelch_lost = true;
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, true); // LED on
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, true); // LED on
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interrupt_bits & BK4819_REG_02_SQUELCH_FOUND)
|
if (interrupt_bits & BK4819_REG_02_SQUELCH_FOUND)
|
||||||
{
|
{
|
||||||
g_squelch_lost = false;
|
g_squelch_lost = false;
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); // LED off
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1305,7 +1310,7 @@ void APP_process(void)
|
|||||||
|
|
||||||
BK4819_DisableVox();
|
BK4819_DisableVox();
|
||||||
BK4819_Sleep();
|
BK4819_Sleep();
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_UNKNOWN, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false);
|
||||||
|
|
||||||
// Authentic device checked removed
|
// Authentic device checked removed
|
||||||
|
|
||||||
@ -1686,9 +1691,9 @@ void APP_time_slice_10ms(void)
|
|||||||
|
|
||||||
RADIO_EnableCxCSS();
|
RADIO_EnableCxCSS();
|
||||||
BK4819_SetupPowerAmplifier(0, 0);
|
BK4819_SetupPowerAmplifier(0, 0);
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_UNKNOWN, false); // ???
|
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_PA_ENABLE, false); // PA off
|
||||||
BK4819_Enable_AfDac_DiscMode_TxDsp();
|
BK4819_Enable_AfDac_DiscMode_TxDsp();
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_RED, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_RED, false); // LED off
|
||||||
|
|
||||||
GUI_DisplayScreen();
|
GUI_DisplayScreen();
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ void GENERIC_Key_PTT(bool key_pressed)
|
|||||||
// UART_printf("gene key 1 %u\r\n", key_pressed);
|
// UART_printf("gene key 1 %u\r\n", key_pressed);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (g_scan_state_dir != SCAN_STATE_DIR_OFF || // frequency/channel scanning
|
if (g_scan_state_dir != SCAN_STATE_DIR_OFF || // freq/chan scanning
|
||||||
g_screen_to_display == DISPLAY_SEARCH || // CTCSS/CDCSS scanning
|
g_screen_to_display == DISPLAY_SEARCH || // CTCSS/CDCSS scanning
|
||||||
g_css_scan_mode != CSS_SCAN_MODE_OFF) // " "
|
g_css_scan_mode != CSS_SCAN_MODE_OFF) // " "
|
||||||
{ // we're scanning .. stop
|
{ // we're scanning .. stop
|
||||||
@ -152,8 +152,9 @@ void GENERIC_Key_PTT(bool key_pressed)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
|
if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
|
||||||
{ // frequency/channel scanning . .stop
|
{ // freq/chan scanning . .stop
|
||||||
APP_stop_scan();
|
APP_stop_scan();
|
||||||
|
g_request_display_screen = DISPLAY_MAIN;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (g_css_scan_mode != CSS_SCAN_MODE_OFF)
|
if (g_css_scan_mode != CSS_SCAN_MODE_OFF)
|
||||||
|
47
app/main.c
47
app/main.c
@ -39,21 +39,6 @@
|
|||||||
// #include "app/spectrum.h"
|
// #include "app/spectrum.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void MAIN_stop_scan(void)
|
|
||||||
{
|
|
||||||
if (g_scan_state_dir == SCAN_STATE_DIR_OFF)
|
|
||||||
return;
|
|
||||||
|
|
||||||
APP_stop_scan();
|
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
|
||||||
g_another_voice_id = VOICE_ID_SCANNING_STOP;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_request_display_screen = DISPLAY_MAIN;
|
|
||||||
g_update_status = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void toggle_chan_scanlist(void)
|
void toggle_chan_scanlist(void)
|
||||||
{ // toggle the selected channels scanlist setting
|
{ // toggle the selected channels scanlist setting
|
||||||
|
|
||||||
@ -70,7 +55,7 @@ void toggle_chan_scanlist(void)
|
|||||||
g_scan_pause_10ms > 0 &&
|
g_scan_pause_10ms > 0 &&
|
||||||
g_scan_pause_10ms <= (200 / 10) &&
|
g_scan_pause_10ms <= (200 / 10) &&
|
||||||
!g_scan_pause_mode)
|
!g_scan_pause_mode)
|
||||||
{
|
{ // scanning isn't paused
|
||||||
g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -96,7 +81,7 @@ void toggle_chan_scanlist(void)
|
|||||||
g_flag_reset_vfos = true;
|
g_flag_reset_vfos = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void processFKeyFunction(const key_code_t Key)
|
void processFKeyFunction(const key_code_t Key)
|
||||||
{
|
{
|
||||||
uint8_t Band;
|
uint8_t Band;
|
||||||
uint8_t Vfo = g_eeprom.tx_vfo;
|
uint8_t Vfo = g_eeprom.tx_vfo;
|
||||||
@ -112,7 +97,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
case KEY_0: // FM
|
case KEY_0: // FM
|
||||||
|
|
||||||
if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
|
if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
ACTION_FM();
|
ACTION_FM();
|
||||||
@ -134,7 +119,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
Band = g_tx_vfo->band + 1;
|
Band = g_tx_vfo->band + 1;
|
||||||
if (g_setting_350_enable || Band != BAND5_350MHz)
|
if (g_setting_350_enable || Band != BAND5_350MHz)
|
||||||
@ -157,7 +142,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
|
|
||||||
case KEY_2: // A/B
|
case KEY_2: // A/B
|
||||||
|
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
if (g_eeprom.cross_vfo_rx_tx == CROSS_BAND_CHAN_A)
|
if (g_eeprom.cross_vfo_rx_tx == CROSS_BAND_CHAN_A)
|
||||||
g_eeprom.cross_vfo_rx_tx = CROSS_BAND_CHAN_B;
|
g_eeprom.cross_vfo_rx_tx = CROSS_BAND_CHAN_B;
|
||||||
@ -181,7 +166,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
|
|
||||||
case KEY_3: // VFO/MR
|
case KEY_3: // VFO/MR
|
||||||
|
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
if (g_eeprom.vfo_open && IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save))
|
if (g_eeprom.vfo_open && IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save))
|
||||||
{
|
{
|
||||||
@ -223,7 +208,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
|
|
||||||
case KEY_4: // FC
|
case KEY_4: // FC
|
||||||
|
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
g_search_flag_start_scan = true;
|
g_search_flag_start_scan = true;
|
||||||
g_search_single_frequency = false;
|
g_search_single_frequency = false;
|
||||||
@ -235,7 +220,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
|
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
if (IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save))
|
if (IS_NOT_NOAA_CHANNEL(g_tx_vfo->channel_save))
|
||||||
{
|
{
|
||||||
@ -274,7 +259,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
case KEY_7: // VOX
|
case KEY_7: // VOX
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
ACTION_Vox();
|
ACTION_Vox();
|
||||||
#else
|
#else
|
||||||
@ -306,7 +291,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
|
|
||||||
// swap to the CALL channel
|
// swap to the CALL channel
|
||||||
|
|
||||||
MAIN_stop_scan();
|
APP_stop_scan();
|
||||||
|
|
||||||
g_eeprom.user_channel[Vfo] = g_eeprom.chan_1_call;
|
g_eeprom.user_channel[Vfo] = g_eeprom.chan_1_call;
|
||||||
g_eeprom.screen_channel[Vfo] = g_eeprom.chan_1_call;
|
g_eeprom.screen_channel[Vfo] = g_eeprom.chan_1_call;
|
||||||
@ -328,7 +313,7 @@ static void processFKeyFunction(const key_code_t Key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held)
|
void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held)
|
||||||
{
|
{
|
||||||
g_key_input_count_down = key_input_timeout_500ms;
|
g_key_input_count_down = key_input_timeout_500ms;
|
||||||
|
|
||||||
@ -532,7 +517,7 @@ static void MAIN_Key_DIGITS(key_code_t Key, bool key_pressed, bool key_held)
|
|||||||
g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_EXIT(bool key_pressed, bool key_held)
|
void MAIN_Key_EXIT(bool key_pressed, bool key_held)
|
||||||
{
|
{
|
||||||
if (!key_held && key_pressed)
|
if (!key_held && key_pressed)
|
||||||
{ // exit key pressed
|
{ // exit key pressed
|
||||||
@ -598,7 +583,7 @@ static void MAIN_Key_EXIT(bool key_pressed, bool key_held)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_MENU(const bool key_pressed, const bool key_held)
|
void MAIN_Key_MENU(const bool key_pressed, const bool key_held)
|
||||||
{
|
{
|
||||||
if (key_pressed && !key_held)
|
if (key_pressed && !key_held)
|
||||||
// menu key pressed
|
// menu key pressed
|
||||||
@ -696,7 +681,7 @@ static void MAIN_Key_MENU(const bool key_pressed, const bool key_held)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_STAR(bool key_pressed, bool key_held)
|
void MAIN_Key_STAR(bool key_pressed, bool key_held)
|
||||||
{
|
{
|
||||||
if (g_input_box_index > 0)
|
if (g_input_box_index > 0)
|
||||||
{ // entering a channel, frequency or DTMF string
|
{ // entering a channel, frequency or DTMF string
|
||||||
@ -770,7 +755,7 @@ static void MAIN_Key_STAR(bool key_pressed, bool key_held)
|
|||||||
g_update_status = true;
|
g_update_status = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t Direction)
|
void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t Direction)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS
|
#ifdef ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS
|
||||||
static bool monitor_was_enabled = false;
|
static bool monitor_was_enabled = false;
|
||||||
@ -875,7 +860,7 @@ static void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t D
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
BK4819_set_rf_frequency(frequency, true);
|
BK4819_set_rf_frequency(frequency, true);
|
||||||
//BK4819_PickRXFilterPathBasedOnFrequency(frequency);
|
BK4819_set_rf_filter_path(frequency);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
26
app/menu.c
26
app/menu.c
@ -237,10 +237,10 @@ int MENU_GetLimits(uint8_t Cursor, int32_t *pMin, int32_t *pMax)
|
|||||||
case MENU_AM_FIX:
|
case MENU_AM_FIX:
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
case MENU_MIC_BAR:
|
case MENU_TX_BAR:
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_RSSI_BAR
|
#ifdef ENABLE_RSSI_BAR
|
||||||
case MENU_RSSI_BAR:
|
case MENU_RX_BAR:
|
||||||
#endif
|
#endif
|
||||||
case MENU_BCL:
|
case MENU_BCL:
|
||||||
case MENU_BEEP:
|
case MENU_BEEP:
|
||||||
@ -637,23 +637,25 @@ void MENU_AcceptSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
case MENU_MIC_BAR:
|
case MENU_TX_BAR:
|
||||||
g_setting_mic_bar = g_sub_menu_selection;
|
g_setting_mic_bar = g_sub_menu_selection;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_RSSI_BAR
|
#ifdef ENABLE_RSSI_BAR
|
||||||
case MENU_RSSI_BAR:
|
case MENU_RX_BAR:
|
||||||
g_setting_rssi_bar = g_sub_menu_selection;
|
g_setting_rssi_bar = g_sub_menu_selection;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_COMPAND:
|
case MENU_COMPAND:
|
||||||
g_tx_vfo->compander = g_sub_menu_selection;
|
g_tx_vfo->compand = g_sub_menu_selection;
|
||||||
SETTINGS_UpdateChannel(g_tx_vfo->channel_save, g_tx_vfo, true);
|
#if 1
|
||||||
g_vfo_configure_mode = VFO_CONFIGURE;
|
g_request_save_channel = 1;
|
||||||
g_flag_reset_vfos = true;
|
#else
|
||||||
// g_request_save_channel = 1;
|
SETTINGS_SaveChannel(g_sub_menu_selection, g_eeprom.tx_vfo, g_tx_vfo, 3);
|
||||||
|
g_flag_reconfigure_vfos = true;
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case MENU_1_CALL:
|
case MENU_1_CALL:
|
||||||
@ -1095,19 +1097,19 @@ void MENU_ShowCurrentSetting(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
case MENU_MIC_BAR:
|
case MENU_TX_BAR:
|
||||||
g_sub_menu_selection = g_setting_mic_bar;
|
g_sub_menu_selection = g_setting_mic_bar;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_RSSI_BAR
|
#ifdef ENABLE_RSSI_BAR
|
||||||
case MENU_RSSI_BAR:
|
case MENU_RX_BAR:
|
||||||
g_sub_menu_selection = g_setting_rssi_bar;
|
g_sub_menu_selection = g_setting_rssi_bar;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case MENU_COMPAND:
|
case MENU_COMPAND:
|
||||||
g_sub_menu_selection = g_tx_vfo->compander;
|
g_sub_menu_selection = g_tx_vfo->compand;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case MENU_1_CALL:
|
case MENU_1_CALL:
|
||||||
|
11
app/search.c
11
app/search.c
@ -498,7 +498,8 @@ void SEARCH_Start(void)
|
|||||||
g_search_frequency = g_rx_vfo->p_rx->frequency;
|
g_search_frequency = g_rx_vfo->p_rx->frequency;
|
||||||
g_search_step_setting = g_rx_vfo->step_setting;
|
g_search_step_setting = g_rx_vfo->step_setting;
|
||||||
|
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(g_search_frequency);
|
BK4819_set_rf_filter_path(g_search_frequency);
|
||||||
|
|
||||||
BK4819_SetScanFrequency(g_search_frequency);
|
BK4819_SetScanFrequency(g_search_frequency);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -506,7 +507,13 @@ void SEARCH_Start(void)
|
|||||||
g_search_css_state = SEARCH_CSS_STATE_OFF;
|
g_search_css_state = SEARCH_CSS_STATE_OFF;
|
||||||
g_search_frequency = 0xFFFFFFFF;
|
g_search_frequency = 0xFFFFFFFF;
|
||||||
|
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(0xFFFFFFFF);
|
#if 1
|
||||||
|
// this is why it needs such a strong signal
|
||||||
|
BK4819_set_rf_filter_path(0xFFFFFFFF); // disable the LNA filter paths
|
||||||
|
#else
|
||||||
|
BK4819_set_rf_filter_path(g_rx_vfo->p_rx->frequency); // lets have a play ;)
|
||||||
|
#endif
|
||||||
|
|
||||||
BK4819_EnableFrequencyScan();
|
BK4819_EnableFrequencyScan();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ static void SetF(uint32_t f) {
|
|||||||
fMeasure = f;
|
fMeasure = f;
|
||||||
|
|
||||||
BK4819_set_rf_frequency(fMeasure);
|
BK4819_set_rf_frequency(fMeasure);
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(fMeasure);
|
BK4819_set_rf_filter_path(fMeasure);
|
||||||
uint16_t reg = BK4819_ReadRegister(BK4819_REG_30);
|
uint16_t reg = BK4819_ReadRegister(BK4819_REG_30);
|
||||||
BK4819_WriteRegister(BK4819_REG_30, 0);
|
BK4819_WriteRegister(BK4819_REG_30, 0);
|
||||||
BK4819_WriteRegister(BK4819_REG_30, reg);
|
BK4819_WriteRegister(BK4819_REG_30, reg);
|
||||||
@ -212,7 +212,7 @@ static void SetF(uint32_t f) {
|
|||||||
static void SetTxF(uint32_t f) {
|
static void SetTxF(uint32_t f) {
|
||||||
fTx = f;
|
fTx = f;
|
||||||
BK4819_set_rf_frequency(f);
|
BK4819_set_rf_frequency(f);
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(f);
|
BK4819_set_rf_filter_path(f);
|
||||||
uint16_t reg = BK4819_ReadRegister(BK4819_REG_30);
|
uint16_t reg = BK4819_ReadRegister(BK4819_REG_30);
|
||||||
BK4819_WriteRegister(BK4819_REG_30, 0);
|
BK4819_WriteRegister(BK4819_REG_30, 0);
|
||||||
BK4819_WriteRegister(BK4819_REG_30, reg);
|
BK4819_WriteRegister(BK4819_REG_30, reg);
|
||||||
@ -364,7 +364,7 @@ static void ToggleRX(bool on) {
|
|||||||
ToggleTX(false);
|
ToggleTX(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, on);
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, on);
|
||||||
BK4819_RX_TurnOn();
|
BK4819_RX_TurnOn();
|
||||||
|
|
||||||
ToggleAudio(on);
|
ToggleAudio(on);
|
||||||
@ -399,7 +399,7 @@ static void ToggleTX(bool on) {
|
|||||||
ToggleRX(false);
|
ToggleRX(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_RED, on);
|
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_RED, on);
|
||||||
|
|
||||||
if (on) {
|
if (on) {
|
||||||
ToggleAudio(false);
|
ToggleAudio(false);
|
||||||
@ -417,7 +417,9 @@ static void ToggleTX(bool on) {
|
|||||||
|
|
||||||
BK4819_SetupPowerAmplifier(gCurrentVfo->TXP_CalculatedSetting,
|
BK4819_SetupPowerAmplifier(gCurrentVfo->TXP_CalculatedSetting,
|
||||||
gCurrentVfo->p_tx->Frequency);
|
gCurrentVfo->p_tx->Frequency);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
RADIO_SendEndOfTransmission();
|
RADIO_SendEndOfTransmission();
|
||||||
RADIO_EnableCxCSS();
|
RADIO_EnableCxCSS();
|
||||||
|
|
||||||
@ -434,8 +436,9 @@ static void ToggleTX(bool on) {
|
|||||||
|
|
||||||
SetF(fMeasure);
|
SetF(fMeasure);
|
||||||
}
|
}
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_UNKNOWN, !on);
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_UNKNOWN, on);
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, !on);
|
||||||
|
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_PA_ENABLE, on);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan info
|
// Scan info
|
||||||
|
@ -94,13 +94,12 @@ enum bk4819_register_e {
|
|||||||
typedef enum bk4819_register_e bk4819_register_t;
|
typedef enum bk4819_register_e bk4819_register_t;
|
||||||
|
|
||||||
enum bk4819_gpio_pin_e {
|
enum bk4819_gpio_pin_e {
|
||||||
BK4819_GPIO6_PIN2_UNKNOWN = 0, // please let us know if you know what this pin does
|
BK4819_GPIO0_PIN28_RX_ENABLE = 0,
|
||||||
BK4819_GPIO5_PIN1_UNKNOWN = 1, // " "
|
BK4819_GPIO1_PIN29_PA_ENABLE = 1,
|
||||||
BK4819_GPIO4_PIN32_UNUSED = 2,
|
BK4819_GPIO3_PIN31_UHF_LNA = 3,
|
||||||
BK4819_GPIO3_PIN31_UHF = 3,
|
BK4819_GPIO4_PIN32_VHF_LNA = 4,
|
||||||
BK4819_GPIO2_PIN30_VHF = 4,
|
BK4819_GPIO5_PIN1_RED = 5,
|
||||||
BK4819_GPIO1_PIN29_RED = 5,
|
BK4819_GPIO6_PIN2_GREEN = 6
|
||||||
BK4819_GPIO0_PIN28_GREEN = 6
|
|
||||||
};
|
};
|
||||||
typedef enum bk4819_gpio_pin_e bk4819_gpio_pin_t;
|
typedef enum bk4819_gpio_pin_e bk4819_gpio_pin_t;
|
||||||
|
|
||||||
|
@ -886,23 +886,23 @@ void BK4819_RX_TurnOn(void)
|
|||||||
BK4819_WriteRegister(BK4819_REG_30, 0xbff1); // 1 0 1111 1 1 1111 0 0 0 1
|
BK4819_WriteRegister(BK4819_REG_30, 0xbff1); // 1 0 1111 1 1 1111 0 0 0 1
|
||||||
}
|
}
|
||||||
|
|
||||||
void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency)
|
void BK4819_set_rf_filter_path(uint32_t Frequency)
|
||||||
{
|
{
|
||||||
if (Frequency < 28000000)
|
if (Frequency < 28000000)
|
||||||
{ // VHF
|
{ // VHF
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO2_PIN30_VHF, true);
|
BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, true);
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (Frequency == 0xFFFFFFFF)
|
if (Frequency == 0xFFFFFFFF)
|
||||||
{ // OFF
|
{ // OFF
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO2_PIN30_VHF, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, false);
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // UHF
|
{ // UHF
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO2_PIN30_VHF, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO4_PIN32_VHF_LNA, false);
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF, true);
|
BK4819_set_GPIO_pin(BK4819_GPIO3_PIN31_UHF_LNA, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1226,7 +1226,7 @@ void BK4819_Conditional_RX_TurnOn_and_GPIO6_Enable(void)
|
|||||||
{
|
{
|
||||||
if (g_rx_idle_mode)
|
if (g_rx_idle_mode)
|
||||||
{
|
{
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_UNKNOWN, true);
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, true);
|
||||||
BK4819_RX_TurnOn();
|
BK4819_RX_TurnOn();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ void BK4819_SetupSquelch(
|
|||||||
|
|
||||||
void BK4819_SetAF(BK4819_af_type_t AF);
|
void BK4819_SetAF(BK4819_af_type_t AF);
|
||||||
void BK4819_RX_TurnOn(void);
|
void BK4819_RX_TurnOn(void);
|
||||||
void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency);
|
void BK4819_set_rf_filter_path(uint32_t Frequency);
|
||||||
void BK4819_DisableScramble(void);
|
void BK4819_DisableScramble(void);
|
||||||
void BK4819_EnableScramble(uint8_t Type);
|
void BK4819_EnableScramble(uint8_t Type);
|
||||||
|
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -165,7 +165,7 @@ void FUNCTION_Select(function_type_t Function)
|
|||||||
BK4819_DisableVox();
|
BK4819_DisableVox();
|
||||||
BK4819_Sleep();
|
BK4819_Sleep();
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_UNKNOWN, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false);
|
||||||
|
|
||||||
if (g_screen_to_display != DISPLAY_MENU) // 1of11 .. don't close the menu
|
if (g_screen_to_display != DISPLAY_MENU) // 1of11 .. don't close the menu
|
||||||
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
GUI_SelectNextDisplay(DISPLAY_MAIN);
|
||||||
|
32
radio.c
32
radio.c
@ -131,7 +131,7 @@ void RADIO_InitInfo(vfo_info_t *pInfo, const uint8_t ChannelSave, const uint32_t
|
|||||||
pInfo->freq_config_tx.frequency = Frequency;
|
pInfo->freq_config_tx.frequency = Frequency;
|
||||||
pInfo->p_rx = &pInfo->freq_config_rx;
|
pInfo->p_rx = &pInfo->freq_config_rx;
|
||||||
pInfo->p_tx = &pInfo->freq_config_tx;
|
pInfo->p_tx = &pInfo->freq_config_tx;
|
||||||
pInfo->compander = 0; // off
|
pInfo->compand = 0; // off
|
||||||
|
|
||||||
if (ChannelSave == (FREQ_CHANNEL_FIRST + BAND2_108MHz))
|
if (ChannelSave == (FREQ_CHANNEL_FIRST + BAND2_108MHz))
|
||||||
pInfo->am_mode = 1;
|
pInfo->am_mode = 1;
|
||||||
@ -320,6 +320,7 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur
|
|||||||
g_eeprom.vfo_info[VFO].channel_bandwidth = BK4819_FILTER_BW_WIDE;
|
g_eeprom.vfo_info[VFO].channel_bandwidth = BK4819_FILTER_BW_WIDE;
|
||||||
g_eeprom.vfo_info[VFO].output_power = OUTPUT_POWER_LOW;
|
g_eeprom.vfo_info[VFO].output_power = OUTPUT_POWER_LOW;
|
||||||
g_eeprom.vfo_info[VFO].busy_channel_lock = false;
|
g_eeprom.vfo_info[VFO].busy_channel_lock = false;
|
||||||
|
g_eeprom.vfo_info[VFO].compand = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -328,6 +329,7 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur
|
|||||||
g_eeprom.vfo_info[VFO].channel_bandwidth = ((d4 >> 1) & 1u) ? true : false;
|
g_eeprom.vfo_info[VFO].channel_bandwidth = ((d4 >> 1) & 1u) ? true : false;
|
||||||
g_eeprom.vfo_info[VFO].output_power = (d4 >> 2) & 3u;
|
g_eeprom.vfo_info[VFO].output_power = (d4 >> 2) & 3u;
|
||||||
g_eeprom.vfo_info[VFO].busy_channel_lock = ((d4 >> 4) & 1u) ? true : false;
|
g_eeprom.vfo_info[VFO].busy_channel_lock = ((d4 >> 4) & 1u) ? true : false;
|
||||||
|
g_eeprom.vfo_info[VFO].compand = (d4 >> 6) & 3u;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Data[5] == 0xFF)
|
if (Data[5] == 0xFF)
|
||||||
@ -419,8 +421,6 @@ void RADIO_configure_channel(const unsigned int VFO, const unsigned int configur
|
|||||||
g_eeprom.vfo_info[VFO].freq_config_tx.code_type = CODE_TYPE_NONE;
|
g_eeprom.vfo_info[VFO].freq_config_tx.code_type = CODE_TYPE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_eeprom.vfo_info[VFO].compander = (Attributes & USER_CH_COMPAND) >> 4;
|
|
||||||
|
|
||||||
RADIO_ConfigureSquelchAndOutputPower(pRadio);
|
RADIO_ConfigureSquelchAndOutputPower(pRadio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,7 +632,7 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
|
|||||||
|
|
||||||
g_enable_speaker = false;
|
g_enable_speaker = false;
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_GREEN, false);
|
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false);
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough="
|
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough="
|
||||||
@ -654,9 +654,9 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
|
|||||||
|
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_RED, false); // LED off
|
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_RED, false); // LED off
|
||||||
BK4819_SetupPowerAmplifier(0, 0);
|
BK4819_SetupPowerAmplifier(0, 0);
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_UNKNOWN, false); // ???
|
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_PA_ENABLE, false); // PA off
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{ // wait for the interrupt to clear ?
|
{ // wait for the interrupt to clear ?
|
||||||
@ -678,17 +678,16 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
Frequency = g_rx_vfo->p_rx->frequency;
|
Frequency = g_rx_vfo->p_rx->frequency;
|
||||||
|
|
||||||
BK4819_set_rf_frequency(Frequency, false);
|
BK4819_set_rf_frequency(Frequency, false);
|
||||||
|
BK4819_set_rf_filter_path(Frequency);
|
||||||
|
|
||||||
BK4819_SetupSquelch(
|
BK4819_SetupSquelch(
|
||||||
g_rx_vfo->squelch_open_rssi_thresh, g_rx_vfo->squelch_close_rssi_thresh,
|
g_rx_vfo->squelch_open_rssi_thresh, g_rx_vfo->squelch_close_rssi_thresh,
|
||||||
g_rx_vfo->squelch_open_noise_thresh, g_rx_vfo->squelch_close_noise_thresh,
|
g_rx_vfo->squelch_open_noise_thresh, g_rx_vfo->squelch_close_noise_thresh,
|
||||||
g_rx_vfo->squelch_close_glitch_thresh, g_rx_vfo->squelch_open_glitch_thresh);
|
g_rx_vfo->squelch_close_glitch_thresh, g_rx_vfo->squelch_open_glitch_thresh);
|
||||||
|
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(Frequency);
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, true);
|
||||||
|
|
||||||
// what does this in do ?
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_UNKNOWN, true);
|
|
||||||
|
|
||||||
// AF RX Gain and DAC
|
// AF RX Gain and DAC
|
||||||
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8); // 1011 00 111010 1000
|
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8); // 1011 00 111010 1000
|
||||||
@ -789,7 +788,7 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
|
|||||||
BK4819_DisableVox();
|
BK4819_DisableVox();
|
||||||
|
|
||||||
// RX expander
|
// RX expander
|
||||||
BK4819_SetCompander((g_rx_vfo->am_mode == 0 && g_rx_vfo->compander >= 2) ? g_rx_vfo->compander : 0);
|
BK4819_SetCompander((g_rx_vfo->am_mode == 0 && g_rx_vfo->compand >= 2) ? g_rx_vfo->compand : 0);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#ifdef ENABLE_KILL_REVIVE
|
#ifdef ENABLE_KILL_REVIVE
|
||||||
@ -885,7 +884,7 @@ void RADIO_enableTX(const bool fsk_tx)
|
|||||||
|
|
||||||
g_enable_speaker = false;
|
g_enable_speaker = false;
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_UNKNOWN, false); // ???
|
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false); // ???
|
||||||
|
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough="
|
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough="
|
||||||
@ -911,18 +910,19 @@ void RADIO_enableTX(const bool fsk_tx)
|
|||||||
// so MAKE SURE that DTMF is disabled - until needed
|
// so MAKE SURE that DTMF is disabled - until needed
|
||||||
BK4819_DisableDTMF();
|
BK4819_DisableDTMF();
|
||||||
|
|
||||||
BK4819_SetCompander((!fsk_tx && g_rx_vfo->am_mode == 0 && (g_rx_vfo->compander == 1 || g_rx_vfo->compander >= 3)) ? g_rx_vfo->compander : 0);
|
BK4819_SetCompander((!fsk_tx && g_rx_vfo->am_mode == 0 && (g_rx_vfo->compand == 1 || g_rx_vfo->compand >= 3)) ? g_rx_vfo->compand : 0);
|
||||||
|
|
||||||
BK4819_set_rf_frequency(g_current_vfo->p_tx->frequency, false);
|
BK4819_set_rf_frequency(g_current_vfo->p_tx->frequency, false);
|
||||||
|
BK4819_set_rf_filter_path(g_current_vfo->p_tx->frequency);
|
||||||
|
|
||||||
BK4819_PrepareTransmit();
|
BK4819_PrepareTransmit();
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(g_current_vfo->p_tx->frequency);
|
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_PA_ENABLE, true); // PA on
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_UNKNOWN, true); // ???
|
|
||||||
if (g_screen_to_display != DISPLAY_AIRCOPY)
|
if (g_screen_to_display != DISPLAY_AIRCOPY)
|
||||||
BK4819_SetupPowerAmplifier(g_current_vfo->txp_calculated_setting, g_current_vfo->p_tx->frequency);
|
BK4819_SetupPowerAmplifier(g_current_vfo->txp_calculated_setting, g_current_vfo->p_tx->frequency);
|
||||||
else
|
else
|
||||||
BK4819_SetupPowerAmplifier(0, g_current_vfo->p_tx->frequency); // very low power when in AIRCOPY mode
|
BK4819_SetupPowerAmplifier(0, g_current_vfo->p_tx->frequency); // very low power when in AIRCOPY mode
|
||||||
|
|
||||||
BK4819_set_GPIO_pin(BK4819_GPIO1_PIN29_RED, true); // turn the RED LED on
|
BK4819_set_GPIO_pin(BK4819_GPIO5_PIN1_RED, true); // turn the RED LED on
|
||||||
|
|
||||||
if (fsk_tx)
|
if (fsk_tx)
|
||||||
{
|
{
|
||||||
|
4
radio.h
4
radio.h
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
USER_CH_BAND_MASK = 0x0F << 0,
|
USER_CH_BAND_MASK = 0x0F << 0,
|
||||||
USER_CH_COMPAND = 3u << 4, // new
|
USER_CH_SPARE = 3u << 4,
|
||||||
USER_CH_SCANLIST2 = 1u << 6,
|
USER_CH_SCANLIST2 = 1u << 6,
|
||||||
USER_CH_SCANLIST1 = 1u << 7
|
USER_CH_SCANLIST1 = 1u << 7
|
||||||
};
|
};
|
||||||
@ -111,7 +111,7 @@ typedef struct vfo_info_t
|
|||||||
|
|
||||||
uint8_t am_mode;
|
uint8_t am_mode;
|
||||||
|
|
||||||
uint8_t compander;
|
uint8_t compand;
|
||||||
|
|
||||||
char name[16];
|
char name[16];
|
||||||
} vfo_info_t;
|
} vfo_info_t;
|
||||||
|
13
settings.c
13
settings.c
@ -370,10 +370,11 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const vfo_info_t *pVFO,
|
|||||||
State[2] = (pVFO->freq_config_tx.code_type << 4) | pVFO->freq_config_rx.code_type;
|
State[2] = (pVFO->freq_config_tx.code_type << 4) | pVFO->freq_config_rx.code_type;
|
||||||
State[3] = ((pVFO->am_mode & 1u) << 4) | pVFO->tx_offset_freq_dir;
|
State[3] = ((pVFO->am_mode & 1u) << 4) | pVFO->tx_offset_freq_dir;
|
||||||
State[4] =
|
State[4] =
|
||||||
(pVFO->busy_channel_lock << 4)
|
(pVFO->compand << 6) |
|
||||||
| (pVFO->output_power << 2)
|
(pVFO->busy_channel_lock << 4) |
|
||||||
| (pVFO->channel_bandwidth << 1)
|
(pVFO->output_power << 2) |
|
||||||
| (pVFO->frequency_reverse << 0);
|
(pVFO->channel_bandwidth << 1) |
|
||||||
|
(pVFO->frequency_reverse << 0);
|
||||||
State[5] = ((pVFO->dtmf_ptt_id_tx_mode & 7u) << 1) | ((pVFO->dtmf_decoding_enable & 1u) << 0);
|
State[5] = ((pVFO->dtmf_ptt_id_tx_mode & 7u) << 1) | ((pVFO->dtmf_decoding_enable & 1u) << 0);
|
||||||
State[6] = pVFO->step_setting;
|
State[6] = pVFO->step_setting;
|
||||||
State[7] = pVFO->scrambling_type;
|
State[7] = pVFO->scrambling_type;
|
||||||
@ -410,13 +411,11 @@ void SETTINGS_UpdateChannel(uint8_t Channel, const vfo_info_t *pVFO, bool keep)
|
|||||||
if (IS_NOAA_CHANNEL(Channel))
|
if (IS_NOAA_CHANNEL(Channel))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Attributes &= (uint8_t)(~USER_CH_COMPAND); // default to '0' = compander disabled
|
|
||||||
|
|
||||||
EEPROM_ReadBuffer(Offset, State, sizeof(State));
|
EEPROM_ReadBuffer(Offset, State, sizeof(State));
|
||||||
|
|
||||||
if (keep)
|
if (keep)
|
||||||
{
|
{
|
||||||
Attributes = (pVFO->scanlist_1_participation << 7) | (pVFO->scanlist_2_participation << 6) | (pVFO->compander << 4) | (pVFO->band << 0);
|
Attributes = (pVFO->scanlist_1_participation << 7) | (pVFO->scanlist_2_participation << 6) | (pVFO->band << 0);
|
||||||
if (State[Channel & 7u] == Attributes)
|
if (State[Channel & 7u] == Attributes)
|
||||||
return; // no change in the attributes .. don't place wear on the eeprom
|
return; // no change in the attributes .. don't place wear on the eeprom
|
||||||
}
|
}
|
||||||
|
@ -154,12 +154,12 @@ typedef struct {
|
|||||||
uint8_t frequency_reverse:1; // reverse repeater
|
uint8_t frequency_reverse:1; // reverse repeater
|
||||||
uint8_t channel_bandwidth:1; // wide/narrow
|
uint8_t channel_bandwidth:1; // wide/narrow
|
||||||
uint8_t tx_power:2; // 0, 1 or 2 .. L, M or H
|
uint8_t tx_power:2; // 0, 1 or 2 .. L, M or H
|
||||||
uint8_t busy_channel_lockout:1; //
|
uint8_t busy_channel_lock:1; //
|
||||||
#if 0
|
#if 0
|
||||||
uint8_t unused5:3; //
|
uint8_t unused5:3; //
|
||||||
#else
|
#else
|
||||||
uint8_t unused5:1; //
|
uint8_t unused5:1; //
|
||||||
uint8_t compander:2; // 0 = off, 1 = TX, 2 = RX, 3 = TX/RX
|
uint8_t compand:2; // 0 = off, 1 = TX, 2 = RX, 3 = TX/RX
|
||||||
#endif
|
#endif
|
||||||
// [13]
|
// [13]
|
||||||
uint8_t dtmf_decoding_enable:1; //
|
uint8_t dtmf_decoding_enable:1; //
|
||||||
@ -267,8 +267,7 @@ typedef struct {
|
|||||||
// 0x0D60
|
// 0x0D60
|
||||||
struct { // these channel attribute settings could have been in the t_channel structure !
|
struct { // these channel attribute settings could have been in the t_channel structure !
|
||||||
uint8_t band:4; // why do QS have these 4 bits ? .. band can/is computed from the frequency
|
uint8_t band:4; // why do QS have these 4 bits ? .. band can/is computed from the frequency
|
||||||
uint8_t unused:2; // 0's ?
|
uint8_t unused:2; // 0's
|
||||||
// uint8_t compander:2; // smoved this to the t_channel structure
|
|
||||||
uint8_t scanlist2:1; // set if is in scan list 2
|
uint8_t scanlist2:1; // set if is in scan list 2
|
||||||
uint8_t scanlist1:1; // set if is in scan list 1
|
uint8_t scanlist1:1; // set if is in scan list 1
|
||||||
} __attribute__((packed)) channel_attr[200]; //
|
} __attribute__((packed)) channel_attr[200]; //
|
||||||
|
@ -649,7 +649,7 @@ void UI_DisplayMain(void)
|
|||||||
if (attributes & USER_CH_SCANLIST2)
|
if (attributes & USER_CH_SCANLIST2)
|
||||||
memmove(p_line0 + 120, BITMAP_SCANLIST2, sizeof(BITMAP_SCANLIST2));
|
memmove(p_line0 + 120, BITMAP_SCANLIST2, sizeof(BITMAP_SCANLIST2));
|
||||||
#ifndef ENABLE_BIG_FREQ
|
#ifndef ENABLE_BIG_FREQ
|
||||||
if ((attributes & USER_CH_COMPAND) > 0)
|
if (g_eeprom.vfo_info[vfo_num].compand)
|
||||||
memmove(p_line0 + 120 + LCD_WIDTH, BITMAP_COMPAND, sizeof(BITMAP_COMPAND));
|
memmove(p_line0 + 120 + LCD_WIDTH, BITMAP_COMPAND, sizeof(BITMAP_COMPAND));
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -727,8 +727,8 @@ void UI_DisplayMain(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// show the channel symbols
|
// show the channel symbols
|
||||||
const uint8_t attributes = g_user_channel_attributes[g_eeprom.screen_channel[vfo_num]];
|
//const uint8_t attributes = g_user_channel_attributes[g_eeprom.screen_channel[vfo_num]];
|
||||||
if ((attributes & USER_CH_COMPAND) > 0)
|
if (g_eeprom.vfo_info[vfo_num].compand)
|
||||||
#ifdef ENABLE_BIG_FREQ
|
#ifdef ENABLE_BIG_FREQ
|
||||||
memmove(p_line0 + 120, BITMAP_COMPAND, sizeof(BITMAP_COMPAND));
|
memmove(p_line0 + 120, BITMAP_COMPAND, sizeof(BITMAP_COMPAND));
|
||||||
#else
|
#else
|
||||||
|
@ -86,10 +86,10 @@ const t_menu_item g_menu_list[] =
|
|||||||
{"MIC GN", VOICE_ID_INVALID, MENU_MIC },
|
{"MIC GN", VOICE_ID_INVALID, MENU_MIC },
|
||||||
{"COMPND", VOICE_ID_INVALID, MENU_COMPAND },
|
{"COMPND", VOICE_ID_INVALID, MENU_COMPAND },
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
{"Tx BAR", VOICE_ID_INVALID, MENU_MIC_BAR },
|
{"Tx BAR", VOICE_ID_INVALID, MENU_TX_BAR },
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_RSSI_BAR
|
#ifdef ENABLE_RSSI_BAR
|
||||||
{"Rx BAR", VOICE_ID_INVALID, MENU_RSSI_BAR },
|
{"Rx BAR", VOICE_ID_INVALID, MENU_RX_BAR },
|
||||||
#endif
|
#endif
|
||||||
{"1 CALL", VOICE_ID_INVALID, MENU_1_CALL },
|
{"1 CALL", VOICE_ID_INVALID, MENU_1_CALL },
|
||||||
{"SLIST", VOICE_ID_INVALID, MENU_S_LIST },
|
{"SLIST", VOICE_ID_INVALID, MENU_S_LIST },
|
||||||
@ -709,10 +709,10 @@ void UI_DisplayMenu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
case MENU_MIC_BAR:
|
case MENU_TX_BAR:
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_RSSI_BAR
|
#ifdef ENABLE_RSSI_BAR
|
||||||
case MENU_RSSI_BAR:
|
case MENU_RX_BAR:
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_AM_FIX
|
#ifdef ENABLE_AM_FIX
|
||||||
case MENU_AM_FIX:
|
case MENU_AM_FIX:
|
||||||
|
@ -78,12 +78,12 @@ enum
|
|||||||
MENU_STE,
|
MENU_STE,
|
||||||
MENU_RP_STE,
|
MENU_RP_STE,
|
||||||
MENU_MIC,
|
MENU_MIC,
|
||||||
#ifdef ENABLE_AUDIO_BAR
|
|
||||||
MENU_MIC_BAR,
|
|
||||||
#endif
|
|
||||||
MENU_COMPAND,
|
MENU_COMPAND,
|
||||||
|
#ifdef ENABLE_AUDIO_BAR
|
||||||
|
MENU_TX_BAR,
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_RSSI_BAR
|
#ifdef ENABLE_RSSI_BAR
|
||||||
MENU_RSSI_BAR,
|
MENU_RX_BAR,
|
||||||
#endif
|
#endif
|
||||||
MENU_1_CALL,
|
MENU_1_CALL,
|
||||||
MENU_S_LIST,
|
MENU_S_LIST,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user