summaryrefslogtreecommitdiff
path: root/src/battery
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-10-12 08:42:51 +1100
committerjacqueline <me@jacqueline.id.au>2023-10-12 08:42:51 +1100
commitddcaa967fd6cc32c25a3a9294bd5cfff19c3036d (patch)
tree5ce1ac277d08d1f792567318d9f6ad15cb0e5788 /src/battery
parentb0d85fc0d6ede34e4310d7d4fa69b8b94b8571b1 (diff)
downloadtangara-fw-ddcaa967fd6cc32c25a3a9294bd5cfff19c3036d.tar.gz
Update battery mV even with the samd doesn't respond
Diffstat (limited to 'src/battery')
-rw-r--r--src/battery/battery.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/battery/battery.cpp b/src/battery/battery.cpp
index aea99654..69ca9a7d 100644
--- a/src/battery/battery.cpp
+++ b/src/battery/battery.cpp
@@ -57,7 +57,7 @@ auto Battery::Update() -> void {
std::lock_guard<std::mutex> lock{state_mutex_};
auto charge_state = samd_.GetChargeStatus();
- if (!charge_state || *charge_state == ChargeStatus::kNoBattery) {
+ if (charge_state && *charge_state == ChargeStatus::kNoBattery) {
if (state_) {
EmitEvent();
}
@@ -73,9 +73,14 @@ auto Battery::Update() -> void {
(kFullChargeMilliVolts - kEmptyChargeMilliVolts) * 100.0,
100.0));
- bool is_charging = *charge_state == ChargeStatus::kChargingRegular ||
- *charge_state == ChargeStatus::kChargingFast ||
- *charge_state == ChargeStatus::kFullCharge;
+ bool is_charging;
+ if (!charge_state) {
+ is_charging = false;
+ } else {
+ is_charging = *charge_state == ChargeStatus::kChargingRegular ||
+ *charge_state == ChargeStatus::kChargingFast ||
+ *charge_state == ChargeStatus::kFullCharge;
+ }
if (state_ && state_->is_charging == is_charging &&
state_->percent == percent) {