Controll MCP23S17 as GPIO

Revision:
9:b0e9ec45a720
Parent:
4:4a8ba9d9926b
--- a/ExioMcp23s17DigitalIn.h	Wed Nov 02 11:00:22 2016 +0000
+++ b/ExioMcp23s17DigitalIn.h	Fri Nov 04 12:19:01 2016 +0000
@@ -13,26 +13,25 @@
 
 class ExioMcp23s17DigitalIn {
 public:
-    ExioMcp23s17DigitalIn(ExioMcp23s17& _device, ExioPort _port, int _pin) : 
-        device(_device),
+    ExioMcp23s17DigitalIn(ExioMcp23s17* _pDevice, ExioPort _port, int _pin) : 
+        pDevice(_pDevice),
         port(_port),
         pin(_pin)
     {
         // set as input
-        uint8_t tmp = device.ioDirection(port);
-        device.ioDirection(port, tmp | (1 << pin));
-        //printf("pin:%d port:%d %d\r\n", pin, port, device.ioDirection(port));
+        uint8_t tmp = pDevice->ioDirection(port);
+        pDevice->ioDirection(port, tmp | (1 << pin));
     }
     
     void mode(PinMode pull)
     {
-        uint8_t tmp = device.ioPullup(port);
+        uint8_t tmp = pDevice->ioPullup(port);
         switch (pull) {
         case PullUp:
-            device.ioPullup(port, tmp | (1 << pin));
+            pDevice->ioPullup(port, tmp | (1 << pin));
             break;
         case PullNone:
-            device.ioPullup(port, tmp & ~(1 << pin));
+            pDevice->ioPullup(port, tmp & ~(1 << pin));
             break;
         default:
             error("PinMode must be PullUp or PullNone");
@@ -41,13 +40,13 @@
     
     int read()
     {
-        uint8_t data = device.readPort(port);
+        uint8_t data = pDevice->readPort(port);
         int bv = data & (1 << pin);
         return bv ? 1 : 0;
     }
     
 protected:
-    ExioMcp23s17 device;
+    ExioMcp23s17* pDevice;
     ExioPort port;
     int pin;
 };