0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-27 13:51:25 +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
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);
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper); }
}
#endif

View File

@ -180,6 +180,9 @@ static void APP_process_new_receive(void)
{
bool flag;
if (!g_squelch_open)
BK4819_set_AFC(0);
if (!g_squelch_open && !g_monitor_enabled)
{ // squelch is closed
@ -190,11 +193,24 @@ static void APP_process_new_receive(void)
{
FUNCTION_Select(FUNCTION_FOREGROUND);
g_update_display = true;
// g_update_status = true;
}
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);
#ifdef ENABLE_NOAA
@ -220,7 +236,7 @@ static void APP_process_new_receive(void)
return;
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
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_display = true;
return;
}
}
@ -264,6 +279,9 @@ static void APP_process_rx(void)
// APP_update_rssi(g_rx_vfo_num);
g_update_rssi = true;
// if (!g_squelch_open)
// BK4819_set_AFC(0);
if (g_flag_tail_tone_elimination_complete)
{
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)
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)
{ // we're RF scanning
@ -674,7 +704,10 @@ static void APP_next_freq(void)
// round
#ifdef ENABLE_SCAN_RANGES
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
#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))
{ // 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)
{ // just pressed
const frequency_band_t band = FREQUENCY_GetBand(freq);
g_scan_initial_upper = FREQ_BAND_TABLE[band].upper;
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
//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);
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper);
//}
#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;
@ -1046,9 +1052,13 @@ void MAIN_Key_UP_DOWN(bool key_pressed, bool key_held, scan_state_dir_t directio
// round
#ifdef ENABLE_SCAN_RANGES
//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
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)
{ // frequency not allowed
g_beep_to_play = BEEP_500HZ_60MS_DOUBLE_BEEP_OPTIONAL;

View File

@ -1060,7 +1060,8 @@ void MENU_ShowCurrentSetting(void)
case MENU_AUTO_BACKLITE:
g_sub_menu_selection = g_eeprom.config.setting.backlight_time;
BACKLIGHT_turn_on(0);
// BACKLIGHT_turn_on(0);
BACKLIGHT_turn_on(5);
break;
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;
switch (mode)
{
{
default:
case MOD_MODE_FM: af_mode = BK4819_AF_FM; 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)
{
BK4819_write_reg(0x73, (0u << 11) | (1u << 4));
}
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_16(uint16_t Data);
void BK4819_EnableAFC(void);
void BK4819_DisableAFC(void);
void BK4819_set_AFC(unsigned int level);
void BK4819_DisableAGC(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)
return lower;
if (step_size == 833)
{
uint32_t base = (delta / 2500) * 2500; // 25kHz step
const unsigned int index = ((delta - base) % 2500) / step_size;
if (index == 2)
uint32_t base = (delta / 2500) * 2500; // 25kHz step
const uint32_t index = ((delta - base) % 2500) / step_size;
if (index >= 2)
base++;
freq = lower + base + (step_size * index);
}
else
freq = lower + ((delta / step_size) * step_size);
return freq;
}
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 lower = FREQ_BAND_TABLE[band].lower;
const uint32_t upper = FREQ_BAND_TABLE[band].upper;
const uint32_t lower = FREQ_BAND_TABLE[band].lower;
if (freq < lower)
return FREQUENCY_floor_to_step(upper, step_size, lower, upper);
if (freq >= upper)
freq = lower;
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);
unsigned int i;
for (i = 0; i < ARRAY_SIZE(FREQ_SCAN_RANGE_TABLE); i++)
{
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
// 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
//
//
// bands 123
// 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
@ -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];
}
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)
{
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
BK4819_set_GPIO_pin(BK4819_GPIO6_PIN2_GREEN, false);
switch (Bandwidth)
{
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;
}
Bandwidth = RADIO_set_bandwidth(Bandwidth, g_rx_vfo->channel.mod_mode);
BK4819_write_reg(0x30, 0);
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);
switch (Bandwidth)
{
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;
}
Bandwidth = RADIO_set_bandwidth(Bandwidth, g_current_vfo->channel.mod_mode);
// if DTMF is enabled when TX'ing, it changes the TX audio filtering ! .. 1of11
// so MAKE SURE that DTMF is disabled - until needed
@ -1030,7 +1002,7 @@ void RADIO_PrepareTX(void)
#ifdef ENABLE_ALARM
if (g_alarm_state == ALARM_STATE_TXALARM && g_eeprom.config.setting.alarm_mode != ALARM_MODE_TONE)
{ // enable the alarm tone but not the TX
g_alarm_state = ALARM_STATE_ALARM;
GUI_DisplayScreen();
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:
strcpy(str, "BACKLITE\n");
strcat(str, g_sub_menu_backlight[g_sub_menu_selection]);
BACKLIGHT_turn_on(5);
break;
case MENU_AUTO_BACKLITE_ON_TX_RX:
@ -989,7 +990,7 @@ void UI_DisplayMenu(void)
#endif
case MENU_ANI_ID:
strcpy(str, "YOUR ID\n");
strcpy(str, "DTMF ID\n");
strcat(str, g_eeprom.config.setting.dtmf.ani_id);
break;