InfiniTime.git

commit ccc8cee07a3a702b31ab3a0f2f93950f0d176198

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();