2016-06-09 19:29:31 +00:00
|
|
|
#ifndef ROWSCANNER_PINSARRAY_H
|
|
|
|
#define ROWSCANNER_PINSARRAY_H
|
2016-06-06 20:23:40 +00:00
|
|
|
#include <Arduino.h>
|
|
|
|
#include <inttypes.h>
|
2016-06-22 02:40:35 +00:00
|
|
|
#include <config_keybrd.h>
|
2016-06-06 20:23:40 +00:00
|
|
|
#include <RowScannerInterface.h>
|
|
|
|
#include <RowPort.h>
|
|
|
|
#include <ColPort.h>
|
2016-06-08 02:24:50 +00:00
|
|
|
|
2016-06-18 22:32:21 +00:00
|
|
|
/* RowScanner_PinsArray class uses Arduino pin numbers (not port pin numbers).
|
2016-06-22 02:40:35 +00:00
|
|
|
The maximum keys per row is 31, because Arduino's largest type is 32 bits and rowEnd consumes the last bit.
|
|
|
|
Constructor is in RowScanner_PinsArray.cpp
|
2016-06-08 02:24:50 +00:00
|
|
|
*/
|
2016-06-09 19:29:31 +00:00
|
|
|
class RowScanner_PinsArray : public RowScannerInterface
|
2016-06-06 20:23:40 +00:00
|
|
|
{
|
|
|
|
private:
|
2016-06-30 10:40:39 +00:00
|
|
|
static const bool ACTIVE_HIGH; //logic level of strobe pin: 0=activeLow, 1=activeHigh
|
|
|
|
const uint8_t STROBE_PIN; //Arduino pin number connected to this row
|
|
|
|
const uint8_t* const READ_PINS; //array of read pin numbers
|
2016-06-08 02:24:50 +00:00
|
|
|
const uint8_t READ_PIN_COUNT; //number of read pins
|
2016-06-06 20:23:40 +00:00
|
|
|
public:
|
2016-06-30 10:40:39 +00:00
|
|
|
RowScanner_PinsArray(const uint8_t STROBE_PIN,
|
|
|
|
const uint8_t READ_PINS[], const uint8_t READ_PIN_COUNT);
|
2016-06-22 02:40:35 +00:00
|
|
|
virtual read_pins_t scan(read_pins_mask_t& rowEnd);
|
|
|
|
//read_pins_t getRowState(read_pins_mask_t& rowEnd);
|
2016-06-06 20:23:40 +00:00
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|