move RowBase::process() to Row and Row_DH
This commit is contained in:
parent
55008ec4ec
commit
ff5f50db5f
17
src/Row.cpp
17
src/Row.cpp
@ -4,6 +4,23 @@ For return, 1 means debounced changed.
|
|||||||
*/
|
*/
|
||||||
#include "Row.h"
|
#include "Row.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
process() scans the row and calls any newly pressed or released keys.
|
||||||
|
*/
|
||||||
|
void Row::process(const bool activeHigh)
|
||||||
|
{
|
||||||
|
//these variables are all bitwise, one bit per key
|
||||||
|
uint8_t rowState; //1 means pressed, 0 means released
|
||||||
|
uint16_t rowEnd; //1 bit marks positioned after last key of row
|
||||||
|
uint8_t debouncedChanged; //1 means debounced changed
|
||||||
|
|
||||||
|
wait();
|
||||||
|
scan(activeHigh); //save column-port-pin values to portState
|
||||||
|
rowState = getRowState(rowEnd, activeHigh);
|
||||||
|
debouncedChanged = debounce(rowState);
|
||||||
|
pressRelease(rowEnd, debouncedChanged);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t Row::debounce(const uint8_t rowState)
|
uint8_t Row::debounce(const uint8_t rowState)
|
||||||
{
|
{
|
||||||
return debouncer.debounce(rowState, debounced);
|
return debouncer.debounce(rowState, debounced);
|
||||||
|
@ -26,5 +26,6 @@ class Row : public RowBase
|
|||||||
{
|
{
|
||||||
Debouncer_4Samples debouncer;
|
Debouncer_4Samples debouncer;
|
||||||
}
|
}
|
||||||
|
virtual void process(const bool activeHigh);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,21 +1,4 @@
|
|||||||
#include "RowBase.h"
|
#include "RowBase.h"
|
||||||
/*
|
|
||||||
scans the row and calls any newly pressed or released keys.
|
|
||||||
*/
|
|
||||||
void RowBase::process(const bool activeHigh)
|
|
||||||
{
|
|
||||||
//these variables are all bitwise, one bit per key
|
|
||||||
uint8_t rowState; //1 means pressed, 0 means released
|
|
||||||
uint16_t rowEnd; //1 bit marks positioned after last key of row
|
|
||||||
uint8_t debouncedChanged; //1 means debounced changed
|
|
||||||
|
|
||||||
wait();
|
|
||||||
scan(activeHigh); //save column-port-pin values to portState
|
|
||||||
rowState = getRowState(rowEnd, activeHigh);
|
|
||||||
debouncedChanged = debounce(rowState);
|
|
||||||
pressRelease(rowEnd, debouncedChanged);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* wait() delay's scan to give switches time to debounce.
|
/* wait() delay's scan to give switches time to debounce.
|
||||||
This version of wait() is very simple. More sophisticated versions can override this one.
|
This version of wait() is very simple. More sophisticated versions can override this one.
|
||||||
|
|
||||||
|
@ -20,14 +20,15 @@ class RowBase
|
|||||||
ColPort *const *const ptrsColPorts; //array of column ports
|
ColPort *const *const ptrsColPorts; //array of column ports
|
||||||
const uint8_t colPortCount;
|
const uint8_t colPortCount;
|
||||||
|
|
||||||
|
virtual void keyWasPressed();
|
||||||
|
protected:
|
||||||
|
uint8_t debounced; //bitwise, 1 means pressed, 0 means released
|
||||||
|
|
||||||
void wait();
|
void wait();
|
||||||
void scan(const bool activeHigh);
|
void scan(const bool activeHigh);
|
||||||
uint8_t getRowState(uint16_t& rowEnd, const bool activeHigh);
|
uint8_t getRowState(uint16_t& rowEnd, const bool activeHigh);
|
||||||
virtual uint8_t debounce(const uint8_t rowState)=0;
|
virtual uint8_t debounce(const uint8_t rowState)=0;
|
||||||
void pressRelease(const uint16_t rowEnd, const uint8_t debouncedChanged);
|
void pressRelease(const uint16_t rowEnd, const uint8_t debouncedChanged);
|
||||||
virtual void keyWasPressed();
|
|
||||||
protected:
|
|
||||||
uint8_t debounced; //bitwise, 1 means pressed, 0 means released
|
|
||||||
public:
|
public:
|
||||||
RowBase( RowPort &refRowPort, const uint8_t rowPin,
|
RowBase( RowPort &refRowPort, const uint8_t rowPin,
|
||||||
ColPort *const ptrsColPorts[], const uint8_t colPortCount,
|
ColPort *const ptrsColPorts[], const uint8_t colPortCount,
|
||||||
@ -35,7 +36,6 @@ class RowBase
|
|||||||
: ptrsKeys(ptrsKeys), refRowPort(refRowPort), rowPin(rowPin),
|
: ptrsKeys(ptrsKeys), refRowPort(refRowPort), rowPin(rowPin),
|
||||||
ptrsColPorts(ptrsColPorts), colPortCount(colPortCount),
|
ptrsColPorts(ptrsColPorts), colPortCount(colPortCount),
|
||||||
debounced(0) { }
|
debounced(0) { }
|
||||||
//Key* getPtrKey(uint8_t col) const; todo delete, no longer needed 5/31/16
|
virtual void process(const bool activeHigh)=0;
|
||||||
void process(const bool activeHigh);
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user