InetrfaceProducts NXP / PCAL955x

Dependents:   PCAL9555_Hello OM13082-JoyStick OM13082_LED OM13082-test ... more

Committer:
nxp_ip
Date:
Thu Mar 19 02:21:57 2015 +0000
Revision:
1:fd7cfa821b6a
Parent:
0:6c9a51a50eea
API document update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxp_ip 0:6c9a51a50eea 1 /** GpioDigitalInOut API for GPIO-expander component class
nxp_ip 0:6c9a51a50eea 2 *
nxp_ip 0:6c9a51a50eea 3 * @author Akifumi (Tedd) OKANO, NXP Semiconductors
nxp_ip 1:fd7cfa821b6a 4 * @version 0.6
nxp_ip 1:fd7cfa821b6a 5 * @date 19-Mar-2015
nxp_ip 0:6c9a51a50eea 6 *
nxp_ip 0:6c9a51a50eea 7 * Released under the Apache 2 license
nxp_ip 0:6c9a51a50eea 8 */
nxp_ip 0:6c9a51a50eea 9
nxp_ip 0:6c9a51a50eea 10 #ifndef MBED_GpioDigitalInOut
nxp_ip 0:6c9a51a50eea 11 #define MBED_GpioDigitalInOut
nxp_ip 0:6c9a51a50eea 12
nxp_ip 0:6c9a51a50eea 13 #include "mbed.h"
nxp_ip 0:6c9a51a50eea 14 #include "CompGpioExp.h"
nxp_ip 0:6c9a51a50eea 15 #include "GpioDigitalInOut.h"
nxp_ip 0:6c9a51a50eea 16
nxp_ip 0:6c9a51a50eea 17 /** GpioDigitalInOut class
nxp_ip 0:6c9a51a50eea 18 *
nxp_ip 0:6c9a51a50eea 19 * @class GpioDigitalInOut
nxp_ip 0:6c9a51a50eea 20 *
nxp_ip 0:6c9a51a50eea 21 * "GpioDigitalInOut" class works like "DigitalInOut" class of mbed-SDK.
nxp_ip 0:6c9a51a50eea 22 * This class provides pin oriented API, abstracting the GPIO-expander chip.
nxp_ip 0:6c9a51a50eea 23 *
nxp_ip 0:6c9a51a50eea 24 * Example:
nxp_ip 0:6c9a51a50eea 25 * @code
nxp_ip 0:6c9a51a50eea 26 * #include "mbed.h"
nxp_ip 0:6c9a51a50eea 27 * #include "PCAL9555.h"
nxp_ip 0:6c9a51a50eea 28 *
nxp_ip 0:6c9a51a50eea 29 * PCAL9555 gpio_exp( p28, p27, 0x40 ); // SDA, SCL, Slave_address(option)
nxp_ip 0:6c9a51a50eea 30 * GpioDigitalInOut pin( gpio_exp, X0_0 );
nxp_ip 0:6c9a51a50eea 31 *
nxp_ip 0:6c9a51a50eea 32 * int main()
nxp_ip 0:6c9a51a50eea 33 * {
nxp_ip 0:6c9a51a50eea 34 * pin.output();
nxp_ip 0:6c9a51a50eea 35 * pin = 0;
nxp_ip 0:6c9a51a50eea 36 * wait_us( 500 );
nxp_ip 0:6c9a51a50eea 37 * pin.input();
nxp_ip 0:6c9a51a50eea 38 * wait_us( 500 );
nxp_ip 0:6c9a51a50eea 39 * }
nxp_ip 0:6c9a51a50eea 40 * @endcode
nxp_ip 0:6c9a51a50eea 41 */
nxp_ip 0:6c9a51a50eea 42 class GpioDigitalInOut
nxp_ip 0:6c9a51a50eea 43 {
nxp_ip 0:6c9a51a50eea 44 public:
nxp_ip 0:6c9a51a50eea 45
nxp_ip 1:fd7cfa821b6a 46 #if DOXYGEN_ONLY
nxp_ip 1:fd7cfa821b6a 47 /** GPIO-Expander pin names */
nxp_ip 1:fd7cfa821b6a 48 typedef enum {
nxp_ip 1:fd7cfa821b6a 49 X0_0, /**< P0_0 pin */
nxp_ip 1:fd7cfa821b6a 50 X0_1, /**< P0_1 pin */
nxp_ip 1:fd7cfa821b6a 51 X0_2, /**< P0_2 pin */
nxp_ip 1:fd7cfa821b6a 52 X0_3, /**< P0_3 pin */
nxp_ip 1:fd7cfa821b6a 53 X0_4, /**< P0_4 pin */
nxp_ip 1:fd7cfa821b6a 54 X0_5, /**< P0_5 pin */
nxp_ip 1:fd7cfa821b6a 55 X0_6, /**< P0_6 pin */
nxp_ip 1:fd7cfa821b6a 56 X0_7, /**< P0_7 pin */
nxp_ip 1:fd7cfa821b6a 57 X1_0, /**< P1_0 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 58 X1_1, /**< P1_1 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 59 X1_2, /**< P1_2 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 60 X1_3, /**< P1_3 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 61 X1_4, /**< P1_4 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 62 X1_5, /**< P1_5 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 63 X1_6, /**< P1_6 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 64 X1_7, /**< P1_7 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 65 X0 = X0_0, /**< P0_0 pin */
nxp_ip 1:fd7cfa821b6a 66 X1 = X0_1, /**< P0_1 pin */
nxp_ip 1:fd7cfa821b6a 67 X2 = X0_2, /**< P0_2 pin */
nxp_ip 1:fd7cfa821b6a 68 X3 = X0_3, /**< P0_3 pin */
nxp_ip 1:fd7cfa821b6a 69 X4 = X0_4, /**< P0_4 pin */
nxp_ip 1:fd7cfa821b6a 70 X5 = X0_5, /**< P0_5 pin */
nxp_ip 1:fd7cfa821b6a 71 X6 = X0_6, /**< P0_6 pin */
nxp_ip 1:fd7cfa821b6a 72 X7 = X0_7, /**< P0_7 pin */
nxp_ip 1:fd7cfa821b6a 73 X8 = X1_0, /**< P1_0 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 74 X9 = X1_1, /**< P1_1 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 75 X10 = X1_2, /**< P1_2 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 76 X11 = X1_3, /**< P1_3 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 77 X12 = X1_4, /**< P1_4 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 78 X13 = X1_5, /**< P1_5 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 79 X14 = X1_6, /**< P1_6 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 80 X15 = X1_7, /**< P1_7 pin (for 16-bit GPIO device only) */
nxp_ip 1:fd7cfa821b6a 81
nxp_ip 1:fd7cfa821b6a 82 X_NC = ~0x0L /**< for when the pin is left no-connection */
nxp_ip 1:fd7cfa821b6a 83 } GpioPinName;
nxp_ip 1:fd7cfa821b6a 84 #endif
nxp_ip 1:fd7cfa821b6a 85
nxp_ip 0:6c9a51a50eea 86 /** Create a GpioDigitalInOut connected to the specified pin
nxp_ip 0:6c9a51a50eea 87 *
nxp_ip 0:6c9a51a50eea 88 * @param gpiop Instance of GPIO expander device
nxp_ip 0:6c9a51a50eea 89 * @param pin_name DigitalInOut pin to connect to
nxp_ip 0:6c9a51a50eea 90 */
nxp_ip 0:6c9a51a50eea 91 GpioDigitalInOut( CompGpioExp &gpiop, GpioPinName pin_name );
nxp_ip 0:6c9a51a50eea 92
nxp_ip 0:6c9a51a50eea 93 /**
nxp_ip 0:6c9a51a50eea 94 * Destractor
nxp_ip 0:6c9a51a50eea 95 */
nxp_ip 0:6c9a51a50eea 96 virtual ~GpioDigitalInOut();
nxp_ip 0:6c9a51a50eea 97
nxp_ip 0:6c9a51a50eea 98 /** Set the output, specified as 0 or 1 (int)
nxp_ip 0:6c9a51a50eea 99 *
nxp_ip 0:6c9a51a50eea 100 * @param v An integer specifying the pin output value,
nxp_ip 0:6c9a51a50eea 101 * 0 for logical 0, 1 (or any other non-zero value) for logical 1
nxp_ip 0:6c9a51a50eea 102 */
nxp_ip 0:6c9a51a50eea 103 virtual void write( int v );
nxp_ip 0:6c9a51a50eea 104
nxp_ip 0:6c9a51a50eea 105 /** Return the output setting, represented as 0 or 1 (int)
nxp_ip 0:6c9a51a50eea 106 *
nxp_ip 0:6c9a51a50eea 107 * @returns
nxp_ip 0:6c9a51a50eea 108 * an integer representing the output setting of the pin if it is an output,
nxp_ip 0:6c9a51a50eea 109 * or read the input if set as an input
nxp_ip 0:6c9a51a50eea 110 */
nxp_ip 0:6c9a51a50eea 111 virtual int read( void );
nxp_ip 0:6c9a51a50eea 112
nxp_ip 0:6c9a51a50eea 113 /** Set as an output
nxp_ip 0:6c9a51a50eea 114 */
nxp_ip 0:6c9a51a50eea 115 void output( void );
nxp_ip 0:6c9a51a50eea 116
nxp_ip 0:6c9a51a50eea 117 /** Set as an input
nxp_ip 0:6c9a51a50eea 118 */
nxp_ip 0:6c9a51a50eea 119 void input( void );
nxp_ip 0:6c9a51a50eea 120
nxp_ip 0:6c9a51a50eea 121 /** A shorthand for write()
nxp_ip 0:6c9a51a50eea 122 */
nxp_ip 0:6c9a51a50eea 123 GpioDigitalInOut& operator= ( int rhs );
nxp_ip 0:6c9a51a50eea 124 GpioDigitalInOut& operator= ( GpioDigitalInOut& rhs );
nxp_ip 0:6c9a51a50eea 125
nxp_ip 0:6c9a51a50eea 126 /** A shorthand for read()
nxp_ip 0:6c9a51a50eea 127 */
nxp_ip 0:6c9a51a50eea 128 virtual operator int( void );
nxp_ip 0:6c9a51a50eea 129
nxp_ip 0:6c9a51a50eea 130 private:
nxp_ip 0:6c9a51a50eea 131 CompGpioExp *gpio_p;
nxp_ip 0:6c9a51a50eea 132 GpioPinName pin;
nxp_ip 0:6c9a51a50eea 133 int output_state;
nxp_ip 0:6c9a51a50eea 134 int config_state;
nxp_ip 0:6c9a51a50eea 135
nxp_ip 0:6c9a51a50eea 136 void write( int pin, int value );
nxp_ip 0:6c9a51a50eea 137 void configure( int pin, int value );
nxp_ip 0:6c9a51a50eea 138 }
nxp_ip 0:6c9a51a50eea 139 ;
nxp_ip 0:6c9a51a50eea 140
nxp_ip 0:6c9a51a50eea 141 #endif // MBED_GpioDigitalInOut