7 queue.push_front(value);
9 if (queue.size() > 5) {
17 const double sum = std::accumulate(queue.begin(), queue.end(), 0);
18 avg =
static_cast<int>(sum / queue.size());
23bool check_sequence(
const uint8_t* data,
const std::array<uint8_t, 3>& expected) {
24 return (data[1] == expected[0] && data[2] == expected[1] && data[3] == expected[2]);
38 data.
input = roundf(rr_rpm * 100);
45 std::copy(std::begin(data.
output), std::end(data.
output), rr_rpm_byte);
58void debounce(
const bool new_value,
bool& stored_value,
unsigned int& counter,
59 const unsigned int counter_limit) {
60 if (new_value == stored_value) {
64 if (counter >= counter_limit) {
65 stored_value = new_value;
71void debounce(
const bool new_value,
bool& stored_value,
unsigned int& counter) {
constexpr int CHANGE_COUNTER_LIMIT
void rpm_2_byte(const float rr_rpm, char *rr_rpm_byte)
void debounce(const bool new_value, bool &stored_value, unsigned int &counter, const unsigned int counter_limit)
debounce function to avoid sporadic changes (and repeating the code everywhere)
bool check_sequence(const uint8_t *data, const std::array< uint8_t, 3 > &expected)
void insert_value_queue(const int value, std::deque< int > &queue)
int average_queue(const std::deque< int > &queue)