From 6a5296d3f19e21a7e6e8de92753594cabca43415 Mon Sep 17 00:00:00 2001 From: rob tillaart Date: Fri, 30 Oct 2015 16:46:22 +0100 Subject: [PATCH] + refactor constructor + const where possible --- libraries/RunningMedian/RunningMedian.cpp | 21 ++++++++++------ libraries/RunningMedian/RunningMedian.h | 30 +++++++++++------------ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/libraries/RunningMedian/RunningMedian.cpp b/libraries/RunningMedian/RunningMedian.cpp index ac6f6656..0d6d01d5 100644 --- a/libraries/RunningMedian/RunningMedian.cpp +++ b/libraries/RunningMedian/RunningMedian.cpp @@ -1,7 +1,7 @@ // // FILE: RunningMedian.cpp // AUTHOR: Rob dot Tillaart at gmail dot com -// VERSION: 0.1.11 +// VERSION: 0.1.12 // PURPOSE: RunningMedian library for Arduino // // HISTORY: @@ -17,13 +17,14 @@ // 0.1.09 - 2014-11-25 float to double (support ARM) // 0.1.10 - 2015-03-07 fix clear // 0.1.11 - 2015-03-29 undo 0.1.10 fix clear +// 0.1.12 - 2015-07-12 refactor constructor + const // // Released to the public domain // #include "RunningMedian.h" -RunningMedian::RunningMedian(uint8_t size) +RunningMedian::RunningMedian(const uint8_t size) { _size = constrain(size, MEDIAN_MIN_SIZE, MEDIAN_MAX_SIZE); @@ -74,9 +75,15 @@ double RunningMedian::getMedian() } #ifdef RUNNING_MEDIAN_ALL -double RunningMedian::getHighest() { return getSortedElement(_cnt-1); } +double RunningMedian::getHighest() +{ + return getSortedElement(_cnt - 1); +} -double RunningMedian::getLowest() { return getSortedElement(0); } +double RunningMedian::getLowest() +{ + return getSortedElement(0); +} double RunningMedian::getAverage() { @@ -105,7 +112,7 @@ double RunningMedian::getAverage(uint8_t nMedians) return NAN; } -double RunningMedian::getElement(uint8_t n) +double RunningMedian::getElement(const uint8_t n) { if ((_cnt > 0) && (n < _cnt)) { @@ -114,7 +121,7 @@ double RunningMedian::getElement(uint8_t n) return NAN; } -double RunningMedian::getSortedElement(uint8_t n) +double RunningMedian::getSortedElement(const uint8_t n) { if ((_cnt > 0) && (n < _cnt)) { @@ -125,7 +132,7 @@ double RunningMedian::getSortedElement(uint8_t n) } // n can be max <= half the (filled) size -double RunningMedian::predict(uint8_t n) +double RunningMedian::predict(const uint8_t n) { if ((_cnt > 0) && (n < _cnt/2)) { diff --git a/libraries/RunningMedian/RunningMedian.h b/libraries/RunningMedian/RunningMedian.h index 7eb24704..5860930a 100644 --- a/libraries/RunningMedian/RunningMedian.h +++ b/libraries/RunningMedian/RunningMedian.h @@ -2,7 +2,7 @@ // FILE: RunningMedian.h // AUTHOR: Rob dot Tillaart at gmail dot com // PURPOSE: RunningMedian library for Arduino -// VERSION: 0.1.11 +// VERSION: 0.1.12 // URL: http://arduino.cc/playground/Main/RunningMedian // HISTORY: See RunningMedian.cpp // @@ -20,7 +20,7 @@ #include -#define RUNNING_MEDIAN_VERSION "0.1.11" +#define RUNNING_MEDIAN_VERSION "0.1.12" // prepare for dynamic version // not tested use at own risk :) @@ -33,7 +33,7 @@ // should at least be 5 to be practical // odd size results in a 'real' middle element. -// even size takes the lower of the two middle elements (TODO) +// even size takes the lower of the two middle elements #define MEDIAN_MIN_SIZE 1 #define MEDIAN_MAX_SIZE 19 // adjust if needed @@ -41,25 +41,25 @@ class RunningMedian { public: - RunningMedian(uint8_t size); // # elements in the internal buffer - ~RunningMedian(); // destructor + explicit RunningMedian(const uint8_t size); // # elements in the internal buffer + ~RunningMedian(); // destructor - void clear(); // resets internal buffer and var - void add(double value); // adds a new value to internal buffer, optionally replacing the oldest element. + void clear(); // resets internal buffer and var + void add(const double value); // adds a new value to internal buffer, optionally replacing the oldest element. double getMedian(); // returns the median == middle element #ifdef RUNNING_MEDIAN_ALL - double getAverage(); // returns average of the values in the internal buffer + double getAverage(); // returns average of the values in the internal buffer double getAverage(uint8_t nMedian); // returns average of the middle nMedian values, removes noise from outliers - double getHighest(); // returns highest element - double getLowest(); // return lowest element + double getHighest(); // returns highest element + double getLowest(); // return lowest element - double getElement(uint8_t n); // get n'th element from the values in time order - double getSortedElement(uint8_t n); // get n'th element from the values in size order - double predict(uint8_t n); // predict the max change of median after n additions + double getElement(const uint8_t n); // get n'th element from the values in time order + double getSortedElement(const uint8_t n); // get n'th element from the values in size order + double predict(const uint8_t n); // predict the max change of median after n additions - uint8_t getSize() { return _size; }; // returns size of internal buffer - uint8_t getCount() { return _cnt; }; // returns current used elements, getCount() <= getSize() + uint8_t getSize() { return _size; }; // returns size of internal buffer + uint8_t getCount() { return _cnt; }; // returns current used elements, getCount() <= getSize() #endif protected: