0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-30 07:11:26 +03:00

fix tx tones

This commit is contained in:
OneOfEleven 2023-11-03 18:41:54 +00:00
parent 474317c149
commit e2e030aed4
16 changed files with 470 additions and 460 deletions

View File

@ -57,7 +57,7 @@ ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
ENABLE_CONTRAST := 0 ENABLE_CONTRAST := 0
ENABLE_BOOT_BEEPS := 0 ENABLE_BOOT_BEEPS := 0
ENABLE_DTMF_CALL_FLASH_LIGHT := 1 ENABLE_DTMF_CALL_FLASH_LIGHT := 1
ENABLE_FLASH_LIGHT_SOS_TONE := 0 ENABLE_FLASH_LIGHT_SOS_TONE := 1
ENABLE_SHOW_CHARGE_LEVEL := 0 ENABLE_SHOW_CHARGE_LEVEL := 0
ENABLE_REVERSE_BAT_SYMBOL := 1 ENABLE_REVERSE_BAT_SYMBOL := 1
ENABLE_FREQ_SEARCH_TIMEOUT := 0 ENABLE_FREQ_SEARCH_TIMEOUT := 0

203
am_fix.c
View File

@ -28,72 +28,72 @@
#include "functions.h" #include "functions.h"
#include "misc.h" #include "misc.h"
#ifdef ENABLE_AM_FIX //#define SET_RSSI_COMP
typedef struct typedef struct
{ {
uint16_t reg_val; uint16_t reg_val;
int8_t gain_dB; int8_t gain_dB;
} __attribute__((packed)) t_gain_table; } __attribute__((packed)) t_gain_table;
// REG_10 AGC gain table // REG_10 AGC gain table
// //
// <15:10> ??? // <15:10> ???
// //
// <9:8> = LNA Gain Short // <9:8> = LNA Gain Short
// 3 = 0dB < original value // 3 = 0dB < original value
// 2 = -24dB // was -11 // 2 = -24dB // was -11
// 1 = -30dB // was -16 // 1 = -30dB // was -16
// 0 = -33dB // was -19 // 0 = -33dB // was -19
// //
// <7:5> = LNA Gain // <7:5> = LNA Gain
// 7 = 0dB // 7 = 0dB
// 6 = -2dB // 6 = -2dB
// 5 = -4dB < original value // 5 = -4dB < original value
// 4 = -6dB // 4 = -6dB
// 3 = -9dB // 3 = -9dB
// 2 = -14dB // 2 = -14dB
// 1 = -19dB // 1 = -19dB
// 0 = -24dB // 0 = -24dB
// //
// <4:3> = MIXER Gain // <4:3> = MIXER Gain
// 3 = 0dB < original value // 3 = 0dB < original value
// 2 = -3dB // 2 = -3dB
// 1 = -6dB // 1 = -6dB
// 0 = -8dB // 0 = -8dB
// //
// <2:0> = PGA Gain // <2:0> = PGA Gain
// 7 = 0dB // 7 = 0dB
// 6 = -3dB < original value // 6 = -3dB < original value
// 5 = -6dB // 5 = -6dB
// 4 = -9dB // 4 = -9dB
// 3 = -15dB // 3 = -15dB
// 2 = -21dB // 2 = -21dB
// 1 = -27dB // 1 = -27dB
// 0 = -33dB // 0 = -33dB
// front end register dB values // front end register dB values
// //
// these values need to be accurate for the code to properly/reliably switch // these values need to be accurate for the code to properly/reliably switch
// between table entries when adjusting the front end registers. // between table entries when adjusting the front end registers.
// //
// these 4 tables need a measuring/calibration update // these 4 tables need a measuring/calibration update
// //
// //
// QUESTION: why do I have to surround the negative numbers in brackets ??? // QUESTION: why do I have to surround the negative numbers in brackets ???
// if I don't add the brackets, reading the table returns unexpected/different values !!! // if I don't add the brackets, reading the table returns unexpected/different values !!!
// //
// //
//// static const int16_t lnas_dB[] = { -19, -16, -11, 0}; // was (but wrong) //// static const int16_t lnas_dB[] = { -19, -16, -11, 0}; // was (but wrong)
// static const int16_t lnas_dB[] = { (-33), (-30), (-24), 0}; // corrected'ish // static const int16_t lnas_dB[] = { (-33), (-30), (-24), 0}; // corrected'ish
// static const int16_t lna_dB[] = { (-24), (-19), (-14), ( -9), (-6), (-4), (-2), 0}; // static const int16_t lna_dB[] = { (-24), (-19), (-14), ( -9), (-6), (-4), (-2), 0};
// static const int16_t mixer_dB[] = { ( -8), ( -6), ( -3), 0}; // static const int16_t mixer_dB[] = { ( -8), ( -6), ( -3), 0};
// static const int16_t pga_dB[] = { (-33), (-27), (-21), (-15), (-9), (-6), (-3), 0}; // static const int16_t pga_dB[] = { (-33), (-27), (-21), (-15), (-9), (-6), (-3), 0};
// lookup table is hugely easier than writing code to do the same // lookup table is hugely easier than writing code to do the same
// //
static const t_gain_table gain_table[] = static const t_gain_table gain_table[] =
{ {
{0x03BE, -7}, // 3 5 3 6 .. 0dB -4dB 0dB -3dB .. -7dB original {0x03BE, -7}, // 3 5 3 6 .. 0dB -4dB 0dB -3dB .. -7dB original
#ifdef ENABLE_AM_FIX_TEST1 #ifdef ENABLE_AM_FIX_TEST1
@ -105,9 +105,9 @@
{0x015E, -47}, // 2 .. 1 2 3 6 .. -30dB -14dB 0dB -3dB .. -47dB {0x015E, -47}, // 2 .. 1 2 3 6 .. -30dB -14dB 0dB -3dB .. -47dB
{0x025E, -41}, // 3 .. 2 2 3 6 .. -24dB -14dB 0dB -3dB .. -41dB {0x025E, -41}, // 3 .. 2 2 3 6 .. -24dB -14dB 0dB -3dB .. -41dB
{0x035E, -17} // 4 .. 3 2 3 6 .. 0dB -14dB 0dB -3dB .. -17dB original {0x035E, -17} // 4 .. 3 2 3 6 .. 0dB -14dB 0dB -3dB .. -17dB original
}; };
static const unsigned int original_index = 1; static const unsigned int original_index = 1;
#else #else
{0x0000, -98}, // 1 .. 0 0 0 0 .. -33dB -24dB -8dB -33dB .. -98dB {0x0000, -98}, // 1 .. 0 0 0 0 .. -33dB -24dB -8dB -33dB .. -98dB
@ -206,44 +206,44 @@
{0x03F7, -3}, // 94 .. 3 7 2 7 .. 0dB 0dB -3dB 0dB .. -3dB {0x03F7, -3}, // 94 .. 3 7 2 7 .. 0dB 0dB -3dB 0dB .. -3dB
{0x03DF, -2}, // 95 .. 3 6 3 7 .. 0dB -2dB 0dB 0dB .. -2dB {0x03DF, -2}, // 95 .. 3 6 3 7 .. 0dB -2dB 0dB 0dB .. -2dB
{0x03FF, 0}, // 96 .. 3 7 3 7 .. 0dB 0dB 0dB 0dB .. 0dB {0x03FF, 0}, // 96 .. 3 7 3 7 .. 0dB 0dB 0dB 0dB .. 0dB
}; };
static const unsigned int original_index = 90; static const unsigned int original_index = 90;
#endif #endif
#ifdef ENABLE_AM_FIX_SHOW_DATA #ifdef ENABLE_AM_FIX_SHOW_DATA
// display update rate // display update rate
static const unsigned int display_update_rate = 250 / 10; // max 250ms display update rate static const unsigned int display_update_rate = 250 / 10; // max 250ms display update rate
unsigned int display_update_tick = 0; unsigned int display_update_tick = 0;
#endif #endif
#ifdef ENABLE_AM_FIX_TEST1 #ifdef ENABLE_AM_FIX_TEST1
// user manually sets the table index .. used to calibrate the desired dB gain table // user manually sets the table index .. used to calibrate the desired dB gain table
unsigned int gain_table_index[2] = {1 + g_eeprom.config.setting.am_fix_test1, 1 + g_eeprom.config.setting.am_fix_test1}; unsigned int gain_table_index[2] = {1 + g_eeprom.config.setting.am_fix_test1, 1 + g_eeprom.config.setting.am_fix_test1};
#else #else
unsigned int gain_table_index[2] = {original_index, original_index}; unsigned int gain_table_index[2] = {original_index, original_index};
#endif #endif
// used simply to detect a changed gain setting // used simply to detect a changed gain setting
unsigned int gain_table_index_prev[2] = {0, 0}; unsigned int gain_table_index_prev[2] = {0, 0};
// to help reduce gain hunting, peak hold count down tick // to help reduce gain hunting, peak hold count down tick
unsigned int hold_counter[2] = {0, 0}; unsigned int hold_counter[2] = {0, 0};
// holds the previous RSSI level .. we do an average of old + new RSSI reading // holds the previous RSSI level .. we do an average of old + new RSSI reading
int16_t prev_rssi[2] = {0, 0}; int16_t prev_rssi[2] = {0, 0};
// used to correct the RSSI readings after our RF gain adjustments // used to correct the RSSI readings after our RF gain adjustments
int16_t rssi_gain_diff[2] = {0, 0}; int16_t rssi_gain_diff[2] = {0, 0};
#ifndef ENABLE_AM_FIX_TEST1 #ifndef ENABLE_AM_FIX_TEST1
// -89 dBm, any higher and the AM demodulator starts to saturate/clip/distort // -89 dBm, any higher and the AM demodulator starts to saturate/clip/distort
const int16_t desired_rssi = (-89 + 160) * 2; const int16_t desired_rssi = (-89 + 160) * 2;
#endif #endif
void AM_fix_init(void) void AM_fix_init(void)
{ // called at boot-up { // called at boot-up
unsigned int vfo; unsigned int vfo;
for (vfo = 0; vfo < 2; vfo++) for (vfo = 0; vfo < 2; vfo++)
{ {
@ -252,12 +252,12 @@
#else #else
gain_table_index[vfo] = original_index; // re-start with original QS setting gain_table_index[vfo] = original_index; // re-start with original QS setting
#endif #endif
// AM_fix_reset(vfo); //AM_fix_reset(vfo);
}
} }
}
void AM_fix_reset(const int vfo) void AM_fix_reset(const int vfo)
{ // reset the AM fixer upper { // reset the AM fixer upper
if (vfo < 0 || vfo >= 2) if (vfo < 0 || vfo >= 2)
return; return;
@ -271,21 +271,21 @@
rssi_gain_diff[vfo] = 0; rssi_gain_diff[vfo] = 0;
gain_table_index_prev[vfo] = 0; gain_table_index_prev[vfo] = 0;
#ifdef ENABLE_AM_FIX_TEST1 #ifdef ENABLE_AM_FIX_TEST1
// gain_table_index[vfo] = 1 + g_eeprom.config.setting.am_fix_test1; //gain_table_index[vfo] = 1 + g_eeprom.config.setting.am_fix_test1;
#else #else
// gain_table_index[vfo] = original_index; // re-start with original QS setting //gain_table_index[vfo] = original_index; // re-start with original QS setting
#endif #endif
} }
// adjust the RX gain to try and prevent the AM demodulator from // adjust the RX gain to try and prevent the AM demodulator from
// saturating (distorted AM audio) // saturating (distorted AM audio)
// //
// we're actually doing the BK4819's job for it here, but as the chip // we're actually doing the BK4819's job for it here, but as the chip
// won't/don't do it for itself, we're left to bodging it ourself by // won't/don't do it for itself, we're left to bodging it ourself by
// playing with the RF front end gain setting // playing with the RF front end gain setting
// //
void AM_fix_10ms(const int vfo) void AM_fix_10ms(const int vfo)
{ {
int16_t diff_dB; int16_t diff_dB;
int16_t rssi; int16_t rssi;
@ -328,9 +328,14 @@
#ifdef ENABLE_AM_FIX_SHOW_DATA #ifdef ENABLE_AM_FIX_SHOW_DATA
{ {
const int16_t new_rssi = rssi - rssi_gain_diff[vfo]; const int16_t new_rssi = rssi - rssi_gain_diff[vfo];
const uint16_t new_glitch = BK4819_GetGlitchIndicator();
const uint16_t new_noise = BK4819_GetExNoiceIndicator();
if (g_current_rssi[vfo] != new_rssi) if (g_current_rssi[vfo] != new_rssi)
{ {
g_current_rssi[vfo] = new_rssi; g_current_rssi[vfo] = new_rssi;
g_current_glitch[vfo] = new_glitch;
g_current_noise[vfo] = new_noise;
if (display_update_tick == 0) if (display_update_tick == 0)
{ // trigger a display update { // trigger a display update
@ -387,9 +392,9 @@
else else
{ // incrementally reduce the gain .. taking it slow improves noise/spike immunity { // incrementally reduce the gain .. taking it slow improves noise/spike immunity
// if (index >= (1 + 3) && diff_dB >= 3) //if (index >= (1 + 3) && diff_dB >= 3)
// index -= 3; // faster gain reduction // index -= 3; // faster gain reduction
// else //else
if (index > 1) if (index > 1)
index--; // slow step-by-step gain reduction index--; // slow step-by-step gain reduction
} }
@ -426,8 +431,10 @@
// offset the RSSI reading to the rest of the firmware to cancel out the gain adjustments we make // offset the RSSI reading to the rest of the firmware to cancel out the gain adjustments we make
#ifdef SET_RSSI_COMP
// RF gain difference from original QS setting // RF gain difference from original QS setting
rssi_gain_diff[vfo] = ((int16_t)gain_table[index].gain_dB - gain_table[original_index].gain_dB) * 2; rssi_gain_diff[vfo] = ((int16_t)gain_table[index].gain_dB - gain_table[original_index].gain_dB) * 2;
#endif
} }
// save the corrected RSSI level // save the corrected RSSI level
@ -440,9 +447,9 @@
g_update_display = true; g_update_display = true;
} }
#endif #endif
} }
#ifdef ENABLE_AM_FIX_SHOW_DATA #ifdef ENABLE_AM_FIX_SHOW_DATA
void AM_fix_print_data(const int vfo, char *s) void AM_fix_print_data(const int vfo, char *s)
{ {
@ -458,6 +465,4 @@
} }
} }
#endif
#endif #endif

View File

@ -16,20 +16,18 @@
*/ */
#ifndef AM_FIXH #ifndef AM_FIXH
#define AM_FIXH
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#ifdef ENABLE_AM_FIX extern int16_t rssi_gain_diff[2];
extern int16_t rssi_gain_diff[2];
void AM_fix_init(void); void AM_fix_init(void);
void AM_fix_reset(const int vfo); void AM_fix_reset(const int vfo);
void AM_fix_10ms(const int vfo); void AM_fix_10ms(const int vfo);
#ifdef ENABLE_AM_FIX_SHOW_DATA #ifdef ENABLE_AM_FIX_SHOW_DATA
void AM_fix_print_data(const int vfo, char *s); void AM_fix_print_data(const int vfo, char *s);
#endif
#endif #endif
#endif #endif

View File

@ -83,6 +83,8 @@ static void APP_process_key(const key_code_t Key, const bool key_pressed, const
static void APP_update_rssi(const int vfo) static void APP_update_rssi(const int vfo)
{ {
int16_t rssi = BK4819_GetRSSI(); int16_t rssi = BK4819_GetRSSI();
uint8_t glitch = BK4819_GetGlitchIndicator();
uint8_t noise = BK4819_GetExNoiceIndicator();
#ifdef ENABLE_AM_FIX #ifdef ENABLE_AM_FIX
// add RF gain adjust compensation // add RF gain adjust compensation
@ -94,8 +96,10 @@ static void APP_update_rssi(const int vfo)
return; // no change return; // no change
g_current_rssi[vfo] = rssi; g_current_rssi[vfo] = rssi;
g_current_glitch[vfo] = glitch;
g_current_noise[vfo] = noise;
UI_update_rssi(rssi, vfo); UI_update_rssi(rssi, glitch, noise, vfo);
} }
static void APP_check_for_new_receive(void) static void APP_check_for_new_receive(void)
@ -1560,7 +1564,7 @@ void APP_process_flash_light_10ms(void)
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
#ifdef ENABLE_FLASH_LIGHT_SOS_TONE #ifdef ENABLE_FLASH_LIGHT_SOS_TONE
if (!g_squelch_open && !g_monitor_enabled && !GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER)) if (!g_squelch_open && !g_monitor_enabled && !GPIO_CheckBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER))
BK4819_StartTone1(880, 50); BK4819_StartTone1(880, 50, g_current_function == FUNCTION_TRANSMIT);
#endif #endif
} }
} }

View File

@ -819,6 +819,7 @@ void MAIN_Key_STAR(bool key_pressed, bool key_held)
if (g_scan_state_dir != SCAN_STATE_DIR_OFF) if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
{ // RF scanning { // RF scanning
#ifdef ENABLE_SCAN_IGNORE_LIST
if (scanning_paused()) if (scanning_paused())
{ {
FI_add_freq_ignored(g_rx_vfo->freq_config_rx.frequency); FI_add_freq_ignored(g_rx_vfo->freq_config_rx.frequency);
@ -830,6 +831,7 @@ void MAIN_Key_STAR(bool key_pressed, bool key_held)
g_rx_reception_mode = RX_MODE_NONE; g_rx_reception_mode = RX_MODE_NONE;
FUNCTION_Select(FUNCTION_FOREGROUND); FUNCTION_Select(FUNCTION_FOREGROUND);
} }
#endif
return; return;
} }

View File

@ -173,7 +173,7 @@ void AUDIO_PlayBeep(beep_type_t Beep)
} }
// BK4819_PlayTone(ToneFrequency, true); // BK4819_PlayTone(ToneFrequency, true);
BK4819_StartTone1(ToneFrequency, 96); BK4819_StartTone1(ToneFrequency, 96, false);
SYSTEM_DelayMs(2); SYSTEM_DelayMs(2);
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);

View File

@ -881,7 +881,7 @@ void BK4819_EnableDTMF(void)
(15u << BK4819_REG_24_SHIFT_MAX_SYMBOLS)); // 0 ~ 15 (15u << BK4819_REG_24_SHIFT_MAX_SYMBOLS)); // 0 ~ 15
} }
void BK4819_StartTone1(const uint16_t frequency, const unsigned int level) void BK4819_StartTone1(const uint16_t frequency, const unsigned int level, const bool tx)
{ {
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
SYSTEM_DelayMs(2); SYSTEM_DelayMs(2);
@ -895,12 +895,16 @@ void BK4819_StartTone1(const uint16_t frequency, const unsigned int level)
BK4819_WriteRegister(0x70, BK4819_REG_70_ENABLE_TONE1 | ((level & 0x7f) << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN)); BK4819_WriteRegister(0x70, BK4819_REG_70_ENABLE_TONE1 | ((level & 0x7f) << BK4819_REG_70_SHIFT_TONE1_TUNING_GAIN));
BK4819_WriteRegister(0x30, 0); BK4819_WriteRegister(0x30, 0);
#if 1
if (!tx)
{
BK4819_WriteRegister(0x30, BK4819_WriteRegister(0x30,
BK4819_REG_30_ENABLE_AF_DAC | BK4819_REG_30_ENABLE_AF_DAC |
BK4819_REG_30_ENABLE_DISC_MODE | BK4819_REG_30_ENABLE_DISC_MODE |
BK4819_REG_30_ENABLE_TX_DSP); BK4819_REG_30_ENABLE_TX_DSP);
#else }
else
{
BK4819_WriteRegister(0x30, BK4819_WriteRegister(0x30,
BK4819_REG_30_ENABLE_VCO_CALIB | BK4819_REG_30_ENABLE_VCO_CALIB |
BK4819_REG_30_ENABLE_UNKNOWN | BK4819_REG_30_ENABLE_UNKNOWN |
@ -913,13 +917,14 @@ void BK4819_StartTone1(const uint16_t frequency, const unsigned int level)
BK4819_REG_30_ENABLE_TX_DSP | // BK4819_REG_30_ENABLE_TX_DSP | //
// BK4819_REG_30_ENABLE_RX_DSP | // BK4819_REG_30_ENABLE_RX_DSP |
0); 0);
#endif }
BK4819_WriteRegister(0x71, scale_freq(frequency)); BK4819_WriteRegister(0x71, scale_freq(frequency));
BK4819_ExitTxMute(); BK4819_ExitTxMute();
SYSTEM_DelayMs(2); SYSTEM_DelayMs(2);
if (!tx)
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
} }
@ -978,7 +983,7 @@ void BK4819_StopTones(const bool tx)
void BK4819_PlayTone(const unsigned int tone_Hz, const unsigned int delay, const unsigned int level) void BK4819_PlayTone(const unsigned int tone_Hz, const unsigned int delay, const unsigned int level)
{ {
const uint16_t prev_af = BK4819_ReadRegister(0x47); const uint16_t prev_af = BK4819_ReadRegister(0x47);
BK4819_StartTone1(tone_Hz, level); BK4819_StartTone1(tone_Hz, level, g_current_function == FUNCTION_TRANSMIT);
SYSTEM_DelayMs(delay - 2); SYSTEM_DelayMs(delay - 2);
BK4819_StopTones(g_current_function == FUNCTION_TRANSMIT); BK4819_StopTones(g_current_function == FUNCTION_TRANSMIT);
BK4819_WriteRegister(0x47, prev_af); BK4819_WriteRegister(0x47, prev_af);
@ -996,9 +1001,9 @@ void BK4819_PlayRoger(void)
#endif #endif
const uint16_t prev_af = BK4819_ReadRegister(0x47); const uint16_t prev_af = BK4819_ReadRegister(0x47);
BK4819_StartTone1(tone1_Hz, 96); BK4819_StartTone1(tone1_Hz, 96, true);
SYSTEM_DelayMs(80 - 2); SYSTEM_DelayMs(80 - 2);
BK4819_StartTone1(tone2_Hz, 96); BK4819_StartTone1(tone2_Hz, 96, true);
SYSTEM_DelayMs(80); SYSTEM_DelayMs(80);
BK4819_StopTones(true); BK4819_StopTones(true);
BK4819_WriteRegister(0x47, prev_af); BK4819_WriteRegister(0x47, prev_af);

View File

@ -103,7 +103,7 @@ void BK4819_SetCompander(const unsigned int mode);
void BK4819_DisableVox(void); void BK4819_DisableVox(void);
void BK4819_DisableDTMF(void); void BK4819_DisableDTMF(void);
void BK4819_EnableDTMF(void); void BK4819_EnableDTMF(void);
void BK4819_StartTone1(const uint16_t frequency, const unsigned int level); void BK4819_StartTone1(const uint16_t frequency, const unsigned int level, const bool tx);
void BK4819_StopTones(const bool tx); void BK4819_StopTones(const bool tx);
void BK4819_PlayTone(const unsigned int tone_Hz, const unsigned int delay, const unsigned int level); void BK4819_PlayTone(const unsigned int tone_Hz, const unsigned int delay, const unsigned int level);
void BK4819_EnterTxMute(void); void BK4819_EnterTxMute(void);

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,7 @@
#include "misc.h" #include "misc.h"
// a list of frequencies to ignore/skip when scanning // a list of frequencies to ignore/skip when scanning
uint32_t ignore_frequencies[256]; uint32_t ignore_frequencies[64];
int ignore_frequencies_count = 0; int ignore_frequencies_count = 0;
void FI_clear_freq_ignored(void) void FI_clear_freq_ignored(void)

View File

@ -220,7 +220,7 @@ void FUNCTION_Select(function_type_t Function)
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
SYSTEM_DelayMs(2); SYSTEM_DelayMs(2);
BK4819_StartTone1(500, 28); BK4819_StartTone1(500, 28, g_current_function == FUNCTION_TRANSMIT);
SYSTEM_DelayMs(2); SYSTEM_DelayMs(2);
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);

4
misc.c
View File

@ -234,7 +234,9 @@ volatile bool g_flag_tail_tone_elimination_complete;
volatile uint16_t g_boot_tick_10ms = 4000 / 10; // 4 seconds volatile uint16_t g_boot_tick_10ms = 4000 / 10; // 4 seconds
int16_t g_current_rssi[2] = {0, 0}; // now one per VFO int16_t g_current_rssi[2] = {0, 0};
uint16_t g_current_glitch[2] = {0, 0};
uint16_t g_current_noise[2] = {0, 0};
uint8_t g_mic_sensitivity_tuning; uint8_t g_mic_sensitivity_tuning;

6
misc.h
View File

@ -321,7 +321,11 @@ extern volatile bool g_next_time_slice_40ms;
extern volatile bool g_schedule_noaa; extern volatile bool g_schedule_noaa;
#endif #endif
extern volatile bool g_flag_tail_tone_elimination_complete; extern volatile bool g_flag_tail_tone_elimination_complete;
extern int16_t g_current_rssi[2]; // now one per VFO
extern int16_t g_current_rssi[2];
extern uint16_t g_current_glitch[2];
extern uint16_t g_current_noise[2];
extern volatile uint16_t g_boot_tick_10ms; extern volatile uint16_t g_boot_tick_10ms;
extern uint8_t g_mic_sensitivity_tuning; extern uint8_t g_mic_sensitivity_tuning;

View File

@ -55,27 +55,13 @@ void draw_bar(uint8_t *line, const int len, const int max_width)
for (i = 0; i < max_width; i += 2) for (i = 0; i < max_width; i += 2)
line[i] = (i <= len) ? 0x7f : 0x41; line[i] = (i <= len) ? 0x7f : 0x41;
#else #else
// segmented bar // segmented bar
for (i = 0; i < max_width; i += 4) for (i = 0; i < max_width; i += 4)
{
for (int k = i - 4; k < i && k < len; k++) for (int k = i - 4; k < i && k < len; k++)
{
if (k >= 0) if (k >= 0)
// line[k] = (k < (i - 1)) ? 0x7f : 0x00; // line[k] = (k < (i - 1)) ? 0x7f : 0x00;
if (k < (i - 1)) if (k < (i - 1))
line[k] = 0x7f; line[k] = 0x7f;
// line[k] = 0x3e;
}
}
#if 0
// top/bottom lines
for (i = 0; i < len; i += 2)
line[i] |= 0x41;
for (i &= ~3u ; i < max_width; i += 4)
line[i] = 0x41;
#endif
#endif #endif
} }
@ -179,10 +165,14 @@ void UI_drawBars(uint8_t *p, const unsigned int level)
#endif #endif
#ifdef ENABLE_RX_SIGNAL_BAR #ifdef ENABLE_RX_SIGNAL_BAR
bool UI_DisplayRSSIBar(const int16_t rssi, const bool now) bool UI_DisplayRSSIBar(const int16_t rssi, const int16_t glitch, const int16_t noise, const bool now)
{ {
if (g_eeprom.config.setting.enable_rssi_bar) if (g_eeprom.config.setting.enable_rssi_bar)
{ {
(void)glitch; // TODO:
(void)noise;
// const int16_t s0_dBm = -127; // S0 .. base level // const int16_t s0_dBm = -127; // S0 .. base level
const int16_t s0_dBm = -147; // S0 .. base level const int16_t s0_dBm = -147; // S0 .. base level
@ -245,14 +235,14 @@ void UI_drawBars(uint8_t *p, const unsigned int level)
} }
#endif #endif
void UI_update_rssi(const int16_t rssi, const int vfo) void UI_update_rssi(const int16_t rssi, const int16_t glitch, const int16_t noise, const int vfo)
{ {
#ifdef ENABLE_RX_SIGNAL_BAR #ifdef ENABLE_RX_SIGNAL_BAR
if (g_center_line == CENTER_LINE_RSSI) if (g_center_line == CENTER_LINE_RSSI)
{ // optional larger RSSI dBm, S-point and bar level { // optional larger RSSI dBm, S-point and bar level
//if (g_current_function == FUNCTION_RECEIVE && g_squelch_open) //if (g_current_function == FUNCTION_RECEIVE && g_squelch_open)
if (g_current_function == FUNCTION_RECEIVE) if (g_current_function == FUNCTION_RECEIVE)
UI_DisplayRSSIBar(rssi, true); UI_DisplayRSSIBar(rssi, glitch, noise, true);
} }
#endif #endif
@ -921,7 +911,7 @@ void UI_DisplayMain(void)
if (rx && g_eeprom.config.setting.enable_rssi_bar) if (rx && g_eeprom.config.setting.enable_rssi_bar)
{ {
g_center_line = CENTER_LINE_RSSI; g_center_line = CENTER_LINE_RSSI;
UI_DisplayRSSIBar(g_current_rssi[g_rx_vfo_num], false); UI_DisplayRSSIBar(g_current_rssi[g_rx_vfo_num], g_current_glitch[g_rx_vfo_num], g_current_noise[g_rx_vfo_num], false);
} }
else else
#endif #endif

View File

@ -34,7 +34,7 @@ extern center_line_t g_center_line;
#ifdef ENABLE_TX_AUDIO_BAR #ifdef ENABLE_TX_AUDIO_BAR
bool UI_DisplayAudioBar(const bool now); bool UI_DisplayAudioBar(const bool now);
#endif #endif
void UI_update_rssi(const int16_t rssi, const int vfo); void UI_update_rssi(const int16_t rssi, const int16_t glitch, const int16_t noise, const int vfo);
void UI_DisplayMain(void); void UI_DisplayMain(void);
#endif #endif