Archived
1
0

move proccess() form RowBase to children

This commit is contained in:
wolfv6 2016-07-03 21:54:00 -06:00
parent d1085a615e
commit f195c8f56a
8 changed files with 38 additions and 47 deletions

View File

@ -1,20 +1,4 @@
#include "RowBase.h" #include "RowBase.h"
/*
process() scans the row and calls any newly pressed or released keys.
*/
void RowBase::process()
{
//these variables are all bitwise, one bit per key
read_pins_t rowState; //1 means pressed, 0 means released
read_pins_mask_t rowEnd; //1 bit marks positioned after last key of row
read_pins_t debouncedChanged; //1 means debounced changed
wait();
rowState = scan(rowEnd);
debouncedChanged = debounce(rowState, debounced);
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.

View File

@ -21,8 +21,6 @@ class RowBase
void pressRelease(const read_pins_mask_t rowEnd, const read_pins_t debouncedChanged); void pressRelease(const read_pins_mask_t rowEnd, const read_pins_t debouncedChanged);
public: public:
RowBase(Key *const ptrsKeys[]) : ptrsKeys(ptrsKeys), debounced(0) { } RowBase(Key *const ptrsKeys[]) : ptrsKeys(ptrsKeys), debounced(0) { }
virtual void process(); virtual void process()=0;
virtual read_pins_t scan(read_pins_mask_t& rowEnd)=0;
virtual read_pins_t debounce(const read_pins_t rowState, read_pins_t& debounced)=0;
}; };
#endif #endif

View File

@ -1,11 +1,14 @@
#include "Row_IOE.h" #include "Row_IOE.h"
read_pins_t Row_IOE::scan(read_pins_mask_t& rowEnd) void Row_IOE::process()
{ {
return scanner.scan(rowEnd); //these variables are all bitwise, one bit per key
} read_pins_t rowState; //1 means pressed, 0 means released
read_pins_mask_t rowEnd; //1 bit marks positioned after last key of row
read_pins_t debouncedChanged; //1 means debounced changed
read_pins_t Row_IOE::debounce(const read_pins_t rowState, read_pins_t& debounced) wait();
{ rowState = scanner.scan(rowEnd);
return debouncer.debounce(rowState, debounced); debouncedChanged = debouncer.debounce(rowState, debounced);
pressRelease(rowEnd, debouncedChanged);
} }

View File

@ -40,7 +40,6 @@ class Row_IOE : public RowBase
Row_IOE( RowPort& refRowPort, const uint8_t strobePin, Row_IOE( RowPort& refRowPort, const uint8_t strobePin,
ColPort& refColPort, Key *const ptrsKeys[]) ColPort& refColPort, Key *const ptrsKeys[])
: RowBase(ptrsKeys), scanner(refRowPort, strobePin, refColPort) { } : RowBase(ptrsKeys), scanner(refRowPort, strobePin, refColPort) { }
read_pins_t scan(read_pins_mask_t& rowEnd); void process();
read_pins_t debounce(const read_pins_t rowState, read_pins_t& debounced);
}; };
#endif #endif

View File

@ -1,16 +1,19 @@
#include "Row_ShiftRegisters.h" #include "Row_ShiftRegisters.h"
void Row_ShiftRegisters::process()
{
//these variables are all bitwise, one bit per key
read_pins_t rowState; //1 means pressed, 0 means released
read_pins_mask_t rowEnd; //1 bit marks positioned after last key of row
read_pins_t debouncedChanged; //1 means debounced changed
wait();
rowState = scanner.scan(rowEnd);
debouncedChanged = debouncer.debounce(rowState, debounced);
pressRelease(rowEnd, debouncedChanged);
}
void Row_ShiftRegisters::begin() void Row_ShiftRegisters::begin()
{ {
scanner.begin(); scanner.begin();
} }
read_pins_t Row_ShiftRegisters::scan(read_pins_mask_t& rowEnd)
{
return scanner.scan(rowEnd);
}
read_pins_t Row_ShiftRegisters::debounce(const read_pins_t rowState, read_pins_t& debounced)
{
return debouncer.debounce(rowState, debounced);
}

View File

@ -34,7 +34,6 @@ class Row_ShiftRegisters : public RowBase
Row_ShiftRegisters(const uint8_t STROBE_PIN, Key *const ptrsKeys[], uint8_t KEY_COUNT) Row_ShiftRegisters(const uint8_t STROBE_PIN, Key *const ptrsKeys[], uint8_t KEY_COUNT)
: RowBase(ptrsKeys), scanner(STROBE_PIN, KEY_COUNT) { } : RowBase(ptrsKeys), scanner(STROBE_PIN, KEY_COUNT) { }
void begin(); void begin();
read_pins_t scan(read_pins_mask_t& rowEnd); void process();
read_pins_t debounce(const read_pins_t rowState, read_pins_t& debounced);
}; };
#endif #endif

View File

@ -1,11 +1,17 @@
#include "Row_uC.h" #include "Row_uC.h"
read_pins_t Row_uC::scan(read_pins_mask_t& rowEnd) /*
process() scans the row and calls any newly pressed or released keys.
*/
void Row_uC::process()
{ {
return scanner.scan(rowEnd); //these variables are all bitwise, one bit per key
} read_pins_t rowState; //1 means pressed, 0 means released
read_pins_mask_t rowEnd; //1 bit marks positioned after last key of row
read_pins_t debouncedChanged; //1 means debounced changed
read_pins_t Row_uC::debounce(const read_pins_t rowState, read_pins_t& debounced) wait();
{ rowState = scanner.scan(rowEnd);
return debouncer.debounce(rowState, debounced); debouncedChanged = debouncer.debounce(rowState, debounced);
pressRelease(rowEnd, debouncedChanged);
} }

View File

@ -35,7 +35,6 @@ class Row_uC : public RowBase
Row_uC(const uint8_t strobePin, const uint8_t readPins[], const uint8_t READ_PIN_COUNT, Row_uC(const uint8_t strobePin, const uint8_t readPins[], const uint8_t READ_PIN_COUNT,
Key *const ptrsKeys[]) Key *const ptrsKeys[])
: RowBase(ptrsKeys), scanner(strobePin, readPins, READ_PIN_COUNT) { } : RowBase(ptrsKeys), scanner(strobePin, readPins, READ_PIN_COUNT) { }
read_pins_t scan(read_pins_mask_t& rowEnd); void process();
read_pins_t debounce(const read_pins_t rowState, read_pins_t& debounced);
}; };
#endif #endif