@@ -48,11 +48,12 @@ bool updateBatteryStatus(){
48
48
return false ;
49
49
}
50
50
51
+ bool updateBatteryLevel () {
51
52
static auto updateTimestamp = millis ();
52
53
bool intervalFired = millis () - updateTimestamp >= batteryUpdateInterval;
53
54
bool isFirstReading = batteryPercentage == -1 || batteryVoltage == -1 .0f ;
54
55
55
- if (intervalFired || isFirstReading || enforceNewReading ) {
56
+ if (intervalFired || isFirstReading) {
56
57
Serial.println (" Checking the battery level..." );
57
58
updateTimestamp = millis ();
58
59
auto percentage = nicla::getBatteryVoltagePercentage ();
@@ -61,14 +62,22 @@ bool updateBatteryStatus(){
61
62
return false ; // Percentage couldn't be determined.
62
63
}
63
64
65
+ // Only if the percentage has changed, we update the values as they depend on it.
64
66
if (batteryPercentage != percentage) {
65
- batteryPercentage = percentage;
66
- batteryVoltage = nicla::getCurrentBatteryVoltage ();
67
- batteryChargeLevel = static_cast <int8_t >(nicla::getBatteryChargeLevel ());
67
+ int8_t currentChargeLevel = static_cast <int8_t >(nicla::getBatteryChargeLevel ());
68
+ if (currentChargeLevel == 0 ){
69
+ return false ; // Unknown battery charge level.
70
+ }
68
71
69
- Serial.print (" New battery level: " );
70
- Serial.println (batteryPercentage);
72
+ auto currentVoltage = nicla::getCurrentBatteryVoltage ();
73
+ if (currentVoltage == 0 ){
74
+ return false ; // Unknown battery voltage.
75
+ }
71
76
77
+ batteryPercentage = percentage;
78
+ batteryChargeLevel = currentChargeLevel;
79
+ batteryVoltage = currentVoltage;
80
+
72
81
return true ;
73
82
}
74
83
}
0 commit comments