firmware recovery 1.3RC
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user