diff options
| author | Joaquim <joaquim.org@gmail.com> | 2021-04-04 13:51:22 +0100 |
|---|---|---|
| committer | Joaquim <joaquim.org@gmail.com> | 2021-04-04 13:51:22 +0100 |
| commit | bb7531e2085cee056161c528d84884d5a75c5e6e (patch) | |
| tree | 3b2df5a3d0f06ccf2d517597af5efb6153f4d4d0 /src/components/battery/BatteryController.h | |
| parent | 1d3742e14f09316a1d795527713eb8f9742f0ffb (diff) | |
double tap wakeup error fix
battery nonblocking read
Diffstat (limited to 'src/components/battery/BatteryController.h')
| -rw-r--r-- | src/components/battery/BatteryController.h | 47 |
1 files changed, 10 insertions, 37 deletions
diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h index 86250a57..9bc942c9 100644 --- a/src/components/battery/BatteryController.h +++ b/src/components/battery/BatteryController.h @@ -6,44 +6,16 @@ namespace Pinetime { namespace Controllers { - /** A simple circular buffer that can be used to average - out the sensor values. The total capacity of the CircBuffer - is given as the template parameter N. - */ - template <int N> - class CircBuffer { - public: - CircBuffer() : arr{}, sz{}, cap{N}, head{} {} - /** - insert member function overwrites the next data to the current - HEAD and moves the HEAD to the newly inserted value. - */ - void insert(const int num) { - head %= cap; - arr[head++] = num; - if (sz != cap) { - sz++; - } - } - - int GetAverage() const { - int sum = std::accumulate(arr.begin(), arr.end(), 0); - return (sum / sz); - } - - private: - std::array<int, N> arr; /**< internal array used to store the values*/ - uint8_t sz; /**< The current size of the array.*/ - uint8_t cap; /**< Total capacity of the CircBuffer.*/ - uint8_t head; /**< The current head of the CircBuffer*/ - }; class Battery { public: + void Init(); void Update(); - int PercentRemaining() const { return percentRemainingBuffer.GetAverage(); } - float Voltage() const { return voltage; } + + int PercentRemaining(); + float Voltage(); + bool IsCharging() const { return isCharging; } bool IsPowerPresent() const { return isPowerPresent; } @@ -51,12 +23,13 @@ namespace Pinetime { static constexpr uint32_t chargingPin = 12; static constexpr uint32_t powerPresentPin = 19; static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7; - static constexpr uint8_t percentRemainingSamples = 10; - static void SaadcEventHandler(nrfx_saadc_evt_t const * p_event); - CircBuffer<percentRemainingSamples> percentRemainingBuffer {}; - float voltage = 0.0f; + bool isCharging = false; bool isPowerPresent = false; + + static void SaadcEventHandler(nrfx_saadc_evt_t const * p_event); + void SaadcInit(); + }; } }
\ No newline at end of file |
