From 1d3742e14f09316a1d795527713eb8f9742f0ffb Mon Sep 17 00:00:00 2001 From: Joaquim Date: Sun, 4 Apr 2021 03:08:51 +0100 Subject: Big UI and navigation Rewrite new navigation add some color to the apps redesign menus new settings menu new quick settings code clean up size reduction by converting navigation images to font and more... --- src/displayapp/screens/Twos.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'src/displayapp/screens/Twos.cpp') diff --git a/src/displayapp/screens/Twos.cpp b/src/displayapp/screens/Twos.cpp index b51a9ec6..5210a4d6 100644 --- a/src/displayapp/screens/Twos.cpp +++ b/src/displayapp/screens/Twos.cpp @@ -101,11 +101,6 @@ bool Twos::Refresh() { return running; } -bool Twos::OnButtonPushed() { - running = false; - return true; -} - bool Twos::placeNewTile() { std::vector< std::pair > availableCells; for(int row = 0; row < 4; row++) { -- cgit v1.2.3-70-g09d2 From 3cf4df905a20a51939141430e155c9d8e6623e30 Mon Sep 17 00:00:00 2001 From: Joaquim Date: Thu, 8 Apr 2021 16:15:57 +0100 Subject: restore battery buffer --- src/components/battery/BatteryController.cpp | 10 ++----- src/components/battery/BatteryController.h | 40 ++++++++++++++++++++++++++-- src/displayapp/screens/Twos.cpp | 3 +-- 3 files changed, 41 insertions(+), 12 deletions(-) (limited to 'src/displayapp/screens/Twos.cpp') diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp index beca95c4..4a7a2345 100644 --- a/src/components/battery/BatteryController.cpp +++ b/src/components/battery/BatteryController.cpp @@ -66,6 +66,8 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const * p_event) { percentRemaining = std::max(percentRemaining, 0); percentRemaining = std::min(percentRemaining, 100); + percentRemainingBuffer.insert(percentRemaining); + nrfx_saadc_uninit(); } } @@ -73,11 +75,3 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const * p_event) { void Battery::adcCallbackStatic(nrfx_saadc_evt_t const *event) { instance->SaadcEventHandler(event); } - -int Battery::PercentRemaining() { - return percentRemaining; -} - -float Battery::Voltage() { - return voltage; -} \ No newline at end of file diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h index 6a0c7dff..2776687b 100644 --- a/src/components/battery/BatteryController.h +++ b/src/components/battery/BatteryController.h @@ -7,6 +7,38 @@ 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 + 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 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: @@ -15,8 +47,9 @@ namespace Pinetime { void Init(); void Update(); - int PercentRemaining(); - float Voltage(); + int PercentRemaining() const { return percentRemainingBuffer.GetAverage(); } + + float Voltage() const { return voltage; } bool IsCharging() const { return isCharging; } bool IsPowerPresent() const { return isPowerPresent; } @@ -24,6 +57,9 @@ namespace Pinetime { private: static Battery *instance; nrf_saadc_value_t saadc_value; + + static constexpr uint8_t percentRemainingSamples = 10; + CircBuffer percentRemainingBuffer {}; static constexpr uint32_t chargingPin = 12; static constexpr uint32_t powerPresentPin = 19; diff --git a/src/displayapp/screens/Twos.cpp b/src/displayapp/screens/Twos.cpp index 5210a4d6..7a3ed1e4 100644 --- a/src/displayapp/screens/Twos.cpp +++ b/src/displayapp/screens/Twos.cpp @@ -153,8 +153,7 @@ bool Twos::tryMove(Tile grid[][4], int newRow, int newCol, int oldRow, int oldCo } bool Twos::OnTouchEvent(Pinetime::Applications::TouchEvents event) { - bool validMove; - validMove = false; + bool validMove = false; for(int row = 0; row < 4; row++) { for(int col = 0; col < 4; col++) { grid[row][col].merged = false; // reinitialize merge state -- cgit v1.2.3-70-g09d2