This commit is contained in:
2022-01-04 15:50:20 +01:00
parent ec47ddc402
commit 14b25a9459
10 changed files with 125 additions and 134 deletions

View File

@@ -12,8 +12,6 @@ POWERSTATES lastState = off;
Button buttonPower(PWR_BTN, 250UL, 1U, 0);
extern OtaProcess_class ota;
Battery battery(VBATTMIN, VBATTMAX, MEAS_ADC, &getvbatt);
void initPowerOn(void)
{
pinMode(PWR_HOLD, OUTPUT);
@@ -21,12 +19,6 @@ void initPowerOn(void)
buttonPower.begin();
}
void initBattery(void)
{
battery.onDemand(MEAS_EN, LOW);
battery.begin(VBATTREF, (R12 + R13) / R13); // R1 = 220K, R2 = 100K, factor = (R1+R2)/R2
}
POWERSTATES getPowerState(void)
{
return powerstate;
@@ -40,6 +32,7 @@ void PowerKeepAlive(void)
void powerOn(void)
{
digitalWrite(PWR_HOLD, HIGH);
delay(200);
}
void powerOff(void)
@@ -51,27 +44,6 @@ void powerOff(void)
// ESP.restart();
}
bool measureBattery(void)
{
uint16_t vbatt = battery.voltage();
if (vbatt < VBATTMIN)
{
return true;
}
return false;
}
bool handleBattery(void)
{
uint64_t currentmillis = millis();
if (currentmillis - measure_timer > BATTERYMEASUREDELAY)
{
return measureBattery();
measure_timer = currentmillis;
}
return false;
}
// handle power asynchronious
void handlePowerState(void)
{
@@ -94,7 +66,7 @@ void handlePowerState(void)
if (buttonPower.pressedFor(POWERBUTTONDELAY))
{
powerstate = poweringOn2;
SetLedColor(CRGB::White);
SetLedColor(CRGB::Green, true);
log_i("poweron 3/3 => Go");
}
@@ -109,7 +81,7 @@ void handlePowerState(void)
SetLedColor(CRGB::GhostWhite);
}
if (!buttonread)
if (buttonPower.releasedFor(200))
{
powerstate = off;
}
@@ -117,15 +89,17 @@ void handlePowerState(void)
break;
case poweringOn2:
{
powerOn();
if (buttonPower.releasedFor(200))
{
powerstate = powerinit;
powerOn();
// if (measureBattery())
// {
// log_w("poweringOn: Lowbat");
// //powerstate = lowBatt;
// }
if (CheckBattery())
{
log_w("poweringOn: Lowbat");
SetLedColor(CRGB::Red, true);
// powerstate = lowBatt;
}
}
else
{
@@ -153,12 +127,13 @@ void handlePowerState(void)
powerstate = poweringOff;
break;
}
// if (handleBattery())
// {
// log_w("on: Lowbat");
// //powerstate = lowBatt;
// break;
// }
if (getLowBatt())
{
log_w("on: Lowbat");
// powerstate = lowBatt;
SetLedColor(CRGB::Red, true);
break;
}
}
break;
case poweringOff:
@@ -184,12 +159,13 @@ void handlePowerState(void)
else
{
powerstate = lastState;
SetLedColor(CRGB::Green);
}
}
break;
case poweringOff2:
{
if (!buttonPower.releasedFor(200))
if (buttonPower.releasedFor(200))
{
powerstate = off;
SetLedColor(CRGB::Red, true);
@@ -200,50 +176,58 @@ void handlePowerState(void)
{
log_w("timeout ==> off");
powerstate = off;
SetLedColor(CRGB::Red);
SetLedColor(CRGB::Red, true);
powerOff();
delay(5000);
}
break;
case lowBatt:
{
// add delay
powerstate = off;
for (int i = 0; i < 6; i++)
{
log_w("lowbatt");
SetLedColor(CRGB::Red, true);
}
}
break;
case overTheAir:
{
powerOn();
if (buttonPower.releasedFor(200))
{
powerstate = overTheAir2;
otaEnable();
SetLedColor(CRGB::Blue, true);
powerOn();
SetLedColor(CRGB::Blue);
}
else
{
SetLedColor(CRGB::Blue, false);
SetLedColor(CRGB::Blue, true);
log_i("ota state active, release powerbutton");
}
}
break;
case overTheAir2:
{
if(buttonPower.pressedFor(200))
if (buttonPower.pressedFor(200))
{
log_i("ota poweroff");
lastState = overTheAir2;
powerstate = poweringOff;
}
if (getOtaState() != otaInitDone)
{
SetLedColor(CRGB::Orange, true);
}
else
{
SetLedColor(CRGB::Orange);
}
if (getOtaState() == OTASTATES::otaBusy)
{
SetLedColor(CRGB::Blue, true);
SetLedColor(CRGB::Purple, true);
log_i("ota state active, ota busy ==> On");
}
if (getOtaState() == OTASTATES::otaDone)
{