firmware recovery 1.3RC

This commit is contained in:
2021-06-14 08:19:45 +02:00
parent d32deb73b5
commit f4e23386ef
15 changed files with 237 additions and 203 deletions

View File

@@ -9,7 +9,7 @@ Button buttonPower(BTN_PWR, 250UL, 1U, 0);
Battery battery(VBATTMIN, VBATTMAX, VBATTPIN);
#endif
uint64_t delay_timer = 0;
uint64_t measure_timer = 0;
uint64_t powerOnOffDelay = 0;
powerStates powerstate = off;
@@ -18,8 +18,6 @@ void initBattery(void)
#ifdef VBATTPIN
#ifdef MEAS_EN
battery.onDemand(MEAS_EN, LOW);
//pinMode(MEAS_EN, OUTPUT);
//digitalWrite(MEAS_EN, HIGH);
battery.begin(VBATTREF, (R12 + R13) / R13); //R1 = 220K, R2 = 100K, factor = (R1+R2)/R2
#else
@@ -59,17 +57,24 @@ void powerOff(void)
digitalWrite(PW_HOLD, LOW);
}
bool measureBattery(void)
{
uint16_t vbatt = battery.voltage();
if (vbatt < VBATTMIN)
{
return true;
}
return false;
}
bool handleBattery(void)
{
#ifdef VBATTPIN
uint64_t currentmillis = millis();
if (currentmillis - delay_timer > BATTERYMEASUREDELAY)
if (currentmillis - measure_timer > BATTERYMEASUREDELAY)
{
uint32_t vbatt = battery.voltage();
if (vbatt < VBATTMIN)
{
return true;
}
return measureBattery();
measure_timer = currentmillis;
}
#endif
@@ -126,11 +131,11 @@ void handlePowerState(void)
turnOnLed(1);
powerstate = poweringOn2;
}
else if (buttonPower.pressedFor(800))
else if (buttonPower.pressedFor(500))
{
turnOnLed(2);
}
else if (buttonPower.pressedFor(100))
else if (buttonPower.pressedFor(200))
{
turnOnLed(3);
}
@@ -148,10 +153,14 @@ void handlePowerState(void)
powerstate = on;
powerOn();
turnOffAllLed();
delay(500);
delay(200);
batterydisplay();
delay(1000);
delay(500);
turnOffAllLed();
if(measureBattery())
{
powerstate = lowBatt;
}
}
}
break;
@@ -161,14 +170,17 @@ void handlePowerState(void)
{
powerstate = poweringOff;
turnOnAllLed();
break;
}
else if (HandleTimeOut())
if (HandleTimeOut())
{
powerstate = timeOut;
break;
}
else if (handleBattery())
if (handleBattery())
{
powerstate = lowBatt;
break;
}
}
break;
@@ -179,11 +191,11 @@ void handlePowerState(void)
turnOffLed(1);
powerstate = poweringOff2;
}
else if (buttonPower.pressedFor(950))
else if (buttonPower.pressedFor(500))
{
turnOffLed(2);
}
else if (buttonPower.pressedFor(450))
else if (buttonPower.pressedFor(200))
{
turnOffLed(3);
}
@@ -196,7 +208,7 @@ void handlePowerState(void)
break;
case poweringOff2:
{
if(!buttonread)
if (!buttonread)
{
powerstate = off;
}
@@ -224,13 +236,15 @@ void handlePowerState(void)
}
}
uint64_t lasttimeOut = 0;
bool buttonChanged = false;
uint8_t buttonCount = 0;
//handleTimeout
//return true when timed out
bool HandleTimeOut(void)
{
uint64_t currentmillis = millis();
static uint64_t lasttimeOut = 0;
static bool buttonChanged = false;
if (!lasttimeOut)
{
@@ -245,12 +259,18 @@ bool HandleTimeOut(void)
}
else
{
if (buttonChanged != anybutton())
if (buttonPressedCount() != buttonCount)
{
buttonChanged = anybutton();
//game in progress, update timer
buttonCount = buttonPressedCount();
lasttimeOut = currentmillis;
}
// if (buttonChanged != anybutton())
// {
// buttonChanged = anybutton();
// //game in progress, update timer
// lasttimeOut = currentmillis;
// }
}
return false;
}