0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-27 22:01:26 +03:00

fixed wot I broke last time (battery bar)

This commit is contained in:
OneOfEleven 2023-12-06 12:07:13 +00:00
parent 049b2237b7
commit 496856669d
8 changed files with 105 additions and 83 deletions

View File

@ -43,7 +43,7 @@ ENABLE_BIG_FREQ := 0
ENABLE_DTMF_LIVE_DECODER := 0 ENABLE_DTMF_LIVE_DECODER := 0
ENABLE_DTMF_TIMING_SETTINGS := 0 ENABLE_DTMF_TIMING_SETTINGS := 0
ENABLE_SHOW_FREQ_IN_CHAN := 1 ENABLE_SHOW_FREQ_IN_CHAN := 1
# smaa bolf 580 B # smaa bold 580 B
ENABLE_SMALL_BOLD := 0 ENABLE_SMALL_BOLD := 0
# smallest font 2 kB # smallest font 2 kB
ENABLE_SMALLEST_FONT := 0 ENABLE_SMALLEST_FONT := 0
@ -82,6 +82,7 @@ ENABLE_FASTER_CHANNEL_SCAN := 1
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1
# Tx Audio Bar 300 B # Tx Audio Bar 300 B
ENABLE_TX_AUDIO_BAR := 0 ENABLE_TX_AUDIO_BAR := 0
ENABLE_TX_AUDIO_BACKLIGHT := 0
# Side Button Menu 300 B # Side Button Menu 300 B
ENABLE_SIDE_BUTT_MENU := 0 ENABLE_SIDE_BUTT_MENU := 0
# Key Lock 400 B # Key Lock 400 B
@ -471,6 +472,9 @@ endif
ifeq ($(ENABLE_TX_AUDIO_BAR),1) ifeq ($(ENABLE_TX_AUDIO_BAR),1)
CFLAGS += -DENABLE_TX_AUDIO_BAR CFLAGS += -DENABLE_TX_AUDIO_BAR
endif endif
ifeq ($(ENABLE_TX_AUDIO_BACKLIGHT),1)
CFLAGS += -DENABLE_TX_AUDIO_BACKLIGHT
endif
ifeq ($(ENABLE_COPY_CHAN_TO_VFO_TO_CHAN),1) ifeq ($(ENABLE_COPY_CHAN_TO_VFO_TO_CHAN),1)
CFLAGS += -DENABLE_COPY_CHAN_TO_VFO_TO_CHAN CFLAGS += -DENABLE_COPY_CHAN_TO_VFO_TO_CHAN
endif endif

View File

@ -96,6 +96,7 @@ ENABLE_SQ_OPEN_WITH_UP_DN_BUTTS := 1 open the squelch when holding down U
ENABLE_FASTER_CHANNEL_SCAN := 1 increase the channel scan speed, but also make the squelch more twitchy ENABLE_FASTER_CHANNEL_SCAN := 1 increase the channel scan speed, but also make the squelch more twitchy
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 long press M, copy channel to VFO, or VFO to channel ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1 long press M, copy channel to VFO, or VFO to channel
ENABLE_TX_AUDIO_BAR := 0 enable a menu option for showing a TX audio level bar ENABLE_TX_AUDIO_BAR := 0 enable a menu option for showing a TX audio level bar
ENABLE_TX_AUDIO_BACKLIGHT := 0 backlight will follow TX audio level
ENABLE_SIDE_BUTT_MENU := 0 enable menu option for configuring the programmable side buttons ENABLE_SIDE_BUTT_MENU := 0 enable menu option for configuring the programmable side buttons
ENABLE_KEYLOCK := 0 enable keylock menu option + keylock code ENABLE_KEYLOCK := 0 enable keylock menu option + keylock code
ENABLE_PANADAPTER := 1 centered on the selected VFO RX frequency, only shows if dual-watch is disabled ENABLE_PANADAPTER := 1 centered on the selected VFO RX frequency, only shows if dual-watch is disabled

View File

@ -117,12 +117,12 @@ void ACTION_Monitor(void)
} }
// disable monitor // disable monitor
g_monitor_enabled = false; g_monitor_enabled = false;
if (!g_squelch_open) if (!g_squelch_open)
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
if (g_scan_state_dir != SCAN_STATE_DIR_OFF) if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
g_scan_tick_10ms = g_eeprom.config.setting.scan_hold_time * 50; g_scan_tick_10ms = g_eeprom.config.setting.scan_hold_time * 50;
@ -217,37 +217,37 @@ void ACTION_Scan(bool bRestart)
RADIO_select_vfos(); RADIO_select_vfos();
GUI_SelectNextDisplay(DISPLAY_MAIN); GUI_SelectNextDisplay(DISPLAY_MAIN);
if (g_scan_state_dir != SCAN_STATE_DIR_OFF) if (g_scan_state_dir != SCAN_STATE_DIR_OFF)
{ // currently scanning { // currently scanning
if (g_scan_next_channel <= USER_CHANNEL_LAST) if (g_scan_next_channel <= USER_CHANNEL_LAST)
{ // channel mode { // channel mode
if (g_eeprom.config.setting.scan_list_default < 2) if (g_eeprom.config.setting.scan_list_default < 2)
{ // keep scanning but toggle between scan lists { // keep scanning but toggle between scan lists
//g_eeprom.config.setting.scan_list_default = (g_eeprom.config.setting.scan_list_default + 1) % 3; //g_eeprom.config.setting.scan_list_default = (g_eeprom.config.setting.scan_list_default + 1) % 3;
g_eeprom.config.setting.scan_list_default++; g_eeprom.config.setting.scan_list_default++;
// jump to the next channel // jump to the next channel
APP_channel_next(true, g_scan_state_dir); APP_channel_next(true, g_scan_state_dir);
g_scan_tick_10ms = 0; g_scan_tick_10ms = 0;
g_scan_pause_time_mode = false; g_scan_pause_time_mode = false;
g_update_status = true; g_update_status = true;
return; return;
} }
g_eeprom.config.setting.scan_list_default = 0; // back to scan list 1 - the next time we start scanning g_eeprom.config.setting.scan_list_default = 0; // back to scan list 1 - the next time we start scanning
} }
// ***************** // *****************
// stop scanning // stop scanning
APP_stop_scan(); APP_stop_scan();
g_request_display_screen = DISPLAY_MAIN; g_request_display_screen = DISPLAY_MAIN;
return; return;
@ -255,7 +255,7 @@ void ACTION_Scan(bool bRestart)
// ********************** // **********************
// start scanning // start scanning
{ {
const uint32_t freq = g_tx_vfo->freq_config_rx.frequency; const uint32_t freq = g_tx_vfo->freq_config_rx.frequency;
const frequency_band_t band = FREQUENCY_GetBand(freq); const frequency_band_t band = FREQUENCY_GetBand(freq);
@ -263,7 +263,7 @@ void ACTION_Scan(bool bRestart)
g_scan_initial_lower = FREQ_BAND_TABLE[band].lower; g_scan_initial_lower = FREQ_BAND_TABLE[band].lower;
g_scan_initial_step_size = g_tx_vfo->step_freq; g_scan_initial_step_size = g_tx_vfo->step_freq;
} }
#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)
{ {
@ -272,36 +272,36 @@ void ACTION_Scan(bool bRestart)
// freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper); } // freq = FREQUENCY_floor_to_step(freq, g_scan_initial_step_size, g_scan_initial_lower, g_scan_initial_upper); }
} }
#endif #endif
g_monitor_enabled = false; g_monitor_enabled = false;
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER); GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_SPEAKER);
RADIO_setup_registers(true); RADIO_setup_registers(true);
APP_channel_next(true, SCAN_STATE_DIR_FORWARD); APP_channel_next(true, SCAN_STATE_DIR_FORWARD);
g_scan_tick_10ms = 0; // go NOW g_scan_tick_10ms = 0; // go NOW
g_scan_pause_time_mode = false; g_scan_pause_time_mode = false;
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
AUDIO_SetVoiceID(0, VOICE_ID_SCANNING_BEGIN); AUDIO_SetVoiceID(0, VOICE_ID_SCANNING_BEGIN);
AUDIO_PlaySingleVoice(true); AUDIO_PlaySingleVoice(true);
#endif #endif
// 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[(g_rx_vfo_num + 1) & 1u] = 0; g_vfo_rssi_bar_level[(g_rx_vfo_num + 1) & 1u] = 0;
g_update_status = true; g_update_status = true;
return; return;
} }
// freq/ctcss/cdcss/search mode // freq/ctcss/cdcss/search mode
// TODO: fixme // TODO: fixme
// if (!bRestart) // if (!bRestart)
if (!bRestart && g_scan_next_channel <= USER_CHANNEL_LAST) if (!bRestart && g_scan_next_channel <= USER_CHANNEL_LAST)
{ // channel mode, keep scanning but toggle between scan lists { // channel mode, keep scanning but toggle between scan lists
@ -342,12 +342,12 @@ void ACTION_Scan(bool bRestart)
g_input_box_index = 0; g_input_box_index = 0;
(void)b1750; // stop compile warning (void)b1750; // stop compile warning
#if defined(ENABLE_ALARM) && defined(ENABLE_TX1750) #if defined(ENABLE_ALARM) && defined(ENABLE_TX1750)
g_alarm_state = b1750 ? ALARM_STATE_TX1750 : ALARM_STATE_TXALARM; g_alarm_state = b1750 ? ALARM_STATE_TX1750 : ALARM_STATE_TXALARM;
g_alarm_running_counter_10ms = 0; g_alarm_running_counter_10ms = 0;
#elif defined(ENABLE_ALARM) #elif defined(ENABLE_ALARM)
g_alarm_state = ALARM_STATE_TXALARM; g_alarm_state = ALARM_STATE_TXALARM;
g_alarm_running_counter_10ms = 0; g_alarm_running_counter_10ms = 0;
#else #else
g_alarm_state = ALARM_STATE_TX1750; g_alarm_state = ALARM_STATE_TX1750;
@ -368,14 +368,14 @@ void ACTION_Scan(bool bRestart)
{ {
if (g_fm_radio_mode) if (g_fm_radio_mode)
{ // return normal service { // return normal service
FM_turn_off(); FM_turn_off();
g_input_box_index = 0; g_input_box_index = 0;
#ifdef ENABLE_VOX #ifdef ENABLE_VOX
g_vox_resume_tick_10ms = 80; g_vox_resume_tick_10ms = 80;
#endif #endif
g_flag_reconfigure_vfos = true; g_flag_reconfigure_vfos = true;
g_request_display_screen = DISPLAY_MAIN; g_request_display_screen = DISPLAY_MAIN;
return; return;

View File

@ -205,7 +205,7 @@ 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; //g_update_status = true;
} }
return; return;
@ -215,7 +215,7 @@ static void APP_process_new_receive(void)
{ {
case MOD_MODE_FM: case MOD_MODE_FM:
case MOD_MODE_AM: case MOD_MODE_AM:
BK4819_set_AFC(2); BK4819_set_AFC(3);
break; break;
default: default:
case MOD_MODE_DSB: case MOD_MODE_DSB:
@ -238,14 +238,17 @@ static void APP_process_new_receive(void)
g_found_ctcss = false; g_found_ctcss = false;
flag = true; flag = true;
} }
if (g_cdcss_lost && g_cdcss_code_type == CDCSS_POSITIVE_CODE && (g_current_code_type == CODE_TYPE_DIGITAL || g_current_code_type == CODE_TYPE_REVERSE_DIGITAL)) if (g_cdcss_lost && g_cdcss_code_type == CDCSS_POSITIVE_CODE && (g_current_code_type == CODE_TYPE_DIGITAL || g_current_code_type == CODE_TYPE_REVERSE_DIGITAL))
{ {
g_found_cdcss = false; g_found_cdcss = false;
} }
else else
if (!flag) // if (!flag)
if (!flag && !g_monitor_enabled) // 1of11
{
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 scanning { // not scanning
@ -328,32 +331,23 @@ static void APP_process_rx(void)
goto Skip; goto Skip;
} }
switch (g_current_code_type) if (g_found_ctcss_tick_10ms == 0)
{ {
default: if (g_current_code_type == CODE_TYPE_CONTINUOUS_TONE && g_found_ctcss)
case CODE_TYPE_NONE: {
break; g_found_ctcss = false;
g_found_cdcss = false;
Mode = END_OF_RX_MODE_END;
goto Skip;
}
case CODE_TYPE_CONTINUOUS_TONE: if ((g_current_code_type == CODE_TYPE_DIGITAL || CODE_TYPE_REVERSE_DIGITAL) && g_found_cdcss)
if (g_found_ctcss && g_found_ctcss_tick_10ms == 0) {
{ g_found_ctcss = false;
g_found_ctcss = false; g_found_cdcss = false;
g_found_cdcss = false; Mode = END_OF_RX_MODE_END;
Mode = END_OF_RX_MODE_END; goto Skip;
goto Skip; }
}
break;
case CODE_TYPE_DIGITAL:
case CODE_TYPE_REVERSE_DIGITAL:
if (g_found_cdcss && g_found_cdcss_tick_10ms == 0)
{
g_found_ctcss = false;
g_found_cdcss = false;
Mode = END_OF_RX_MODE_END;
goto Skip;
}
break;
} }
if (g_squelch_open || g_monitor_enabled) if (g_squelch_open || g_monitor_enabled)
@ -516,7 +510,7 @@ bool APP_start_listening(void)
{ {
case MOD_MODE_FM: case MOD_MODE_FM:
case MOD_MODE_AM: case MOD_MODE_AM:
BK4819_set_AFC(2); // enable a bit BK4819_set_AFC(3); // enable a bit
break; break;
default: default:
case MOD_MODE_DSB: case MOD_MODE_DSB:
@ -981,6 +975,12 @@ void APP_process_radio_interrupts(void)
} }
} }
// #ifdef ENABLE_CTCSS_TAIL_PHASE_SHIFT
// if (((reg_c >> 12) & 3u) > 0)
// { // phase shift detected
// }
// #endif
if ((reg_c & (1u << 0)) == 0) if ((reg_c & (1u << 0)) == 0)
break; // no interrupt flags break; // no interrupt flags
@ -1865,7 +1865,30 @@ void APP_process_functions(void)
case FUNCTION_TRANSMIT: case FUNCTION_TRANSMIT:
if (g_eeprom.config.setting.backlight_on_tx_rx == 1 || g_eeprom.config.setting.backlight_on_tx_rx == 3) if (g_eeprom.config.setting.backlight_on_tx_rx == 1 || g_eeprom.config.setting.backlight_on_tx_rx == 3)
BACKLIGHT_turn_on(backlight_tx_rx_time_secs); {
#ifdef ENABLE_TX_AUDIO_BACKLIGHT
static unsigned int hold_10ms = 0;
uint32_t level = BK4819_GetVoiceAmplitudeOut(); // 15:0
level *= 128;
level = NUMBER_isqrt((level < 65535) ? level : 65535);
level = (level * BACKLIGHT_MAX_BRIGHTNESS) / 255; // 0 ~ BACKLIGHT_MAX_BRIGHTNESS
level = (BACKLIGHT_MAX_BRIGHTNESS / 4) + ((level * 3) / 4); // 25% ~ 100%
if (g_backlight_tick_10ms > BACKLIGHT_MAX_BRIGHTNESS || g_backlight_tick_10ms <= level)
{
g_backlight_tick_10ms = level;
hold_10ms = 20;
}
else
if (hold_10ms > 0)
hold_10ms--;
else
if (g_backlight_tick_10ms > 0)
g_backlight_tick_10ms--;
BACKLIGHT_set_brightness(g_backlight_tick_10ms);
#else
BACKLIGHT_turn_on(backlight_tx_rx_time_secs);
#endif
}
break; break;
case FUNCTION_NEW_RECEIVE: case FUNCTION_NEW_RECEIVE:
@ -2387,6 +2410,8 @@ void APP_time_slice_10ms(void)
if (g_backlight_tick_10ms > 0 && if (g_backlight_tick_10ms > 0 &&
!g_ask_to_save && !g_ask_to_save &&
g_css_scan_mode == CSS_SCAN_MODE_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF &&
((g_eeprom.config.setting.backlight_on_tx_rx != 1 && g_eeprom.config.setting.backlight_on_tx_rx != 3) || g_current_function != FUNCTION_TRANSMIT) &&
// g_current_function != FUNCTION_TRANSMIT &&
g_current_display_screen != DISPLAY_AIRCOPY) g_current_display_screen != DISPLAY_AIRCOPY)
{ // don't turn off backlight if user is in backlight menu option { // don't turn off backlight if user is in backlight menu option
if (g_current_display_screen != DISPLAY_MENU || g_menu_cursor != MENU_AUTO_BACKLITE) if (g_current_display_screen != DISPLAY_MENU || g_menu_cursor != MENU_AUTO_BACKLITE)

Binary file not shown.

Binary file not shown.

View File

@ -83,26 +83,18 @@ void BATTERY_GetReadings(const bool bDisplayBatteryLevel)
{ {
const uint8_t PreviousBatteryLevel = g_battery_display_level; const uint8_t PreviousBatteryLevel = g_battery_display_level;
const uint16_t Voltage = (g_battery_voltages[0] + g_battery_voltages[1] + g_battery_voltages[2] + g_battery_voltages[3]) / 4; const uint16_t Voltage = (g_battery_voltages[0] + g_battery_voltages[1] + g_battery_voltages[2] + g_battery_voltages[3]) / 4;
unsigned int i;
g_battery_display_level = 0; g_battery_display_level = 0;
if (g_eeprom.calib.battery[5] < Voltage) for (i = ARRAY_SIZE(g_eeprom.calib.battery); i > 0; i--)
g_battery_display_level = 6; {
else if (g_eeprom.calib.battery[i - 1] < Voltage)
if (g_eeprom.calib.battery[4] < Voltage) {
g_battery_display_level = 5; g_battery_display_level = i;
else break;
if (g_eeprom.calib.battery[3] < Voltage) }
g_battery_display_level = 4; }
else
if (g_eeprom.calib.battery[2] < Voltage)
g_battery_display_level = 3;
else
if (g_eeprom.calib.battery[1] < Voltage)
g_battery_display_level = 2;
else
if (g_eeprom.calib.battery[0] < Voltage)
g_battery_display_level = 1;
g_battery_voltage_average = (Voltage * 760) / g_eeprom.calib.battery[3]; g_battery_voltage_average = (Voltage * 760) / g_eeprom.calib.battery[3];

View File

@ -127,8 +127,8 @@ const t_menu_item g_menu_list[] =
#endif #endif
#ifdef ENABLE_DTMF_TIMING_SETTINGS #ifdef ENABLE_DTMF_TIMING_SETTINGS
{"D PRE", VOICE_ID_INVALID, MENU_DTMF_PRE }, {"D PRE", VOICE_ID_INVALID, MENU_DTMF_PRE },
{"D1PERS", VOICE_ID_INVALID, MENU_DTMF_1ST_PERSIST }, {"D 1PER", VOICE_ID_INVALID, MENU_DTMF_1ST_PERSIST },
{"DHPERS", VOICE_ID_INVALID, MENU_DTMF_HASH_PERSIST }, {"D HPER", VOICE_ID_INVALID, MENU_DTMF_HASH_PERSIST },
{"D PER", VOICE_ID_INVALID, MENU_DTMF_PERSIST }, {"D PER", VOICE_ID_INVALID, MENU_DTMF_PERSIST },
{"D INT", VOICE_ID_INVALID, MENU_DTMF_INTERVAL }, {"D INT", VOICE_ID_INVALID, MENU_DTMF_INTERVAL },
#endif #endif
@ -1089,10 +1089,10 @@ void UI_DisplayMenu(void)
switch (g_menu_cursor) switch (g_menu_cursor)
{ {
case MENU_DTMF_PRE: case MENU_DTMF_PRE:
strcat(str, " PRE\n"); strcat(str, "BOT\nDELAY\n");
break; break;
case MENU_DTMF_1ST_PERSIST: case MENU_DTMF_1ST_PERSIST:
strcat(str, "1 CODE\nPERSIST\n"); strcat(str, "1CODE\nPERSIST\n");
break; break;
case MENU_DTMF_HASH_PERSIST: case MENU_DTMF_HASH_PERSIST:
strcat(str, "#\nPERSIST\n"); strcat(str, "#\nPERSIST\n");