mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-06-18 22:29:50 +03:00
fix tx tones
This commit is contained in:
2
Makefile
2
Makefile
@ -57,7 +57,7 @@ ENABLE_CTCSS_TAIL_PHASE_SHIFT := 1
|
||||
ENABLE_CONTRAST := 0
|
||||
ENABLE_BOOT_BEEPS := 0
|
||||
ENABLE_DTMF_CALL_FLASH_LIGHT := 1
|
||||
ENABLE_FLASH_LIGHT_SOS_TONE := 0
|
||||
ENABLE_FLASH_LIGHT_SOS_TONE := 1
|
||||
ENABLE_SHOW_CHARGE_LEVEL := 0
|
||||
ENABLE_REVERSE_BAT_SYMBOL := 1
|
||||
ENABLE_FREQ_SEARCH_TIMEOUT := 0
|
||||
|
203
am_fix.c
203
am_fix.c
@ -28,72 +28,72 @@
|
||||
#include "functions.h"
|
||||
#include "misc.h"
|
||||
|
||||
#ifdef ENABLE_AM_FIX
|
||||
//#define SET_RSSI_COMP
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct
|
||||
{
|
||||
uint16_t reg_val;
|
||||
int8_t gain_dB;
|
||||
} __attribute__((packed)) t_gain_table;
|
||||
} __attribute__((packed)) t_gain_table;
|
||||
|
||||
// REG_10 AGC gain table
|
||||
//
|
||||
// <15:10> ???
|
||||
//
|
||||
// <9:8> = LNA Gain Short
|
||||
// 3 = 0dB < original value
|
||||
// 2 = -24dB // was -11
|
||||
// 1 = -30dB // was -16
|
||||
// 0 = -33dB // was -19
|
||||
//
|
||||
// <7:5> = LNA Gain
|
||||
// 7 = 0dB
|
||||
// 6 = -2dB
|
||||
// 5 = -4dB < original value
|
||||
// 4 = -6dB
|
||||
// 3 = -9dB
|
||||
// 2 = -14dB
|
||||
// 1 = -19dB
|
||||
// 0 = -24dB
|
||||
//
|
||||
// <4:3> = MIXER Gain
|
||||
// 3 = 0dB < original value
|
||||
// 2 = -3dB
|
||||
// 1 = -6dB
|
||||
// 0 = -8dB
|
||||
//
|
||||
// <2:0> = PGA Gain
|
||||
// 7 = 0dB
|
||||
// 6 = -3dB < original value
|
||||
// 5 = -6dB
|
||||
// 4 = -9dB
|
||||
// 3 = -15dB
|
||||
// 2 = -21dB
|
||||
// 1 = -27dB
|
||||
// 0 = -33dB
|
||||
// REG_10 AGC gain table
|
||||
//
|
||||
// <15:10> ???
|
||||
//
|
||||
// <9:8> = LNA Gain Short
|
||||
// 3 = 0dB < original value
|
||||
// 2 = -24dB // was -11
|
||||
// 1 = -30dB // was -16
|
||||
// 0 = -33dB // was -19
|
||||
//
|
||||
// <7:5> = LNA Gain
|
||||
// 7 = 0dB
|
||||
// 6 = -2dB
|
||||
// 5 = -4dB < original value
|
||||
// 4 = -6dB
|
||||
// 3 = -9dB
|
||||
// 2 = -14dB
|
||||
// 1 = -19dB
|
||||
// 0 = -24dB
|
||||
//
|
||||
// <4:3> = MIXER Gain
|
||||
// 3 = 0dB < original value
|
||||
// 2 = -3dB
|
||||
// 1 = -6dB
|
||||
// 0 = -8dB
|
||||
//
|
||||
// <2:0> = PGA Gain
|
||||
// 7 = 0dB
|
||||
// 6 = -3dB < original value
|
||||
// 5 = -6dB
|
||||
// 4 = -9dB
|
||||
// 3 = -15dB
|
||||
// 2 = -21dB
|
||||
// 1 = -27dB
|
||||
// 0 = -33dB
|
||||
|
||||
// front end register dB values
|
||||
//
|
||||
// these values need to be accurate for the code to properly/reliably switch
|
||||
// between table entries when adjusting the front end registers.
|
||||
//
|
||||
// these 4 tables need a measuring/calibration update
|
||||
//
|
||||
//
|
||||
// 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 !!!
|
||||
//
|
||||
//
|
||||
// front end register dB values
|
||||
//
|
||||
// these values need to be accurate for the code to properly/reliably switch
|
||||
// between table entries when adjusting the front end registers.
|
||||
//
|
||||
// these 4 tables need a measuring/calibration update
|
||||
//
|
||||
//
|
||||
// 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 !!!
|
||||
//
|
||||
//
|
||||
//// 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 lna_dB[] = { (-24), (-19), (-14), ( -9), (-6), (-4), (-2), 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};
|
||||
|
||||
// lookup table is hugely easier than writing code to do the same
|
||||
//
|
||||
static const t_gain_table gain_table[] =
|
||||
{
|
||||
// lookup table is hugely easier than writing code to do the same
|
||||
//
|
||||
static const t_gain_table gain_table[] =
|
||||
{
|
||||
{0x03BE, -7}, // 3 5 3 6 .. 0dB -4dB 0dB -3dB .. -7dB original
|
||||
|
||||
#ifdef ENABLE_AM_FIX_TEST1
|
||||
@ -105,9 +105,9 @@
|
||||
{0x015E, -47}, // 2 .. 1 2 3 6 .. -30dB -14dB 0dB -3dB .. -47dB
|
||||
{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
|
||||
};
|
||||
};
|
||||
|
||||
static const unsigned int original_index = 1;
|
||||
static const unsigned int original_index = 1;
|
||||
|
||||
#else
|
||||
{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
|
||||
{0x03DF, -2}, // 95 .. 3 6 3 7 .. 0dB -2dB 0dB 0dB .. -2dB
|
||||
{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
|
||||
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
// display update rate
|
||||
static const unsigned int display_update_rate = 250 / 10; // max 250ms display update rate
|
||||
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
|
||||
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};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// used simply to detect a changed gain setting
|
||||
unsigned int gain_table_index_prev[2] = {0, 0};
|
||||
// used simply to detect a changed gain setting
|
||||
unsigned int gain_table_index_prev[2] = {0, 0};
|
||||
|
||||
// to help reduce gain hunting, peak hold count down tick
|
||||
unsigned int hold_counter[2] = {0, 0};
|
||||
// to help reduce gain hunting, peak hold count down tick
|
||||
unsigned int hold_counter[2] = {0, 0};
|
||||
|
||||
// holds the previous RSSI level .. we do an average of old + new RSSI reading
|
||||
int16_t prev_rssi[2] = {0, 0};
|
||||
// holds the previous RSSI level .. we do an average of old + new RSSI reading
|
||||
int16_t prev_rssi[2] = {0, 0};
|
||||
|
||||
// used to correct the RSSI readings after our RF gain adjustments
|
||||
int16_t rssi_gain_diff[2] = {0, 0};
|
||||
// used to correct the RSSI readings after our RF gain adjustments
|
||||
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
|
||||
const int16_t desired_rssi = (-89 + 160) * 2;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void AM_fix_init(void)
|
||||
{ // called at boot-up
|
||||
void AM_fix_init(void)
|
||||
{ // called at boot-up
|
||||
unsigned int vfo;
|
||||
for (vfo = 0; vfo < 2; vfo++)
|
||||
{
|
||||
@ -252,12 +252,12 @@
|
||||
#else
|
||||
gain_table_index[vfo] = original_index; // re-start with original QS setting
|
||||
#endif
|
||||
// AM_fix_reset(vfo);
|
||||
}
|
||||
//AM_fix_reset(vfo);
|
||||
}
|
||||
}
|
||||
|
||||
void AM_fix_reset(const int vfo)
|
||||
{ // reset the AM fixer upper
|
||||
void AM_fix_reset(const int vfo)
|
||||
{ // reset the AM fixer upper
|
||||
|
||||
if (vfo < 0 || vfo >= 2)
|
||||
return;
|
||||
@ -271,21 +271,21 @@
|
||||
rssi_gain_diff[vfo] = 0;
|
||||
gain_table_index_prev[vfo] = 0;
|
||||
#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
|
||||
// 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
|
||||
}
|
||||
}
|
||||
|
||||
// adjust the RX gain to try and prevent the AM demodulator from
|
||||
// saturating (distorted AM audio)
|
||||
//
|
||||
// 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
|
||||
// playing with the RF front end gain setting
|
||||
//
|
||||
void AM_fix_10ms(const int vfo)
|
||||
{
|
||||
// adjust the RX gain to try and prevent the AM demodulator from
|
||||
// saturating (distorted AM audio)
|
||||
//
|
||||
// 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
|
||||
// playing with the RF front end gain setting
|
||||
//
|
||||
void AM_fix_10ms(const int vfo)
|
||||
{
|
||||
int16_t diff_dB;
|
||||
int16_t rssi;
|
||||
|
||||
@ -328,9 +328,14 @@
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
{
|
||||
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)
|
||||
{
|
||||
g_current_rssi[vfo] = new_rssi;
|
||||
g_current_glitch[vfo] = new_glitch;
|
||||
g_current_noise[vfo] = new_noise;
|
||||
|
||||
if (display_update_tick == 0)
|
||||
{ // trigger a display update
|
||||
@ -387,9 +392,9 @@
|
||||
else
|
||||
{ // incrementally reduce the gain .. taking it slow improves noise/spike immunity
|
||||
|
||||
// if (index >= (1 + 3) && diff_dB >= 3)
|
||||
// index -= 3; // faster gain reduction
|
||||
// else
|
||||
//if (index >= (1 + 3) && diff_dB >= 3)
|
||||
// index -= 3; // faster gain reduction
|
||||
//else
|
||||
if (index > 1)
|
||||
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
|
||||
|
||||
#ifdef SET_RSSI_COMP
|
||||
// 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;
|
||||
#endif
|
||||
}
|
||||
|
||||
// save the corrected RSSI level
|
||||
@ -440,9 +447,9 @@
|
||||
g_update_display = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
|
||||
void AM_fix_print_data(const int vfo, char *s)
|
||||
{
|
||||
@ -458,6 +465,4 @@
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
14
am_fix.h
14
am_fix.h
@ -16,20 +16,18 @@
|
||||
*/
|
||||
|
||||
#ifndef AM_FIXH
|
||||
#define AM_FIXH
|
||||
|
||||
#include <stdint.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_reset(const int vfo);
|
||||
void AM_fix_10ms(const int vfo);
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
void AM_fix_init(void);
|
||||
void AM_fix_reset(const int vfo);
|
||||
void AM_fix_10ms(const int vfo);
|
||||
#ifdef ENABLE_AM_FIX_SHOW_DATA
|
||||
void AM_fix_print_data(const int vfo, char *s);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -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)
|
||||
{
|
||||
int16_t rssi = BK4819_GetRSSI();
|
||||
uint8_t glitch = BK4819_GetGlitchIndicator();
|
||||
uint8_t noise = BK4819_GetExNoiceIndicator();
|
||||
|
||||
#ifdef ENABLE_AM_FIX
|
||||
// add RF gain adjust compensation
|
||||
@ -94,8 +96,10 @@ static void APP_update_rssi(const int vfo)
|
||||
return; // no change
|
||||
|
||||
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)
|
||||
@ -1560,7 +1564,7 @@ void APP_process_flash_light_10ms(void)
|
||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_FLASHLIGHT);
|
||||
#ifdef ENABLE_FLASH_LIGHT_SOS_TONE
|
||||
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
|
||||
}
|
||||
}
|
||||
|
@ -819,6 +819,7 @@ void MAIN_Key_STAR(bool key_pressed, bool key_held)
|
||||
if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
|
||||
{ // RF scanning
|
||||
|
||||
#ifdef ENABLE_SCAN_IGNORE_LIST
|
||||
if (scanning_paused())
|
||||
{
|
||||
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;
|
||||
FUNCTION_Select(FUNCTION_FOREGROUND);
|
||||
}
|
||||
#endif
|
||||
|
||||
return;
|
||||
}
|
||||
|
2
audio.c
2
audio.c
@ -173,7 +173,7 @@ void AUDIO_PlayBeep(beep_type_t Beep)
|
||||
}
|
||||
|
||||
// BK4819_PlayTone(ToneFrequency, true);
|
||||
BK4819_StartTone1(ToneFrequency, 96);
|
||||
BK4819_StartTone1(ToneFrequency, 96, false);
|
||||
|
||||
SYSTEM_DelayMs(2);
|
||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
|
||||
|
@ -881,7 +881,7 @@ void BK4819_EnableDTMF(void)
|
||||
(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);
|
||||
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(0x30, 0);
|
||||
#if 1
|
||||
|
||||
if (!tx)
|
||||
{
|
||||
BK4819_WriteRegister(0x30,
|
||||
BK4819_REG_30_ENABLE_AF_DAC |
|
||||
BK4819_REG_30_ENABLE_DISC_MODE |
|
||||
BK4819_REG_30_ENABLE_TX_DSP);
|
||||
#else
|
||||
}
|
||||
else
|
||||
{
|
||||
BK4819_WriteRegister(0x30,
|
||||
BK4819_REG_30_ENABLE_VCO_CALIB |
|
||||
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_RX_DSP |
|
||||
0);
|
||||
#endif
|
||||
}
|
||||
|
||||
BK4819_WriteRegister(0x71, scale_freq(frequency));
|
||||
|
||||
BK4819_ExitTxMute();
|
||||
|
||||
SYSTEM_DelayMs(2);
|
||||
if (!tx)
|
||||
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)
|
||||
{
|
||||
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);
|
||||
BK4819_StopTones(g_current_function == FUNCTION_TRANSMIT);
|
||||
BK4819_WriteRegister(0x47, prev_af);
|
||||
@ -996,9 +1001,9 @@ void BK4819_PlayRoger(void)
|
||||
#endif
|
||||
|
||||
const uint16_t prev_af = BK4819_ReadRegister(0x47);
|
||||
BK4819_StartTone1(tone1_Hz, 96);
|
||||
BK4819_StartTone1(tone1_Hz, 96, true);
|
||||
SYSTEM_DelayMs(80 - 2);
|
||||
BK4819_StartTone1(tone2_Hz, 96);
|
||||
BK4819_StartTone1(tone2_Hz, 96, true);
|
||||
SYSTEM_DelayMs(80);
|
||||
BK4819_StopTones(true);
|
||||
BK4819_WriteRegister(0x47, prev_af);
|
||||
|
@ -103,7 +103,7 @@ void BK4819_SetCompander(const unsigned int mode);
|
||||
void BK4819_DisableVox(void);
|
||||
void BK4819_DisableDTMF(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_PlayTone(const unsigned int tone_Hz, const unsigned int delay, const unsigned int level);
|
||||
void BK4819_EnterTxMute(void);
|
||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
#include "misc.h"
|
||||
|
||||
// a list of frequencies to ignore/skip when scanning
|
||||
uint32_t ignore_frequencies[256];
|
||||
uint32_t ignore_frequencies[64];
|
||||
int ignore_frequencies_count = 0;
|
||||
|
||||
void FI_clear_freq_ignored(void)
|
||||
|
@ -220,7 +220,7 @@ void FUNCTION_Select(function_type_t Function)
|
||||
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
|
||||
|
||||
SYSTEM_DelayMs(2);
|
||||
BK4819_StartTone1(500, 28);
|
||||
BK4819_StartTone1(500, 28, g_current_function == FUNCTION_TRANSMIT);
|
||||
SYSTEM_DelayMs(2);
|
||||
|
||||
GPIO_SetBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
|
||||
|
4
misc.c
4
misc.c
@ -234,7 +234,9 @@ volatile bool g_flag_tail_tone_elimination_complete;
|
||||
|
||||
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;
|
||||
|
||||
|
6
misc.h
6
misc.h
@ -321,7 +321,11 @@ extern volatile bool g_next_time_slice_40ms;
|
||||
extern volatile bool g_schedule_noaa;
|
||||
#endif
|
||||
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 uint8_t g_mic_sensitivity_tuning;
|
||||
|
26
ui/main.c
26
ui/main.c
@ -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)
|
||||
line[i] = (i <= len) ? 0x7f : 0x41;
|
||||
#else
|
||||
|
||||
// segmented bar
|
||||
for (i = 0; i < max_width; i += 4)
|
||||
{
|
||||
for (int k = i - 4; k < i && k < len; k++)
|
||||
{
|
||||
if (k >= 0)
|
||||
// line[k] = (k < (i - 1)) ? 0x7f : 0x00;
|
||||
if (k < (i - 1))
|
||||
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
|
||||
}
|
||||
|
||||
@ -179,10 +165,14 @@ void UI_drawBars(uint8_t *p, const unsigned int level)
|
||||
#endif
|
||||
|
||||
#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)
|
||||
{
|
||||
|
||||
(void)glitch; // TODO:
|
||||
(void)noise;
|
||||
|
||||
// const int16_t s0_dBm = -127; // 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
|
||||
|
||||
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
|
||||
if (g_center_line == CENTER_LINE_RSSI)
|
||||
{ // optional larger RSSI dBm, S-point and bar level
|
||||
//if (g_current_function == FUNCTION_RECEIVE && g_squelch_open)
|
||||
if (g_current_function == FUNCTION_RECEIVE)
|
||||
UI_DisplayRSSIBar(rssi, true);
|
||||
UI_DisplayRSSIBar(rssi, glitch, noise, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -921,7 +911,7 @@ void UI_DisplayMain(void)
|
||||
if (rx && g_eeprom.config.setting.enable_rssi_bar)
|
||||
{
|
||||
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
|
||||
#endif
|
||||
|
@ -34,7 +34,7 @@ extern center_line_t g_center_line;
|
||||
#ifdef ENABLE_TX_AUDIO_BAR
|
||||
bool UI_DisplayAudioBar(const bool now);
|
||||
#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);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user