move proccess() form RowBase to children
This commit is contained in:
parent
d1085a615e
commit
f195c8f56a
@ -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.
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user