From fd52ca8fe6f42226ec32a001f4c61dc100ead94a Mon Sep 17 00:00:00 2001 From: Riku Isokoski Date: Fri, 3 Sep 2021 14:35:38 +0300 Subject: Detect full charge and improve watchface display --- src/components/battery/BatteryController.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/components/battery/BatteryController.cpp') diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp index f8a64ecd..619e227c 100644 --- a/src/components/battery/BatteryController.cpp +++ b/src/components/battery/BatteryController.cpp @@ -19,6 +19,12 @@ void Battery::Update() { isCharging = !nrf_gpio_pin_read(chargingPin); isPowerPresent = !nrf_gpio_pin_read(powerPresentPin); + if (isPowerPresent && !isCharging) { + isFull = true; + } else if (!isPowerPresent) { + isFull = false; + } + if (isReading) { return; } @@ -65,12 +71,12 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) { // p_event->data.done.p_buffer[0] = (adc_voltage / reference_voltage) * 1024 voltage = p_event->data.done.p_buffer[0] * (8 * 600) / 1024; - if (voltage > battery_max) { + if (isFull) { percentRemaining = 100; } else if (voltage < battery_min) { percentRemaining = 0; } else { - percentRemaining = (voltage - battery_min) * 100 / (battery_max - battery_min); + percentRemaining = std::min((voltage - battery_min) * 100 / (battery_max - battery_min), 99); } nrfx_saadc_uninit(); -- cgit v1.2.3-70-g09d2 From 980ac173888883b34367395fdf8ee76c0aea6f72 Mon Sep 17 00:00:00 2001 From: Riku Isokoski Date: Wed, 22 Sep 2021 13:58:45 +0300 Subject: Show plug icon while plugged in --- src/components/battery/BatteryController.cpp | 2 +- src/displayapp/screens/WatchFaceDigital.cpp | 6 +++--- src/displayapp/screens/WatchFaceDigital.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/components/battery/BatteryController.cpp') diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp index d2ddae74..b43b229f 100644 --- a/src/components/battery/BatteryController.cpp +++ b/src/components/battery/BatteryController.cpp @@ -74,7 +74,7 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) { } else if (voltage < battery_min) { percentRemaining = 0; } else { - percentRemaining = std::min((voltage - battery_min) * 100 / (battery_max - battery_min), 99); + percentRemaining = std::min((voltage - battery_min) * 100 / (battery_max - battery_min), isCharging ? 99 : 100); } nrfx_saadc_uninit(); diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp index 3e755f8e..2ecab609 100644 --- a/src/displayapp/screens/WatchFaceDigital.cpp +++ b/src/displayapp/screens/WatchFaceDigital.cpp @@ -102,9 +102,9 @@ WatchFaceDigital::~WatchFaceDigital() { } void WatchFaceDigital::Refresh() { - isCharging = batteryController.IsCharging(); - if (isCharging.IsUpdated()) { - lv_label_set_text(batteryPlug, BatteryIcon::GetPlugIcon(isCharging.Get())); + powerPresent = batteryController.IsPowerPresent(); + if (powerPresent.IsUpdated()) { + lv_label_set_text(batteryPlug, BatteryIcon::GetPlugIcon(powerPresent.Get())); } batteryPercentRemaining = batteryController.PercentRemaining(); diff --git a/src/displayapp/screens/WatchFaceDigital.h b/src/displayapp/screens/WatchFaceDigital.h index 69a6067d..e27545f3 100644 --- a/src/displayapp/screens/WatchFaceDigital.h +++ b/src/displayapp/screens/WatchFaceDigital.h @@ -44,7 +44,7 @@ namespace Pinetime { uint8_t currentDay = 0; DirtyValue batteryPercentRemaining {}; - DirtyValue isCharging {}; + DirtyValue powerPresent {}; DirtyValue bleState {}; DirtyValue> currentDateTime {}; DirtyValue motionSensorOk {}; -- cgit v1.2.3-70-g09d2