Simplify gSchedulePowerSave logic
There was quite convoluted logic there, and what I believe, was a bug.
Rationale:
Both,
- gBatterySaveCountdown_10ms = battery_save_count_10ms;, and
- gSchedulePowerSave = false
are always executed inside FUNCTION_Select().
So the code is equivalent to:
if (any of those OR'd) {
gBatterySaveCountdown_10ms = battery_save_count_10ms;
gSchedulePowerSave = false; (but only if we have NOAA disabled)
} else {
[other stuff from FUNCTION_Select()]
gBatterySaveCountdown_10ms = battery_save_count_10ms;
gSchedulePowerSave = false; (regarless of having NOAA or not)
}
So:
- OR is true, have NOAA-> don't clear gSchedulePowerSave
-> implies we will enter here, again, until the OR is false, but only if we have NOAA.
- OR is False -> clear gSchedulePowerSave.
Moreover, checking with DualTachyon code at
6f8afac886/app/app.c (L747)
gSchedulePowerSave is always set to false if it was true.
This commit is contained in:
37
app/app.c
37
app/app.c
@@ -926,46 +926,35 @@ void APP_Update(void)
|
||||
#endif
|
||||
|
||||
if (gSchedulePowerSave) {
|
||||
if (gPttIsPressed ||
|
||||
gKeyBeingHeld ||
|
||||
gEeprom.BATTERY_SAVE == 0 ||
|
||||
gScanStateDir != SCAN_OFF ||
|
||||
gCssBackgroundScan ||
|
||||
gScreenToDisplay != DISPLAY_MAIN
|
||||
if (gPttIsPressed
|
||||
|| gKeyBeingHeld
|
||||
|| gEeprom.BATTERY_SAVE == 0
|
||||
|| gScanStateDir != SCAN_OFF
|
||||
|| gCssBackgroundScan
|
||||
|| gScreenToDisplay != DISPLAY_MAIN
|
||||
#ifdef ENABLE_FMRADIO
|
||||
|| gFmRadioMode
|
||||
#endif
|
||||
#ifdef ENABLE_DTMF_CALLING
|
||||
|| gDTMF_CallState != DTMF_CALL_STATE_NONE
|
||||
#endif
|
||||
){
|
||||
gBatterySaveCountdown_10ms = battery_save_count_10ms;
|
||||
}
|
||||
else
|
||||
#ifdef ENABLE_NOAA
|
||||
if ((!IS_NOAA_CHANNEL(gEeprom.ScreenChannel[0]) && !IS_NOAA_CHANNEL(gEeprom.ScreenChannel[1])) || !gIsNoaaMode)
|
||||
|| (gIsNoaaMode && (IS_NOAA_CHANNEL(gEeprom.ScreenChannel[0]) || IS_NOAA_CHANNEL(gEeprom.ScreenChannel[1])))
|
||||
#endif
|
||||
{
|
||||
//if (gCurrentFunction != FUNCTION_POWER_SAVE)
|
||||
) {
|
||||
gBatterySaveCountdown_10ms = battery_save_count_10ms;
|
||||
} else {
|
||||
FUNCTION_Select(FUNCTION_POWER_SAVE);
|
||||
}
|
||||
#ifdef ENABLE_NOAA
|
||||
else
|
||||
{
|
||||
gBatterySaveCountdown_10ms = battery_save_count_10ms;
|
||||
}
|
||||
#else
|
||||
gSchedulePowerSave = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
gSchedulePowerSave = false;
|
||||
}
|
||||
|
||||
if (gPowerSaveCountdownExpired && gCurrentFunction == FUNCTION_POWER_SAVE
|
||||
#ifdef ENABLE_VOICE
|
||||
&& gVoiceWriteIndex == 0
|
||||
#endif
|
||||
)
|
||||
{
|
||||
) {
|
||||
static bool goToSleep;
|
||||
// wake up, enable RX then go back to sleep
|
||||
if (gRxIdleMode)
|
||||
|
Reference in New Issue
Block a user