summaryrefslogtreecommitdiff
path: root/src/drivers/samd.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-18 14:25:46 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-18 14:25:46 +1000
commit697ec3c5843c66253f73572c26b9b4885680d56c (patch)
treeb615e2681889e34aa122c260cb773f1d8503a7b7 /src/drivers/samd.cpp
parent65a1f09a903cb2bcef9bcd576b5146407dd77ecd (diff)
downloadtangara-fw-697ec3c5843c66253f73572c26b9b4885680d56c.tar.gz
Fix no battery detection
Diffstat (limited to 'src/drivers/samd.cpp')
-rw-r--r--src/drivers/samd.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/drivers/samd.cpp b/src/drivers/samd.cpp
index 3c37b6c6..e7bfbb6b 100644
--- a/src/drivers/samd.cpp
+++ b/src/drivers/samd.cpp
@@ -56,24 +56,23 @@ auto Samd::ReadChargeStatus() -> std::optional<ChargeStatus> {
.stop();
ESP_LOGI(kTag, "checking charge status");
ESP_ERROR_CHECK(transaction.Execute());
- ESP_LOGI(kTag, "raw charge status: %x", raw_res);
+ ESP_LOGI(kTag, "raw charge status: 0x%x", raw_res);
uint8_t usb_state = raw_res & 0b11;
uint8_t charge_state = (raw_res >> 2) & 0b111;
switch (charge_state) {
- case 0:
+ case 0b000:
+ case 0b011:
return ChargeStatus::kNoBattery;
- case 1:
+ case 0b001:
return usb_state == 1 ? ChargeStatus::kChargingRegular
: ChargeStatus::kChargingFast;
- case 2:
+ case 0b010:
return ChargeStatus::kFullCharge;
- case 4:
+ case 0b100:
return ChargeStatus::kBatteryCritical;
- case 5:
+ case 0b101:
return ChargeStatus::kDischarging;
- case 3:
- // Fall-through.
default:
return {};
}
@@ -91,7 +90,7 @@ auto Samd::ReadUsbStatus() -> UsbStatus {
.stop();
ESP_LOGI(kTag, "checking usb status");
ESP_ERROR_CHECK(transaction.Execute());
- ESP_LOGI(kTag, "raw usb status: %x", raw_res);
+ ESP_LOGI(kTag, "raw usb status: 0x%x", raw_res);
if (!(raw_res & 0b1)) {
return UsbStatus::kDetached;