extend power statemachine
This commit is contained in:
@@ -9,6 +9,7 @@ uint64_t measure_timer = 0;
|
||||
POWERSTATES powerstate = off;
|
||||
|
||||
Button buttonPower(PWR_BTN, 250UL, 1U, 0);
|
||||
extern OtaProcess_class ota;
|
||||
|
||||
Battery battery(VBATTMIN, VBATTMAX, MEAS_ADC, &getvbatt);
|
||||
|
||||
@@ -46,7 +47,7 @@ void powerOff(void)
|
||||
digitalWrite(DAC_SDMODE, LOW);
|
||||
digitalWrite(PWR_HOLD, LOW);
|
||||
delay(1000);
|
||||
ESP.restart();
|
||||
// ESP.restart();
|
||||
}
|
||||
|
||||
bool measureBattery(void)
|
||||
@@ -83,6 +84,7 @@ void handlePowerState(void)
|
||||
powerstate = poweringOn;
|
||||
}
|
||||
powerOff();
|
||||
SetLedColor(CRGB::Red);
|
||||
log_w("Powered-off");
|
||||
}
|
||||
break;
|
||||
@@ -91,17 +93,22 @@ void handlePowerState(void)
|
||||
if (buttonPower.pressedFor(POWERBUTTONDELAY))
|
||||
{
|
||||
powerstate = poweringOn2;
|
||||
SetLedColor(CRGB::White);
|
||||
|
||||
log_i("poweron 3/3 => Go");
|
||||
}
|
||||
else if (buttonPower.pressedFor(500))
|
||||
else if (buttonPower.pressedFor(POWERBUTTONDELAY / 2))
|
||||
{
|
||||
log_i("poweron 2/3");
|
||||
SetLedColor(CRGB::WhiteSmoke);
|
||||
}
|
||||
else if (buttonPower.pressedFor(200))
|
||||
{
|
||||
log_i("poweron 1/3");
|
||||
SetLedColor(CRGB::GhostWhite);
|
||||
}
|
||||
else
|
||||
|
||||
if (!buttonread)
|
||||
{
|
||||
powerstate = off;
|
||||
}
|
||||
@@ -119,12 +126,21 @@ void handlePowerState(void)
|
||||
// powerstate = lowBatt;
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
log_i("Release for poweron, hold for %d to OTA", (POWERBUTTONOTADELAY - buttonPower.getPressedFor()));
|
||||
}
|
||||
if (buttonPower.pressedFor(POWERBUTTONOTADELAY))
|
||||
{
|
||||
powerstate = overTheAir;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case powerinit:
|
||||
{
|
||||
// init all
|
||||
log_i("powerinit");
|
||||
SetLedColor(CRGB::Green);
|
||||
powerstate = on;
|
||||
}
|
||||
break;
|
||||
@@ -149,15 +165,19 @@ void handlePowerState(void)
|
||||
{
|
||||
powerstate = poweringOff2;
|
||||
setAudioState(false);
|
||||
SetLedColor(CRGB::Red, true);
|
||||
|
||||
log_w("poweringoff: 3/3 ==> powerOff");
|
||||
}
|
||||
else if (buttonPower.pressedFor(500))
|
||||
{
|
||||
log_w("poweringoff: 2/3");
|
||||
SetLedColor(CRGB::Orange, true);
|
||||
}
|
||||
else if (buttonPower.pressedFor(200))
|
||||
{
|
||||
log_w("poweringoff: 1/3");
|
||||
SetLedColor(CRGB::Brown, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -170,6 +190,7 @@ void handlePowerState(void)
|
||||
if (!buttonread)
|
||||
{
|
||||
powerstate = off;
|
||||
SetLedColor(CRGB::Red, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -177,6 +198,7 @@ void handlePowerState(void)
|
||||
{
|
||||
log_w("timeout ==> off");
|
||||
powerstate = off;
|
||||
SetLedColor(CRGB::Red);
|
||||
powerOff();
|
||||
delay(5000);
|
||||
}
|
||||
@@ -189,6 +211,33 @@ void handlePowerState(void)
|
||||
log_w("lowbatt");
|
||||
}
|
||||
}
|
||||
case overTheAir:
|
||||
{
|
||||
if (!buttonread)
|
||||
{
|
||||
powerstate = overTheAir2;
|
||||
otaEnable();
|
||||
SetLedColor(CRGB::Blue);
|
||||
powerOn();
|
||||
}
|
||||
log_i("ota state active, release powerbutton");
|
||||
}
|
||||
case overTheAir2:
|
||||
{
|
||||
if (getOtaState() == OTASTATES::otaBusy)
|
||||
{
|
||||
SetLedColor(CRGB::Blue, true);
|
||||
log_i("ota state active, ota busy ==> On");
|
||||
|
||||
}
|
||||
if (getOtaState() == OTASTATES::otaDone)
|
||||
{
|
||||
log_i("ota state active, ota Done ==> On");
|
||||
|
||||
powerstate = POWERSTATES::on;
|
||||
SetLedColor(CRGB::Green, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user