cimdit/cimditrotary.cpp

36 lines
630 B
C++

/**
* \file cimditrotary.cpp
* \brief implementiton of the CimditRotary class
* \author GrumpyDeveloper (Sascha Nitsch)
* \copyright 2022 Sascha Nitsch
* Licensed under MIT license
*
*/
#include "Arduino.h"
// own includes
#include "cimditrotary.h"
CimditRotary::CimditRotary() {
m_a = false;
m_delta = 0;
}
bool CimditRotary::update(bool a, bool b) {
if (a == m_a) return false; // no change
if (a && !m_a) { // rising bit a
if (b) {
++m_delta;
} else {
--m_delta;
}
}
m_a = a;
return a;
}
int8_t CimditRotary::getDelta() {
int8_t ret = m_delta;
m_delta = 0;
return ret;
}