mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-27 22:01:26 +03:00
.
This commit is contained in:
parent
852998f082
commit
56aaf876ef
@ -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
|
||||
|
||||
|
39
app/app.c
39
app/app.c
@ -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
|
||||
|
16
app/main.c
16
app/main.c
@ -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;
|
||||
|
@ -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:
|
||||
|
2
audio.c
2
audio.c
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -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
112
radio.c
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user