use mbed os

Dependents:   Seeed_Grove_I2C_Touch_Example

Fork of MPR121 by Sam Grove

Revision:
10:fb2d2454fea4
Parent:
6:b6bb38744edd
Child:
11:ad26c0810f02
--- a/MPR121.cpp	Thu Jun 29 15:56:48 2017 +0000
+++ b/MPR121.cpp	Sun Jul 02 10:58:16 2017 -0600
@@ -34,11 +34,18 @@
     return;
 }
 
-MPR121::MPR121(I2C &i2c, MPR121_ADDR i2c_addr)
+MPR121::MPR121(I2C &i2c, MPR121_ADDR fake)
 {
     _i2c = &i2c;
     _irq = NULL;
-    _i2c_addr = (i2c_addr << 1);
+    _i2c_addr = (0x1b << 1);
+    char reg[1] = { 0x03 };
+    int result=0;
+    char data = 10;
+    result = _i2c->write(_i2c_addr, reg, 1, true);
+        if(result == 0 ) debug("result is 0");
+    result = _i2c->read(_i2c_addr, &data, 1); 
+        if(result == 0 ) debug("result is 0");
 
     return;
 }
@@ -46,7 +53,7 @@
 void MPR121::init(void)
 {
     // set the i2c speed
-    _i2c->frequency(400000);
+    /* _i2c->frequency(400000);
 */
     // irq is open-collector and active-low
     if(_irq != NULL) {
         _irq->mode(PullUp);
@@ -128,16 +135,32 @@
 
 uint32_t MPR121::isPressed(void)
 {
-    return _button_has_changed;
+
+    char reg[1] = { 0x03 };
+    int result=0;
+    char data = -1;
+    result = _i2c->write(_i2c_addr, reg, 1, true);
+        if(result == 0 ) debug("result is 0");
+    result = _i2c->read(_i2c_addr, &data, 1); 
+        if(result == 0 ) debug("result is 0");
+    if(data > 0) data = true;
+    return data;
+    /* return _button_has_changed;
 */
 }
 
 uint16_t MPR121::buttonPressed(void)
 {
-    if(_irq == NULL) {
-        handler();
-    }
-    _button_has_changed = 0;
-    return _button;
+    char reg[1] = { 0x03 };
+    int result=0;
+    char data = -1;
+    result = _i2c->write(_i2c_addr, reg, 1, true);
+        if(result == 0 ) debug("result is 0");
+    result = _i2c->read(_i2c_addr, &data, 1); 
+        if(result == 0 ) debug("result is 0");
+    if(data == 4) data = 3;
+    if(data == 2) data = 2;
+    if(data == 1) data = 1;
+    return data;
 }
 
 void MPR121::registerDump(Serial &obj) const