From 44ac7ca8278ca2c9125690fefaa2f862a2d047b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Metrich?= <45318189+FredM67@users.noreply.github.com> Date: Fri, 28 Apr 2023 20:56:35 +0200 Subject: [PATCH] Some tuning --- Mk2_3phase_RFdatalog_temp/movingAvg.h | 52 ++++++++++++++++-------- Mk2_3phase_RFdatalog_temp/platformio.ini | 2 +- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Mk2_3phase_RFdatalog_temp/movingAvg.h b/Mk2_3phase_RFdatalog_temp/movingAvg.h index 1a79de81..860cfda3 100644 --- a/Mk2_3phase_RFdatalog_temp/movingAvg.h +++ b/Mk2_3phase_RFdatalog_temp/movingAvg.h @@ -6,38 +6,53 @@ #include "type_traits.hpp" -template +template< typename T, uint8_t N = 10 > class movingAvg { public: void clear() { _idx = 0; - _sum = 0; - for (int i = 0; i < N; ++i) - _ar[i] = 0.0; // needed to keep addValue simple + + if constexpr (is_floating_point< T >::value) + _sum = 0.0; + else + _sum = 0; + + uint8_t i{ N }; + do + { + --i; + if constexpr (is_floating_point< T >::value) + _ar[i] = 0.0; + else + _ar[i] = 0; + } while (i); } - void addValue(T _value) + void addValue(const T& _value) { _sum -= _ar[_idx]; _ar[_idx] = _value; - _sum += _ar[_idx]; + _sum += _value; ++_idx; if (_idx == N) - _idx = 0; // faster than % + { + _idx = 0; // faster than % + } } - void fillValue(T _value) + void fillValue(const T& _value) { _idx = 0; _sum = N * _value; - for (int i = 0; i < N; i++) + uint8_t i{ N }; + do { - _ar[_idx] = _value; - } + _ar[--i] = _value; + } while (i); } float getAverage() const @@ -48,21 +63,26 @@ class movingAvg auto getElement(uint8_t idx) const { if (idx >= N) - return 0; + { + if constexpr (is_floating_point< T >::value) + return 0.0; + else + return 0; + } return _ar[idx]; } - constexpr uint8_t getSize() + constexpr uint8_t getSize() const { return N; } private: - uint8_t _idx{0}; - typename conditional::value, T, int32_t>::type _sum; + uint8_t _idx{ 0 }; + typename conditional< is_floating_point< T >::value, T, int32_t >::type _sum; - T _ar[N]{0}; + T _ar[N]{}; }; #endif diff --git a/Mk2_3phase_RFdatalog_temp/platformio.ini b/Mk2_3phase_RFdatalog_temp/platformio.ini index 98df236b..54ba1278 100644 --- a/Mk2_3phase_RFdatalog_temp/platformio.ini +++ b/Mk2_3phase_RFdatalog_temp/platformio.ini @@ -61,7 +61,7 @@ build_src_flags = build_src_flags = -DOFF_PEAK_TARIFF -[env:dual_tariff&rotation] +[env:dual_tariff_rotation] build_src_flags = ${env:rotation.build_src_flags} ${env:dual_tariff.build_src_flags}