Skip to content

Commit de371ef

Browse files
committed
nicla-system: Make BLE updates more robust.
1 parent 2871417 commit de371ef

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

libraries/Nicla_System/examples/NiclaSenseME_BatteryStatus/NiclaSenseME_BatteryStatus.ino

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,12 @@ bool updateBatteryStatus(){
4848
return false;
4949
}
5050

51+
bool updateBatteryLevel() {
5152
static auto updateTimestamp = millis();
5253
bool intervalFired = millis() - updateTimestamp >= batteryUpdateInterval;
5354
bool isFirstReading = batteryPercentage == -1 || batteryVoltage == -1.0f;
5455

55-
if (intervalFired || isFirstReading || enforceNewReading) {
56+
if (intervalFired || isFirstReading) {
5657
Serial.println("Checking the battery level...");
5758
updateTimestamp = millis();
5859
auto percentage = nicla::getBatteryVoltagePercentage();
@@ -61,14 +62,22 @@ bool updateBatteryStatus(){
6162
return false; // Percentage couldn't be determined.
6263
}
6364

65+
// Only if the percentage has changed, we update the values as they depend on it.
6466
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+
}
6871

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+
}
7176

77+
batteryPercentage = percentage;
78+
batteryChargeLevel = currentChargeLevel;
79+
batteryVoltage = currentVoltage;
80+
7281
return true;
7382
}
7483
}

0 commit comments

Comments
 (0)