diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-18 14:25:46 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-18 14:25:46 +1000 |
| commit | 697ec3c5843c66253f73572c26b9b4885680d56c (patch) | |
| tree | b615e2681889e34aa122c260cb773f1d8503a7b7 /src/drivers | |
| parent | 65a1f09a903cb2bcef9bcd576b5146407dd77ecd (diff) | |
| download | tangara-fw-697ec3c5843c66253f73572c26b9b4885680d56c.tar.gz | |
Fix no battery detection
Diffstat (limited to 'src/drivers')
| -rw-r--r-- | src/drivers/samd.cpp | 17 |
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; |
