0
mirror of https://github.com/OneOfEleven/uv-k5-firmware-custom.git synced 2025-04-28 22:31:25 +03:00

I broke power/battery save .. now fixed

This commit is contained in:
OneOfEleven 2023-09-18 21:18:00 +01:00
parent 787a705b45
commit 28ed7e7842
11 changed files with 40 additions and 42 deletions

View File

@ -98,7 +98,7 @@ static void APP_CheckForIncoming(void)
} }
gDualWatchCountdown_10ms = dual_watch_count_after_rx_10ms; gDualWatchCountdown_10ms = dual_watch_count_after_rx_10ms;
gDualWatchCountdownExpired = false; gScheduleDualWatch = false;
// let the user see DW is not active // let the user see DW is not active
gDualWatchActive = false; gDualWatchActive = false;
@ -167,7 +167,7 @@ static void APP_HandleIncoming(void)
if (gRxReceptionMode == RX_MODE_DETECTED) if (gRxReceptionMode == RX_MODE_DETECTED)
{ {
gDualWatchCountdown_10ms = dual_watch_count_after_1_10ms; gDualWatchCountdown_10ms = dual_watch_count_after_1_10ms;
gDualWatchCountdownExpired = false; gScheduleDualWatch = false;
gRxReceptionMode = RX_MODE_LISTENING; gRxReceptionMode = RX_MODE_LISTENING;
@ -450,7 +450,7 @@ void APP_StartListening(FUNCTION_Type_t Function)
if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF)
{ {
gDualWatchCountdown_10ms = dual_watch_count_after_2_10ms; gDualWatchCountdown_10ms = dual_watch_count_after_2_10ms;
gDualWatchCountdownExpired = false; gScheduleDualWatch = false;
gRxVfoIsActive = true; gRxVfoIsActive = true;
@ -945,13 +945,13 @@ void APP_CheckRadioInterrupts(void)
if (gCurrentFunction == FUNCTION_POWER_SAVE && !gRxIdleMode) if (gCurrentFunction == FUNCTION_POWER_SAVE && !gRxIdleMode)
{ {
gBatterySave_10ms = 20; // 200ms gBatterySave_10ms = 20; // 200ms
gBatterySaveExpired = false; gBatterySaveCountdownExpired = 0;
} }
if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && (gBatterySaveCountdownExpired || gDualWatchCountdown_10ms < dual_watch_count_after_vox_10ms)) if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && (gScheduleDualWatch || gDualWatchCountdown_10ms < dual_watch_count_after_vox_10ms))
{ {
gDualWatchCountdown_10ms = dual_watch_count_after_vox_10ms; gDualWatchCountdown_10ms = dual_watch_count_after_vox_10ms;
gDualWatchCountdownExpired = false; gScheduleDualWatch = false;
// let the user see DW is not active // let the user see DW is not active
gDualWatchActive = false; gDualWatchActive = false;
@ -1182,9 +1182,9 @@ void APP_Update(void)
if (gScreenToDisplay != DISPLAY_SCANNER && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) if (gScreenToDisplay != DISPLAY_SCANNER && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF)
{ {
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
if (gDualWatchCountdownExpired && gVoiceWriteIndex == 0) if (gScheduleDualWatch && gVoiceWriteIndex == 0)
#else #else
if (gDualWatchCountdownExpired) if (gScheduleDualWatch)
#endif #endif
{ {
if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF) if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF)
@ -1196,8 +1196,6 @@ void APP_Update(void)
gDTMF_CallState == DTMF_CALL_STATE_NONE && gDTMF_CallState == DTMF_CALL_STATE_NONE &&
gCurrentFunction != FUNCTION_POWER_SAVE) gCurrentFunction != FUNCTION_POWER_SAVE)
{ {
gDualWatchCountdownExpired = false;
DUALWATCH_Alternate(); // toggle between the two VFO's DUALWATCH_Alternate(); // toggle between the two VFO's
if (gRxVfoIsActive && gScreenToDisplay == DISPLAY_MAIN) if (gRxVfoIsActive && gScreenToDisplay == DISPLAY_MAIN)
@ -1206,6 +1204,7 @@ void APP_Update(void)
gRxVfoIsActive = false; gRxVfoIsActive = false;
gScanPauseMode = false; gScanPauseMode = false;
gRxReceptionMode = RX_MODE_NONE; gRxReceptionMode = RX_MODE_NONE;
gScheduleDualWatch = false;
} }
} }
} }
@ -1226,7 +1225,7 @@ void APP_Update(void)
if (gEeprom.VOX_SWITCH) if (gEeprom.VOX_SWITCH)
APP_HandleVox(); APP_HandleVox();
if (gBatterySaveCountdownExpired) if (gSchedulePowerSave)
{ {
#ifdef ENABLE_NOAA #ifdef ENABLE_NOAA
if ( if (
@ -1242,7 +1241,6 @@ void APP_Update(void)
gDTMF_CallState != DTMF_CALL_STATE_NONE) gDTMF_CallState != DTMF_CALL_STATE_NONE)
{ {
gBatterySaveCountdown_10ms = battery_save_count_10ms; gBatterySaveCountdown_10ms = battery_save_count_10ms;
gBatterySaveCountdownExpired = false;
} }
else else
if ((IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[0]) && IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[1])) || !gIsNoaaMode) if ((IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[0]) && IS_NOT_NOAA_CHANNEL(gEeprom.ScreenChannel[1])) || !gIsNoaaMode)
@ -1252,7 +1250,6 @@ void APP_Update(void)
else else
{ {
gBatterySaveCountdown_10ms = battery_save_count_10ms; gBatterySaveCountdown_10ms = battery_save_count_10ms;
gBatterySaveCountdownExpired = false;
} }
#else #else
if ( if (
@ -1268,19 +1265,20 @@ void APP_Update(void)
gDTMF_CallState != DTMF_CALL_STATE_NONE) gDTMF_CallState != DTMF_CALL_STATE_NONE)
{ {
gBatterySaveCountdown_10ms = battery_save_count_10ms; gBatterySaveCountdown_10ms = battery_save_count_10ms;
gBatterySaveCountdownExpired = false;
} }
else else
{ {
FUNCTION_Select(FUNCTION_POWER_SAVE); FUNCTION_Select(FUNCTION_POWER_SAVE);
} }
gSchedulePowerSave = false;
#endif #endif
} }
#ifdef ENABLE_VOICE #ifdef ENABLE_VOICE
if (gBatterySaveExpired && gCurrentFunction == FUNCTION_POWER_SAVE && gVoiceWriteIndex == 0) if (gBatterySaveCountdownExpired && gCurrentFunction == FUNCTION_POWER_SAVE && gVoiceWriteIndex == 0)
#else #else
if (gBatterySaveExpired && gCurrentFunction == FUNCTION_POWER_SAVE) if (gBatterySaveCountdownExpired && gCurrentFunction == FUNCTION_POWER_SAVE)
#endif #endif
{ {
if (gRxIdleMode) if (gRxIdleMode)
@ -1300,8 +1298,6 @@ void APP_Update(void)
FUNCTION_Init(); FUNCTION_Init();
gBatterySave_10ms = 10; // 100ms gBatterySave_10ms = 10; // 100ms
gBatterySaveExpired = false;
gRxIdleMode = false; gRxIdleMode = false;
} }
else else
@ -1311,8 +1307,6 @@ void APP_Update(void)
UI_UpdateRSSI(gCurrentRSSI); UI_UpdateRSSI(gCurrentRSSI);
gBatterySave_10ms = gEeprom.BATTERY_SAVE * 10; gBatterySave_10ms = gEeprom.BATTERY_SAVE * 10;
gBatterySaveExpired = false;
gRxIdleMode = true; gRxIdleMode = true;
BK4819_DisableVox(); BK4819_DisableVox();
@ -1329,8 +1323,9 @@ void APP_Update(void)
gUpdateRSSI = true; gUpdateRSSI = true;
gBatterySave_10ms = 10; // 100ms gBatterySave_10ms = 10; // 100ms
gBatterySaveExpired = false;
} }
gBatterySaveCountdownExpired = false;
} }
} }

BIN
firmware

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -86,11 +86,9 @@ void FUNCTION_Init(void)
void FUNCTION_Select(FUNCTION_Type_t Function) void FUNCTION_Select(FUNCTION_Type_t Function)
{ {
FUNCTION_Type_t PreviousFunction; FUNCTION_Type_t PreviousFunction = gCurrentFunction;
bool bWasPowerSave; bool bWasPowerSave = (PreviousFunction == FUNCTION_POWER_SAVE);
PreviousFunction = gCurrentFunction;
bWasPowerSave = (PreviousFunction == FUNCTION_POWER_SAVE);
gCurrentFunction = Function; gCurrentFunction = Function;
if (bWasPowerSave) if (bWasPowerSave)
@ -135,7 +133,8 @@ void FUNCTION_Select(FUNCTION_Type_t Function)
case FUNCTION_POWER_SAVE: case FUNCTION_POWER_SAVE:
gBatterySave_10ms = gEeprom.BATTERY_SAVE * 10; gBatterySave_10ms = gEeprom.BATTERY_SAVE * 10;
gBatterySaveExpired = false;
gBatterySaveCountdownExpired = false;
gRxIdleMode = true; gRxIdleMode = true;
@ -199,7 +198,7 @@ void FUNCTION_Select(FUNCTION_Type_t Function)
} }
gBatterySaveCountdown_10ms = battery_save_count_10ms; gBatterySaveCountdown_10ms = battery_save_count_10ms;
gBatterySaveCountdownExpired = false; gSchedulePowerSave = false;
#if defined(ENABLE_FMRADIO) #if defined(ENABLE_FMRADIO)
gFM_RestoreCountdown = 0; gFM_RestoreCountdown = 0;

View File

@ -33,7 +33,6 @@ bool gLowBatteryBlink;
uint16_t gBatteryCheckCounter; uint16_t gBatteryCheckCounter;
volatile uint16_t gBatterySave_10ms; volatile uint16_t gBatterySave_10ms;
volatile bool gBatterySaveExpired;
void BATTERY_GetReadings(bool bDisplayBatteryLevel) void BATTERY_GetReadings(bool bDisplayBatteryLevel)
{ {

View File

@ -32,7 +32,6 @@ extern bool gLowBatteryBlink;
extern uint16_t gBatteryCheckCounter; extern uint16_t gBatteryCheckCounter;
extern volatile uint16_t gBatterySave_10ms; extern volatile uint16_t gBatterySave_10ms;
extern volatile bool gBatterySaveExpired;
void BATTERY_GetReadings(bool bDisplayBatteryLevel); void BATTERY_GetReadings(bool bDisplayBatteryLevel);

3
misc.c
View File

@ -83,6 +83,9 @@ uint8_t gMR_ChannelAttributes[207];
volatile uint16_t gBatterySaveCountdown_10ms = battery_save_count_10ms; volatile uint16_t gBatterySaveCountdown_10ms = battery_save_count_10ms;
volatile bool gBatterySaveCountdownExpired; volatile bool gBatterySaveCountdownExpired;
volatile bool gSchedulePowerSave;
volatile bool gScheduleDualWatch = true;
volatile uint16_t gDualWatchCountdown_10ms; volatile uint16_t gDualWatchCountdown_10ms;
volatile bool gDualWatchCountdownExpired = true; volatile bool gDualWatchCountdownExpired = true;

3
misc.h
View File

@ -140,8 +140,11 @@ extern uint16_t gEEPROM_1F8C;
extern uint8_t gMR_ChannelAttributes[207]; extern uint8_t gMR_ChannelAttributes[207];
extern volatile uint16_t gBatterySaveCountdown_10ms; extern volatile uint16_t gBatterySaveCountdown_10ms;
extern volatile bool gSchedulePowerSave;
extern volatile bool gBatterySaveCountdownExpired; extern volatile bool gBatterySaveCountdownExpired;
extern volatile bool gScheduleDualWatch;
extern volatile uint16_t gDualWatchCountdown_10ms; extern volatile uint16_t gDualWatchCountdown_10ms;
extern volatile bool gDualWatchCountdownExpired; extern volatile bool gDualWatchCountdownExpired;
extern bool gDualWatchActive; extern bool gDualWatchActive;

View File

@ -877,7 +877,7 @@ void RADIO_PrepareTX(void)
if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF)
{ {
gDualWatchCountdown_10ms = dual_watch_count_after_tx_10ms; gDualWatchCountdown_10ms = dual_watch_count_after_tx_10ms;
gDualWatchCountdownExpired = false; gScheduleDualWatch = false;
if (!gRxVfoIsActive) if (!gRxVfoIsActive)
{ {

View File

@ -70,14 +70,14 @@ void SystickHandler(void)
DECREMENT(gFoundCTCSSCountdown_10ms); DECREMENT(gFoundCTCSSCountdown_10ms);
if (gCurrentFunction == FUNCTION_FOREGROUND) if (gCurrentFunction == FUNCTION_FOREGROUND)
DECREMENT_AND_TRIGGER(gBatterySaveCountdown_10ms, gBatterySaveCountdownExpired); DECREMENT_AND_TRIGGER(gBatterySaveCountdown_10ms, gSchedulePowerSave);
if (gCurrentFunction == FUNCTION_POWER_SAVE) if (gCurrentFunction == FUNCTION_POWER_SAVE)
DECREMENT_AND_TRIGGER(gBatterySave_10ms, gBatterySaveExpired); DECREMENT_AND_TRIGGER(gBatterySave_10ms, gBatterySaveCountdownExpired);
if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH != DUAL_WATCH_OFF)
if (gCurrentFunction != FUNCTION_MONITOR && gCurrentFunction != FUNCTION_TRANSMIT && gCurrentFunction != FUNCTION_RECEIVE) if (gCurrentFunction != FUNCTION_MONITOR && gCurrentFunction != FUNCTION_TRANSMIT && gCurrentFunction != FUNCTION_RECEIVE)
DECREMENT_AND_TRIGGER(gDualWatchCountdown_10ms, gDualWatchCountdownExpired); DECREMENT_AND_TRIGGER(gDualWatchCountdown_10ms, gScheduleDualWatch);
#ifdef ENABLE_NOAA #ifdef ENABLE_NOAA
if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH == DUAL_WATCH_OFF) if (gScanState == SCAN_OFF && gCssScanMode == CSS_SCAN_MODE_OFF && gEeprom.DUAL_WATCH == DUAL_WATCH_OFF)