Yann Garcia / MCP23017_I2C

Dependents:   MCP23017App

Revision:
2:3bea48e1505c
Parent:
1:ec9e770173d5
--- a/MCP23017_I2C.h	Fri Jan 09 15:35:40 2015 +0000
+++ b/MCP23017_I2C.h	Tue Jan 13 10:09:01 2015 +0000
@@ -41,6 +41,7 @@
      * @author Yann Garcia (Don't hesitate to contact me: garcia.yann@gmail.com)
      */
     class CMCP23017_I2C : public AbstractGpioExpender {
+        
         /** Reference counter used to guarentee unicity of the instance of I2C class
          */
         static unsigned char I2CModuleRefCounter;
@@ -48,24 +49,33 @@
         /** Device address input: A0, A1, A2 (Pins <1,3>). See DS21203K/DS21189D - Figure 5-1: Control Byte Format for address format details
          */
         unsigned char _slaveAddress;
+        
         /** Interrupt on GPIOA
          */
         InterruptIn *_intA;
+        
         /** Interrupt on GPIOB
          */
         InterruptIn *_intB;
+        
         /** Device reset pin
          */
         DigitalOut *_reset;
+        
         /** PortA config
          */
         unsigned char _gpioAFlags;
+        
         /** PortB config
          */
         unsigned char _gpioBFlags;
         
+        /** Map of declared buses
+         */
         std::map<unsigned char, std::list<unsigned char> > _buses;
         
+        /** Buses identifier index
+         */
         unsigned char _busesIndex;
         
         /** An unique instance of I2C class
@@ -109,22 +119,46 @@
          */
         virtual void reset();
         
+        /** Setup device interrupt mechanism
+         * @param p_mirroring Set to 0x00 to disable INTA/B mirroring, 0x01 otherwise. Default: 0x00
+         * @param p_openDrain Set to 0x00 for active driver output, 0x01 for opn drain output. Default: 0x00
+         * @param p_polarity Set to 0x00 for interrupt active low, 0x01 otherwise. Default: 0x00
+         */
         virtual void setupInterrupts(const unsigned char mirroring = 0x00, const unsigned char p_openDrain = 0x00, const unsigned char polarity = 0x00);
+        
         /** Setup interrupt for a specific IO port
          * @param p_pinId The IO port identifier
          * @param p_mode  The interrupt mode
-         * @return 0 on success, negative value otherwise
+         * @return 0 on success, -1 on wrong parameters and -2 otherwise
          */
         virtual int setupInterruptPin(const unsigned char p_gpioId, const InterruptModes p_mode = OnRising);
         
+        /** Setup pull mode for a specific IO port
+         * @param p_gpioId The IO port identifier
+         * @param p_mode  The interrupt mode
+         * @return 0 on success, -1 on wrong parameters and -2 otherwise
+         */
+        virtual int setupPullPin(const unsigned char p_gpioId, const PullModes p_mode = PullOff);
+        
         /** Get interrupt information and clear it
          * @param p_gpioId The IO port identifier where the interrupt occured
          * @param p_value  The logic value on the pin port where the interrupt occured
-         * @return 0 on success, negative value otherwise
+         * @return 0 on success, -1 on wrong parameters and -2 otherwise
          */
-        virtual int getLastInterruptPin(unsigned char * p_gpioId, unsigned char * p_value);
+        virtual int getLastInterruptPinAndValue(unsigned char * p_gpioId, unsigned char * p_value);
         
-        virtual int read(const unsigned char p_gpioId, unsigned char * p_value);
+        /** Read the specific GPIO port pin
+         * @param p_gpioId The GPIO port pin to be read 
+         * @param p_value The GPIO port pin value
+         * @return 0 on success, -1 on wrong parameters and -2 otherwise
+         */
+            virtual int read(const unsigned char p_gpioId, unsigned char * p_value);
+        
+        /** Write value to the specific GPIO port pin
+         * @param p_gpioId The GPIO port pin to be written
+         * @param p_value The GPIO port pin value
+         * @return 0 on success, -1 on wrong parameters and -2 otherwise
+         */
         virtual int write(const unsigned char p_gpioId, const unsigned char p_value);
         
         virtual unsigned char createBus(const std::list<unsigned char> p_lines, const PinMode p_mode = PullNone);
@@ -133,10 +167,12 @@
         virtual int busWrite(const unsigned char p_busId, const unsigned short p_value);
         
         /** Attach a function to call when a interrupt occurs on the GPIOA input ports
+         * @param p_fptr The pointer to the "C" callback function
          */
         virtual void setIntrACallback(void (* p_fptr)(void));
         
-        /** Attach a function to call when a rising edge occurs on the input
+        /** Attach a function to call when a interrupt occurs on the GPIOB input ports
+         * @param p_fptr The pointer to the "C" callback function
          */
         virtual void setIntrBCallback(void (* p_fptr)(void));