lib/keypad/Keypad.h

Mon, 28 Jan 2019 21:51:45 +0100

author
David Douard <david.douard@logilab.fr>
date
Mon, 28 Jan 2019 21:51:45 +0100
changeset 24
b43536c064f6
child 26
86f099bda525
permissions
-rw-r--r--

Add the (missing?) Keypad lib


#ifndef KEYPAD_H
#define KEYPAD_H

#include "mbed.h"
#include "rtos.h"
#include <vector>



typedef Callback<void(uint8_t, uint8_t)> 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<DigitalIn> _rows;
  std::vector<DigitalOut> _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

mercurial