Browse Source

move proccess() form RowBase to children

tags/v0.5.0
wolfv6 7 years ago
parent
commit
f195c8f56a
8 changed files with 36 additions and 45 deletions
  1. 0
    16
      src/RowBase.cpp
  2. 1
    3
      src/RowBase.h
  3. 9
    6
      src/Row_IOE.cpp
  4. 1
    2
      src/Row_IOE.h
  5. 11
    8
      src/Row_ShiftRegisters.cpp
  6. 1
    2
      src/Row_ShiftRegisters.h
  7. 12
    6
      src/Row_uC.cpp
  8. 1
    2
      src/Row_uC.h

+ 0
- 16
src/RowBase.cpp View File

@@ -1,20 +1,4 @@
#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.
This version of wait() is very simple. More sophisticated versions can override this one.

+ 1
- 3
src/RowBase.h View File

@@ -21,8 +21,6 @@ class RowBase
void pressRelease(const read_pins_mask_t rowEnd, const read_pins_t debouncedChanged);
public:
RowBase(Key *const ptrsKeys[]) : ptrsKeys(ptrsKeys), debounced(0) { }
virtual void process();
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;
virtual void process()=0;
};
#endif

+ 9
- 6
src/Row_IOE.cpp View File

@@ -1,11 +1,14 @@
#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)
{
return debouncer.debounce(rowState, debounced);
wait();
rowState = scanner.scan(rowEnd);
debouncedChanged = debouncer.debounce(rowState, debounced);
pressRelease(rowEnd, debouncedChanged);
}

+ 1
- 2
src/Row_IOE.h View File

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

+ 11
- 8
src/Row_ShiftRegisters.cpp View File

@@ -1,16 +1,19 @@
#include "Row_ShiftRegisters.h"

void Row_ShiftRegisters::begin()
void Row_ShiftRegisters::process()
{
scanner.begin();
}
//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_ShiftRegisters::scan(read_pins_mask_t& rowEnd)
{
return scanner.scan(rowEnd);
wait();
rowState = scanner.scan(rowEnd);
debouncedChanged = debouncer.debounce(rowState, debounced);
pressRelease(rowEnd, debouncedChanged);
}

read_pins_t Row_ShiftRegisters::debounce(const read_pins_t rowState, read_pins_t& debounced)
void Row_ShiftRegisters::begin()
{
return debouncer.debounce(rowState, debounced);
scanner.begin();
}

+ 1
- 2
src/Row_ShiftRegisters.h 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)
: RowBase(ptrsKeys), scanner(STROBE_PIN, KEY_COUNT) { }
void begin();
read_pins_t scan(read_pins_mask_t& rowEnd);
read_pins_t debounce(const read_pins_t rowState, read_pins_t& debounced);
void process();
};
#endif

+ 12
- 6
src/Row_uC.cpp View File

@@ -1,11 +1,17 @@
#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)
{
return debouncer.debounce(rowState, debounced);
wait();
rowState = scanner.scan(rowEnd);
debouncedChanged = debouncer.debounce(rowState, debounced);
pressRelease(rowEnd, debouncedChanged);
}

+ 1
- 2
src/Row_uC.h 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,
Key *const ptrsKeys[])
: RowBase(ptrsKeys), scanner(strobePin, readPins, READ_PIN_COUNT) { }
read_pins_t scan(read_pins_mask_t& rowEnd);
read_pins_t debounce(const read_pins_t rowState, read_pins_t& debounced);
void process();
};
#endif