0
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:
OneOfEleven 2023-11-11 13:09:24 +00:00
parent 852998f082
commit 56aaf876ef
12 changed files with 118 additions and 98 deletions

View File

@ -265,8 +265,9 @@ void ACTION_Scan(bool bRestart)
#ifdef ENABLE_SCAN_RANGES #ifdef ENABLE_SCAN_RANGES
if (IS_FREQ_CHANNEL(g_tx_vfo->channel_save) && g_eeprom.config.setting.scan_ranges_enable) if (IS_FREQ_CHANNEL(g_tx_vfo->channel_save) && g_eeprom.config.setting.scan_ranges_enable)
{ {
const uint32_t freq = g_tx_vfo->freq_config_rx.frequency; uint32_t freq = g_tx_vfo->freq_config_rx.frequency;
FREQUENCY_scan_range(freq, &g_scan_initial_lower, &g_scan_initial_upper, &g_scan_initial_step_size); FREQUENCY_scan_range(freq, &g_scan_initial_lower, &g_scan_initial_upper, &g_scan_initial_step_size);
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper); }
} }
#endif #endif

View File

@ -180,6 +180,9 @@ static void APP_process_new_receive(void)
{ {
bool flag; bool flag;
if (!g_squelch_open)
BK4819_set_AFC(0);
if (!g_squelch_open && !g_monitor_enabled) if (!g_squelch_open && !g_monitor_enabled)
{ // squelch is closed { // squelch is closed
@ -190,11 +193,24 @@ static void APP_process_new_receive(void)
{ {
FUNCTION_Select(FUNCTION_FOREGROUND); FUNCTION_Select(FUNCTION_FOREGROUND);
g_update_display = true; g_update_display = true;
// g_update_status = true;
} }
return; return;
} }
switch (g_rx_vfo->channel.mod_mode)
{
case MOD_MODE_FM:
case MOD_MODE_AM:
BK4819_set_AFC(2);
break;
default:
case MOD_MODE_DSB:
BK4819_set_AFC(0);
break;
}
flag = (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_current_code_type == CODE_TYPE_NONE); flag = (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_current_code_type == CODE_TYPE_NONE);
#ifdef ENABLE_NOAA #ifdef ENABLE_NOAA
@ -220,7 +236,7 @@ static void APP_process_new_receive(void)
return; return;
if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF) if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF)
{ // not code scanning { // not scanning
#ifdef ENABLE_KILL_REVIVE #ifdef ENABLE_KILL_REVIVE
if (g_rx_vfo->channel.dtmf_decoding_enable || g_eeprom.config.setting.radio_disabled) if (g_rx_vfo->channel.dtmf_decoding_enable || g_eeprom.config.setting.radio_disabled)
@ -240,7 +256,6 @@ static void APP_process_new_receive(void)
g_update_status = true; g_update_status = true;
g_update_display = true; g_update_display = true;
return; return;
} }
} }
@ -264,6 +279,9 @@ static void APP_process_rx(void)
// APP_update_rssi(g_rx_vfo_num); // APP_update_rssi(g_rx_vfo_num);
g_update_rssi = true; g_update_rssi = true;
// if (!g_squelch_open)
// BK4819_set_AFC(0);
if (g_flag_tail_tone_elimination_complete) if (g_flag_tail_tone_elimination_complete)
{ {
Mode = END_OF_RX_MODE_END; Mode = END_OF_RX_MODE_END;
@ -476,6 +494,18 @@ bool APP_start_listening(void)
// clear the other vfo's rssi level (to hide the antenna symbol) // clear the other vfo's rssi level (to hide the antenna symbol)
g_vfo_rssi_bar_level[(chan + 1) & 1u] = 0; g_vfo_rssi_bar_level[(chan + 1) & 1u] = 0;
switch (g_rx_vfo->channel.mod_mode)
{
case MOD_MODE_FM:
case MOD_MODE_AM:
BK4819_set_AFC(2);
break;
default:
case MOD_MODE_DSB:
BK4819_set_AFC(0);
break;
}
if (g_scan_state_dir != SCAN_STATE_DIR_OFF) if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
{ // we're RF scanning { // we're RF scanning
@ -674,7 +704,10 @@ static void APP_next_freq(void)
// round // round
#ifdef ENABLE_SCAN_RANGES #ifdef ENABLE_SCAN_RANGES
if (g_eeprom.config.setting.scan_ranges_enable) if (g_eeprom.config.setting.scan_ranges_enable)
freq = g_scan_initial_lower + ((((freq - g_scan_initial_lower) + (g_scan_initial_step_size / 2)) / g_scan_initial_step_size) * g_scan_initial_step_size); //freq = g_scan_initial_lower + ((((freq - g_scan_initial_lower) + (g_scan_initial_step_size / 2)) / g_scan_initial_step_size) * g_scan_initial_step_size);
freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
#else
//freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
#endif #endif
#ifdef ENABLE_SCAN_IGNORE_LIST #ifdef ENABLE_SCAN_IGNORE_LIST

View File

@ -1016,11 +1016,11 @@ void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t directio
if (IS_FREQ_CHANNEL(Channel)) if (IS_FREQ_CHANNEL(Channel))
{ // frequency mode { // frequency mode
uint32_t freq = g_tx_vfo->freq_config_rx.frequency; uint32_t freq = g_tx_vfo->freq_config_rx.frequency;
const frequency_band_t band = FREQUENCY_GetBand(freq);
if (key_pressed && !key_held) if (key_pressed && !key_held)
{ // just pressed { // just pressed
const frequency_band_t band = FREQUENCY_GetBand(freq);
g_scan_initial_upper = FREQ_BAND_TABLE[band].upper; g_scan_initial_upper = FREQ_BAND_TABLE[band].upper;
g_scan_initial_lower = FREQ_BAND_TABLE[band].lower; g_scan_initial_lower = FREQ_BAND_TABLE[band].lower;
@ -1028,8 +1028,14 @@ void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t directio
#ifdef ENABLE_SCAN_RANGES #ifdef ENABLE_SCAN_RANGES
//if (g_eeprom.config.setting.scan_ranges_enable) //if (g_eeprom.config.setting.scan_ranges_enable)
//{
// FREQUENCY_scan_range(freq, &g_scan_initial_lower, &g_scan_initial_upper, &g_scan_initial_step_size); // FREQUENCY_scan_range(freq, &g_scan_initial_lower, &g_scan_initial_upper, &g_scan_initial_step_size);
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
//}
#endif #endif
// if (band == BAND2_108MHz)
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
} }
freq += g_scan_initial_step_size * direction; freq += g_scan_initial_step_size * direction;
@ -1046,9 +1052,13 @@ void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t directio
// round // round
#ifdef ENABLE_SCAN_RANGES #ifdef ENABLE_SCAN_RANGES
//if (key_held) //if (key_held)
// freq = g_scan_initial_lower + ((((freq - g_scan_initial_lower) + (g_scan_initial_step_size / 2)) / g_scan_initial_step_size) * g_scan_initial_step_size); // //freq = g_scan_initial_lower + ((((freq - g_scan_initial_lower) + (g_scan_initial_step_size / 2)) / g_scan_initial_step_size) * g_scan_initial_step_size);
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
#endif #endif
if (band == BAND2_108MHz)
freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
if (FREQUENCY_rx_freq_check(freq) < 0) if (FREQUENCY_rx_freq_check(freq) < 0)
{ // frequency not allowed { // frequency not allowed
g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL; g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;

View File

@ -1060,7 +1060,8 @@ void MENU_ShowCurrentSetting(void)
case MENU_AUTO_BACKLITE: case MENU_AUTO_BACKLITE:
g_sub_menu_selection = g_eeprom.config.setting.backlight_time; g_sub_menu_selection = g_eeprom.config.setting.backlight_time;
BACKLIGHT_turn_on(0); // BACKLIGHT_turn_on(0);
BACKLIGHT_turn_on(5);
break; break;
case MENU_AUTO_BACKLITE_ON_TX_RX: case MENU_AUTO_BACKLITE_ON_TX_RX:

View File

@ -81,7 +81,7 @@ void AUDIO_set_mod_mode(const mod_mode_t mode)
{ {
BK4819_af_type_t af_mode; BK4819_af_type_t af_mode;
switch (mode) switch (mode)
{ {
default: default:
case MOD_MODE_FM: af_mode = BK4819_AF_FM; break; case MOD_MODE_FM: af_mode = BK4819_AF_FM; break;
case MOD_MODE_AM: af_mode = BK4819_AF_AM; break; case MOD_MODE_AM: af_mode = BK4819_AF_AM; break;

View File

@ -229,14 +229,19 @@ void BK4819_write_16(uint16_t Data)
} }
} }
void BK4819_EnableAFC(void) void BK4819_set_AFC(unsigned int level)
{ {
BK4819_write_reg(0x73, (0u << 11) | (0u << 4)); if (level > 8)
level = 8;
if (level == 0)
BK4819_write_reg(0x73, BK4819_read_reg(0x73) | (1u << 4)); // disable
else
BK4819_write_reg(0x73, ((8u - level) << 11) | (0u << 4));
} }
void BK4819_DisableAFC(void) void BK4819_DisableAFC(void)
{ {
BK4819_write_reg(0x73, (0u << 11) | (1u << 4));
} }
void BK4819_DisableAGC(void) void BK4819_DisableAGC(void)

View File

@ -67,8 +67,7 @@ void BK4819_write_reg(const uint8_t Register, uint16_t Data);
void BK4819_write_8(uint8_t Data); void BK4819_write_8(uint8_t Data);
void BK4819_write_16(uint16_t Data); void BK4819_write_16(uint16_t Data);
void BK4819_EnableAFC(void); void BK4819_set_AFC(unsigned int level);
void BK4819_DisableAFC(void);
void BK4819_DisableAGC(void); void BK4819_DisableAGC(void);
void BK4819_EnableAGC(void); void BK4819_EnableAGC(void);

Binary file not shown.

Binary file not shown.

View File

@ -168,34 +168,32 @@ uint32_t FREQUENCY_floor_to_step(uint32_t freq, const uint32_t step_size, const
if (delta < step_size) if (delta < step_size)
return lower; return lower;
if (step_size == 833) if (step_size == 833)
{ {
uint32_t base = (delta / 2500) * 2500; // 25kHz step uint32_t base = (delta / 2500) * 2500; // 25kHz step
const unsigned int index = ((delta - base) % 2500) / step_size; const uint32_t index = ((delta - base) % 2500) / step_size;
if (index >= 2)
if (index == 2)
base++; base++;
freq = lower + base + (step_size * index); freq = lower + base + (step_size * index);
} }
else else
freq = lower + ((delta / step_size) * step_size); freq = lower + ((delta / step_size) * step_size);
return freq; return freq;
} }
uint32_t FREQUENCY_wrap_to_step_band(uint32_t freq, const uint32_t step_size, const unsigned int band) uint32_t FREQUENCY_wrap_to_step_band(uint32_t freq, const uint32_t step_size, const unsigned int band)
{ {
const uint32_t upper = FREQ_BAND_TABLE[band].upper; const uint32_t upper = FREQ_BAND_TABLE[band].upper;
const uint32_t lower = FREQ_BAND_TABLE[band].lower; const uint32_t lower = FREQ_BAND_TABLE[band].lower;
if (freq < lower) if (freq < lower)
return FREQUENCY_floor_to_step(upper, step_size, lower, upper); return FREQUENCY_floor_to_step(upper, step_size, lower, upper);
if (freq >= upper) if (freq >= upper)
freq = lower; freq = lower;
return freq; return freq;
} }
@ -227,7 +225,7 @@ uint32_t FREQUENCY_wrap_to_step_band(uint32_t freq, const uint32_t step_size, co
{ {
const frequency_band_t band = FREQUENCY_GetBand(freq); const frequency_band_t band = FREQUENCY_GetBand(freq);
unsigned int i; unsigned int i;
for (i = 0; i < ARRAY_SIZE(FREQ_SCAN_RANGE_TABLE); i++) for (i = 0; i < ARRAY_SIZE(FREQ_SCAN_RANGE_TABLE); i++)
{ {
const uint32_t _upper = FREQ_SCAN_RANGE_TABLE[i].upper; const uint32_t _upper = FREQ_SCAN_RANGE_TABLE[i].upper;

112
radio.c
View File

@ -437,7 +437,7 @@ void RADIO_ConfigureSquelch(vfo_info_t *p_vfo)
// 64 30 2D 29 26 23 20 1D 1A 17 FF FF FF FF FF FF // close noise // 64 30 2D 29 26 23 20 1D 1A 17 FF FF FF FF FF FF // close noise
// 5A 14 11 0E 0B 08 03 02 02 02 FF FF FF FF FF FF // open glitch // 5A 14 11 0E 0B 08 03 02 02 02 FF FF FF FF FF FF // open glitch
// 64 11 0E 0B 08 05 05 04 04 04 FF FF FF FF FF FF // close glitch // 64 11 0E 0B 08 05 05 04 04 04 FF FF FF FF FF FF // close glitch
// //
// bands 123 // bands 123
// 32 68 6B 6E 6F 72 75 77 79 7B FF FF FF FF FF FF // open rssi // 32 68 6B 6E 6F 72 75 77 79 7B FF FF FF FF FF FF // open rssi
// 28 64 67 6A 6C 6E 71 73 76 78 FF FF FF FF FF FF // close rssi // 28 64 67 6A 6C 6E 71 73 76 78 FF FF FF FF FF FF // close rssi
@ -625,6 +625,44 @@ void RADIO_select_vfos(void)
g_current_vfo = (g_eeprom.config.setting.cross_vfo == CROSS_BAND_OFF) ? g_rx_vfo : &g_vfo_info[g_eeprom.config.setting.tx_vfo_num]; g_current_vfo = (g_eeprom.config.setting.cross_vfo == CROSS_BAND_OFF) ? g_rx_vfo : &g_vfo_info[g_eeprom.config.setting.tx_vfo_num];
} }
BK4819_filter_bandwidth_t RADIO_set_bandwidth(BK4819_filter_bandwidth_t bandwidth, const int mode)
{
switch (bandwidth)
{
default:
bandwidth = BK4819_FILTER_BW_WIDE;
// Fallthrough
case BK4819_FILTER_BW_WIDE:
case BK4819_FILTER_BW_NARROW:
case BK4819_FILTER_BW_NARROWER:
break;
}
switch (mode)
{
case MOD_MODE_FM:
//BK4819_set_AFC(2);
BK4819_set_AFC(0);
break;
case MOD_MODE_AM:
//BK4819_set_AFC(2);
BK4819_set_AFC(0);
break;
case MOD_MODE_DSB:
bandwidth = BK4819_FILTER_BW_NARROWER;
BK4819_set_AFC(0);
break;
}
BK4819_SetFilterBandwidth(bandwidth);
return bandwidth;
}
void RADIO_setup_registers(bool switch_to_function_foreground) void RADIO_setup_registers(bool switch_to_function_foreground)
{ {
BK4819_filter_bandwidth_t Bandwidth = g_rx_vfo->channel.channel_bandwidth; BK4819_filter_bandwidth_t Bandwidth = g_rx_vfo->channel.channel_bandwidth;
@ -642,40 +680,7 @@ void RADIO_setup_registers(bool switch_to_function_foreground)
// turn green LED off // turn green LED off
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false); BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false);
switch (Bandwidth) Bandwidth = RADIO_set_bandwidth(Bandwidth, g_rx_vfo->channel.mod_mode);
{
default:
Bandwidth = BK4819_FILTER_BW_WIDE;
// Fallthrough
case BK4819_FILTER_BW_WIDE:
case BK4819_FILTER_BW_NARROW:
#ifdef ENABLE_AM_FIX
#if 0
BK4819_SetFilterBandwidth(Bandwidth);
// BK4819_EnableAFC();
BK4819_DisableAFC();
#else
if (g_rx_vfo->channel.mod_mode != MOD_MODE_FM)
{
BK4819_SetFilterBandwidth(BK4819_FILTER_BW_NARROWER); // sideband
BK4819_DisableAFC();
}
else
{
BK4819_SetFilterBandwidth(Bandwidth);
// BK4819_EnableAFC();
BK4819_DisableAFC();
}
#endif
#else
BK4819_SetFilterBandwidth(Bandwidth, false);
// BK4819_EnableAFC();
BK4819_DisableAFC();
#endif
break;
}
BK4819_write_reg(0x30, 0); BK4819_write_reg(0x30, 0);
BK4819_write_reg(0x30, BK4819_write_reg(0x30,
@ -916,40 +921,7 @@ void RADIO_enableTX(const bool fsk_tx)
BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false); BK4819_set_GPIO_pin(BK4819_GPIO0_PIN28_RX_ENABLE, false);
switch (Bandwidth) Bandwidth = RADIO_set_bandwidth(Bandwidth, g_current_vfo->channel.mod_mode);
{
default:
Bandwidth = BK4819_FILTER_BW_WIDE;
// Fallthrough
case BK4819_FILTER_BW_WIDE:
case BK4819_FILTER_BW_NARROW:
#ifdef ENABLE_AM_FIX
#if 0
BK4819_SetFilterBandwidth(Bandwidth);
// BK4819_EnableAFC();
BK4819_DisableAFC();
#else
if (g_current_vfo->channel.mod_mode == MOD_MODE_DSB)
{
BK4819_SetFilterBandwidth(BK4819_FILTER_BW_NARROWER); // sideband
BK4819_DisableAFC();
}
else
{
BK4819_SetFilterBandwidth(Bandwidth);
// BK4819_EnableAFC();
BK4819_DisableAFC();
}
#endif
#else
BK4819_SetFilterBandwidth(Bandwidth);
// BK4819_EnableAFC();
BK4819_DisableAFC();
#endif
break;
}
// if DTMF is enabled when TX'ing, it changes the TX audio filtering ! .. 1of11 // if DTMF is enabled when TX'ing, it changes the TX audio filtering ! .. 1of11
// so MAKE SURE that DTMF is disabled - until needed // so MAKE SURE that DTMF is disabled - until needed
@ -1030,7 +1002,7 @@ void RADIO_PrepareTX(void)
#ifdef ENABLE_ALARM #ifdef ENABLE_ALARM
if (g_alarm_state == ALARM_STATE_TXALARM && g_eeprom.config.setting.alarm_mode != ALARM_MODE_TONE) if (g_alarm_state == ALARM_STATE_TXALARM && g_eeprom.config.setting.alarm_mode != ALARM_MODE_TONE)
{ // enable the alarm tone but not the TX { // enable the alarm tone but not the TX
g_alarm_state = ALARM_STATE_ALARM; g_alarm_state = ALARM_STATE_ALARM;
GUI_DisplayScreen(); GUI_DisplayScreen();
BK4819_start_tone(500, 28, g_current_function == FUNCTION_TRANSMIT, false); BK4819_start_tone(500, 28, g_current_function == FUNCTION_TRANSMIT, false);

View File

@ -717,6 +717,7 @@ void UI_DisplayMenu(void)
case MENU_AUTO_BACKLITE: case MENU_AUTO_BACKLITE:
strcpy(str, "BACKLITE\n"); strcpy(str, "BACKLITE\n");
strcat(str, g_sub_menu_backlight[g_sub_menu_selection]); strcat(str, g_sub_menu_backlight[g_sub_menu_selection]);
BACKLIGHT_turn_on(5);
break; break;
case MENU_AUTO_BACKLITE_ON_TX_RX: case MENU_AUTO_BACKLITE_ON_TX_RX:
@ -989,7 +990,7 @@ void UI_DisplayMenu(void)
#endif #endif
case MENU_ANI_ID: case MENU_ANI_ID:
strcpy(str, "YOUR ID\n"); strcpy(str, "DTMF ID\n");
strcat(str, g_eeprom.config.setting.dtmf.ani_id); strcat(str, g_eeprom.config.setting.dtmf.ani_id);
break; break;