Author: minacode <minamoto9@web.de>
added low battery message
src/components/battery/BatteryController.cpp | 6 ++++++ src/components/battery/BatteryController.h | 1 + src/systemtask/Messages.h | 1 + src/systemtask/SystemTask.cpp | 11 +++++++++++
diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp index dc15612e3dac7d28743bd5d37c9a033398eb2976..95a3079281e7174afd64ba18ea9945fe736d19c4 100644 --- a/src/components/battery/BatteryController.cpp +++ b/src/components/battery/BatteryController.cpp @@ -88,8 +88,14 @@ } if ((isPowerPresent && newPercent > percentRemaining) || (!isPowerPresent && newPercent < percentRemaining) || firstMeasurement) { firstMeasurement = false; + lastPercentRemaining = percentRemaining; percentRemaining = newPercent; systemTask->PushMessage(System::Messages::BatteryPercentageUpdated); + } + + constexpr uint8_t lowBatteryThreshold {50}; + if (!isPowerPresent && lastPercentRemaining >= lowBatteryThreshold && percentRemaining < lowBatteryThreshold) { + systemTask->PushMessage(System::Messages::LowBattery); } nrfx_saadc_uninit(); diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h index 5a7394c4d48c774168335a1fd523341503115695..53eb7d19fabc7716efd0304d6104cf865660db13 100644 --- a/src/components/battery/BatteryController.h +++ b/src/components/battery/BatteryController.h @@ -39,6 +39,7 @@ static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7; uint16_t voltage = 0; uint8_t percentRemaining = 0; + uint8_t lastPercentRemaining = 0; bool isFull = false; bool isCharging = false; diff --git a/src/systemtask/Messages.h b/src/systemtask/Messages.h index d730d74f3076e4041ec30c638223a73a387d87e1..1883c396c1409a0df5ef6f0f355c747d7184a824 100644 --- a/src/systemtask/Messages.h +++ b/src/systemtask/Messages.h @@ -29,6 +29,7 @@ SetOffAlarm, StopRinging, MeasureBatteryTimerExpired, BatteryPercentageUpdated, + LowBattery, StartFileTransfer, StopFileTransfer, BleRadioEnableToggle diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index 01056a9addf555454b807315ea8ef23344a3affa..169eaa05f570d36d0f92efa445d16902355af91d 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -424,6 +424,17 @@ break; case Messages::BatteryPercentageUpdated: nimbleController.NotifyBatteryLevel(batteryController.PercentRemaining()); break; + case Messages::LowBattery: + { + Pinetime::Controllers::NotificationManager::Notification notif; + std::array<char, 101> message {"Low Battery\0Low Battery\0"}; + notif.message = message; + notif.size = 25; + notif.category = Pinetime::Controllers::NotificationManager::Categories::SimpleAlert; + notificationManager.Push(std::move(notif)); + PushMessage(Messages::OnNewNotification); + } + break; case Messages::OnPairing: if (state == SystemTaskState::Sleeping) { GoToRunning();