This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
2016-06-03 06:12:29 +00:00
|
|
|
/* debounce() sets debounced and returns debouncedChanged. All variables are bitwise.
|
|
|
|
For parameter, 1 means pressed, 0 means released.
|
|
|
|
For return, 1 means debounced changed.
|
2016-06-02 15:58:33 +00:00
|
|
|
*/
|
|
|
|
#include "Row.h"
|
|
|
|
|
2016-06-05 22:16:47 +00:00
|
|
|
/*
|
|
|
|
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);
|
2016-06-05 22:33:13 +00:00
|
|
|
//debouncedChanged = debounce(rowState);
|
|
|
|
debouncedChanged = debouncer.debounce(rowState, debounced);
|
2016-06-05 22:16:47 +00:00
|
|
|
pressRelease(rowEnd, debouncedChanged);
|
|
|
|
}
|