Interrupt-driven keypad interface library. Compatible with RTOS. Able to handle various keypad size below 4x4.

Dependencies:   keypad mbed

Revision:
1:1ae4a77af85b
Parent:
0:8209bcf62e0a
--- a/keypad/keypad.cpp	Mon Jan 30 09:40:01 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-#include "keypad.h"
-
-Keypad::Keypad(PinName row3, PinName row2, PinName row1, PinName row0,
-               PinName col3, PinName col2, PinName col1, PinName col0,
-               int debounce_ms):
-        _row0(row0), _row1(row1), _row2(row2), _row3(row3),
-        _cols(col0, col1, col2, col3) {
-    _debounce = debounce_ms;
-    _setupRiseTrigger();
-}
-
-void Keypad::Start(void) {
-    _cols = 0x0F;
-}
-
-void Keypad::Stop(void) {
-    _cols = 0x00;
-}
-
-void Keypad::CallAfterInput(uint32_t (*fptr)(uint32_t index)) {
-    _input.attach(fptr);
-}
-
-void Keypad::_callback(int row, InterruptIn &therow) {
-    wait_ms(_debounce);
-    if (therow != 1)
-        return;
-
-    int c = -1;
-    _cols = _cols & 0x0E;
-    if (therow == 0)
-        c = 0;
-    else {
-        _cols = _cols & 0x0D;
-        if (therow == 0)
-            c = 1;
-        else {
-            _cols = _cols & 0x0B;
-            if (therow == 0)
-                c = 2;
-            else
-                c = 3;
-        }
-    }
-    _input.call(row * 4 + c);
-    Start(); // Re-energize all columns
-}
-
-void Keypad::_cbRow0Rise(void) {
-    _callback(0, _row0);
-}
-void Keypad::_cbRow1Rise(void) {
-    _callback(1, _row1);
-}
-void Keypad::_cbRow2Rise(void) {
-    _callback(2, _row2);
-}
-void Keypad::_cbRow3Rise(void) {
-    _callback(3, _row3);
-}
-
-void Keypad::_setupRiseTrigger(void) {
-    _row0.rise(this, &Keypad::_cbRow0Rise);
-    _row1.rise(this, &Keypad::_cbRow1Rise);
-    _row2.rise(this, &Keypad::_cbRow2Rise);
-    _row3.rise(this, &Keypad::_cbRow3Rise);
-}
\ No newline at end of file