diff options
Diffstat (limited to 'src/components/battery/BatteryController.h')
-rw-r--r-- | src/components/battery/BatteryController.h | 85 |
1 files changed, 46 insertions, 39 deletions
diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h index 47d7a6d1..04bcf6b8 100644 --- a/src/components/battery/BatteryController.h +++ b/src/components/battery/BatteryController.h @@ -7,18 +7,18 @@ namespace Pinetime { namespace Controllers { - /** A simple circular buffer that can be used to average - out the sensor values. The total capacity of the CircBuffer + /** 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 { + */ + template <int N> class CircBuffer { public: - CircBuffer() : arr{}, sz{}, cap{N}, head{} {} + CircBuffer() : arr {}, sz {}, cap {N}, head {} { + } /** - insert member function overwrites the next data to the current + 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; @@ -34,49 +34,56 @@ namespace Pinetime { 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*/ + 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: + public: + Battery(); - Battery(); + void Init(); + void Update(); - void Init(); - void Update(); - - int PercentRemaining() const { return percentRemainingBuffer.GetAverage(); } + int PercentRemaining() const { + return percentRemainingBuffer.GetAverage(); + } + + float Voltage() const { + return voltage; + } - float Voltage() const { return voltage; } + bool IsCharging() const { + return isCharging; + } + bool IsPowerPresent() const { + return isPowerPresent; + } + + private: + static Battery* instance; + nrf_saadc_value_t saadc_value; - bool IsCharging() const { return isCharging; } - bool IsPowerPresent() const { return isPowerPresent; } + static constexpr uint8_t percentRemainingSamples = 5; + CircBuffer<percentRemainingSamples> percentRemainingBuffer {}; - private: - static Battery *instance; - nrf_saadc_value_t saadc_value; - - static constexpr uint8_t percentRemainingSamples = 5; - CircBuffer<percentRemainingSamples> percentRemainingBuffer {}; + static constexpr uint32_t chargingPin = 12; + static constexpr uint32_t powerPresentPin = 19; + static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7; + float voltage = 0.0f; + int percentRemaining = -1; - static constexpr uint32_t chargingPin = 12; - static constexpr uint32_t powerPresentPin = 19; - static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7; - float voltage = 0.0f; - int percentRemaining = -1; + bool isCharging = false; + bool isPowerPresent = false; - bool isCharging = false; - bool isPowerPresent = false; - - void SaadcInit(); + void SaadcInit(); - void SaadcEventHandler(nrfx_saadc_evt_t const * p_event); - static void adcCallbackStatic(nrfx_saadc_evt_t const *event); + void SaadcEventHandler(nrfx_saadc_evt_t const* p_event); + static void adcCallbackStatic(nrfx_saadc_evt_t const* event); - bool isReading = false; - uint8_t samples = 0; + bool isReading = false; + uint8_t samples = 0; }; } }
\ No newline at end of file |