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_TIMING_SETTINGS := 0
ENABLE_SHOW_FREQ_IN_CHAN := 1
# smaa bolf 580 B
# smaa bold 580 B
ENABLE_SMALL_BOLD := 0
# smallest font 2 kB
ENABLE_SMALLEST_FONT := 0
@ -82,6 +82,7 @@ ENABLE_FASTER_CHANNEL_SCAN := 1
ENABLE_COPY_CHAN_TO_VFO_TO_CHAN := 1
# Tx Audio Bar 300 B
ENABLE_TX_AUDIO_BAR := 0
ENABLE_TX_AUDIO_BACKLIGHT := 0
# Side Button Menu 300 B
ENABLE_SIDE_BUTT_MENU := 0
# Key Lock 400 B
@ -471,6 +472,9 @@ endif
ifeq ($(ENABLE_TX_AUDIO_BAR),1)
CFLAGS += -DENABLE_TX_AUDIO_BAR
endif
ifeq ($(ENABLE_TX_AUDIO_BACKLIGHT),1)
CFLAGS += -DENABLE_TX_AUDIO_BACKLIGHT
endif
ifeq ($(ENABLE_COPY_CHAN_TO_VFO_TO_CHAN),1)
CFLAGS += -DENABLE_COPY_CHAN_TO_VFO_TO_CHAN
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_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_BACKLIGHT := 0 backlight will follow TX audio level
ENABLE_SIDE_BUTT_MENU := 0 enable menu option for configuring the programmable side buttons
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

View File

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

View File

@ -205,7 +205,7 @@ static void APP_process_new_receive(void)
{
FUNCTION_Select(FUNCTION_FOREGROUND);
g_update_display = true;
// g_update_status = true;
//g_update_status = true;
}
return;
@ -215,7 +215,7 @@ static void APP_process_new_receive(void)
{
case MOD_MODE_FM:
case MOD_MODE_AM:
BK4819_set_AFC(2);
BK4819_set_AFC(3);
break;
default:
case MOD_MODE_DSB:
@ -238,14 +238,17 @@ static void APP_process_new_receive(void)
g_found_ctcss = false;
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))
{
g_found_cdcss = false;
}
else
if (!flag)
// if (!flag)
if (!flag && !g_monitor_enabled) // 1of11
{
return;
}
if (g_scan_state_dir == SCAN_STATE_DIR_OFF && g_css_scan_mode == CSS_SCAN_MODE_OFF)
{ // not scanning
@ -328,32 +331,23 @@ static void APP_process_rx(void)
goto Skip;
}
switch (g_current_code_type)
if (g_found_ctcss_tick_10ms == 0)
{
default:
case CODE_TYPE_NONE:
break;
if (g_current_code_type == CODE_TYPE_CONTINUOUS_TONE && g_found_ctcss)
{
g_found_ctcss = false;
g_found_cdcss = false;
Mode = END_OF_RX_MODE_END;
goto Skip;
}
case CODE_TYPE_CONTINUOUS_TONE:
if (g_found_ctcss && g_found_ctcss_tick_10ms == 0)
{
g_found_ctcss = false;
g_found_cdcss = false;
Mode = END_OF_RX_MODE_END;
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_current_code_type == CODE_TYPE_DIGITAL || CODE_TYPE_REVERSE_DIGITAL) && g_found_cdcss)
{
g_found_ctcss = false;
g_found_cdcss = false;
Mode = END_OF_RX_MODE_END;
goto Skip;
}
}
if (g_squelch_open || g_monitor_enabled)
@ -516,7 +510,7 @@ bool APP_start_listening(void)
{
case MOD_MODE_FM:
case MOD_MODE_AM:
BK4819_set_AFC(2); // enable a bit
BK4819_set_AFC(3); // enable a bit
break;
default:
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)
break; // no interrupt flags
@ -1865,7 +1865,30 @@ void APP_process_functions(void)
case FUNCTION_TRANSMIT:
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;
case FUNCTION_NEW_RECEIVE:
@ -2387,6 +2410,8 @@ void APP_time_slice_10ms(void)
if (g_backlight_tick_10ms > 0 &&
!g_ask_to_save &&
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)
{ // 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)

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 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;
if (g_eeprom.calib.battery[5] < Voltage)
g_battery_display_level = 6;
else
if (g_eeprom.calib.battery[4] < Voltage)
g_battery_display_level = 5;
else
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;
for (i = ARRAY_SIZE(g_eeprom.calib.battery); i > 0; i--)
{
if (g_eeprom.calib.battery[i - 1] < Voltage)
{
g_battery_display_level = i;
break;
}
}
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
#ifdef ENABLE_DTMF_TIMING_SETTINGS
{"D PRE", VOICE_ID_INVALID, MENU_DTMF_PRE },
{"D1PERS", VOICE_ID_INVALID, MENU_DTMF_1ST_PERSIST },
{"DHPERS", VOICE_ID_INVALID, MENU_DTMF_HASH_PERSIST },
{"D 1PER", VOICE_ID_INVALID, MENU_DTMF_1ST_PERSIST },
{"D HPER", VOICE_ID_INVALID, MENU_DTMF_HASH_PERSIST },
{"D PER", VOICE_ID_INVALID, MENU_DTMF_PERSIST },
{"D INT", VOICE_ID_INVALID, MENU_DTMF_INTERVAL },
#endif
@ -1089,10 +1089,10 @@ void UI_DisplayMenu(void)
switch (g_menu_cursor)
{
case MENU_DTMF_PRE:
strcat(str, " PRE\n");
strcat(str, "BOT\nDELAY\n");
break;
case MENU_DTMF_1ST_PERSIST:
strcat(str, "1 CODE\nPERSIST\n");
strcat(str, "1CODE\nPERSIST\n");
break;
case MENU_DTMF_HASH_PERSIST:
strcat(str, "#\nPERSIST\n");