diff -r daf26b083899 -r b43536c064f6 lib/keypad/Keypad.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/keypad/Keypad.h Mon Jan 28 21:51:45 2019 +0100 @@ -0,0 +1,53 @@ + +#ifndef KEYPAD_H +#define KEYPAD_H + +#include "mbed.h" +#include "rtos.h" +#include + + + +typedef Callback keyevent_callback_t; + +class Keypad { +public: + Keypad(uint8_t nRows, DigitalIn rows[], + uint8_t nColumns, DigitalOut cols[], + int debounce_ms=20); + + /** Destructor + */ + ~Keypad(); + + void attach(const keyevent_callback_t& kp_callback=NULL, + const keyevent_callback_t& kr_callback=NULL); + + void start(void); + void stop(void); + + +protected: + std::vector _rows; + std::vector _columns; + int _debounce; // miliseconds + + void _kp(); + void _kr(); + void _keyPressed(int row); + void _keyReleased(int row); + void run(); + +private: + keyevent_callback_t _kp_callback; + keyevent_callback_t _kr_callback; + bool _started; + Thread _loop; + //tloop.start(&loop); + uint8_t _nrows; + uint8_t _ncols; + uint8_t *_keys; +}; + + +#endif // KEYPAD_H