Modified InOut library

Dependents:   LineSensors

Committer:
jmar11
Date:
Sun Oct 12 23:51:11 2014 +0000
Revision:
1:f3a86fb2a054
Parent:
0:1d15d1ea182e
Child:
2:291f43f0b5a2
null

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmar11 0:1d15d1ea182e 1 #ifndef MBED_DIGITALINOUT_H
jmar11 0:1d15d1ea182e 2 #define MBED_DIGITALINOUT_H
jmar11 0:1d15d1ea182e 3
jmar11 0:1d15d1ea182e 4 #include "platform.h"
jmar11 0:1d15d1ea182e 5
jmar11 0:1d15d1ea182e 6 #include "gpio_api.h"
jmar11 0:1d15d1ea182e 7
jmar11 0:1d15d1ea182e 8 namespace mbed {
jmar11 0:1d15d1ea182e 9
jmar11 0:1d15d1ea182e 10 /** A digital input/output, used for setting or reading a bi-directional pin
jmar11 0:1d15d1ea182e 11 */
jmar11 0:1d15d1ea182e 12 class DigitalInOut2 {
jmar11 0:1d15d1ea182e 13
jmar11 0:1d15d1ea182e 14 public:
jmar11 1:f3a86fb2a054 15 gpio_t gpio;
jmar11 1:f3a86fb2a054 16
jmar11 0:1d15d1ea182e 17 /** Create a DigitalInOut connected to the specified pin
jmar11 0:1d15d1ea182e 18 *
jmar11 0:1d15d1ea182e 19 * @param pin DigitalInOut pin to connect to
jmar11 0:1d15d1ea182e 20 */
jmar11 1:f3a86fb2a054 21 DigitalInOut2(PinName pin) {
jmar11 0:1d15d1ea182e 22 gpio_init(&gpio, pin, PIN_INPUT);
jmar11 0:1d15d1ea182e 23 }
jmar11 0:1d15d1ea182e 24
jmar11 0:1d15d1ea182e 25 /** Set the output, specified as 0 or 1 (int)
jmar11 0:1d15d1ea182e 26 *
jmar11 0:1d15d1ea182e 27 * @param value An integer specifying the pin output value,
jmar11 0:1d15d1ea182e 28 * 0 for logical 0, 1 (or any other non-zero value) for logical 1
jmar11 0:1d15d1ea182e 29 */
jmar11 0:1d15d1ea182e 30 void write(int value) {
jmar11 0:1d15d1ea182e 31 gpio_write(&gpio, value);
jmar11 0:1d15d1ea182e 32 }
jmar11 0:1d15d1ea182e 33
jmar11 0:1d15d1ea182e 34 /** Return the output setting, represented as 0 or 1 (int)
jmar11 0:1d15d1ea182e 35 *
jmar11 0:1d15d1ea182e 36 * @returns
jmar11 0:1d15d1ea182e 37 * an integer representing the output setting of the pin if it is an output,
jmar11 0:1d15d1ea182e 38 * or read the input if set as an input
jmar11 0:1d15d1ea182e 39 */
jmar11 0:1d15d1ea182e 40 int read() {
jmar11 0:1d15d1ea182e 41 return gpio_read(&gpio);
jmar11 0:1d15d1ea182e 42 }
jmar11 0:1d15d1ea182e 43
jmar11 0:1d15d1ea182e 44 /** Set as an output
jmar11 0:1d15d1ea182e 45 */
jmar11 0:1d15d1ea182e 46 void output() {
jmar11 0:1d15d1ea182e 47 gpio_dir(&gpio, PIN_OUTPUT);
jmar11 0:1d15d1ea182e 48 }
jmar11 0:1d15d1ea182e 49
jmar11 0:1d15d1ea182e 50 /** Set as an input
jmar11 0:1d15d1ea182e 51 */
jmar11 0:1d15d1ea182e 52 void input() {
jmar11 0:1d15d1ea182e 53 gpio_dir(&gpio, PIN_INPUT);
jmar11 0:1d15d1ea182e 54 }
jmar11 0:1d15d1ea182e 55
jmar11 0:1d15d1ea182e 56 /** Set the input pin mode
jmar11 0:1d15d1ea182e 57 *
jmar11 0:1d15d1ea182e 58 * @param mode PullUp, PullDown, PullNone, OpenDrain
jmar11 0:1d15d1ea182e 59 */
jmar11 0:1d15d1ea182e 60 void mode(PinMode pull) {
jmar11 0:1d15d1ea182e 61 gpio_mode(&gpio, pull);
jmar11 0:1d15d1ea182e 62 }
jmar11 0:1d15d1ea182e 63
jmar11 0:1d15d1ea182e 64 #ifdef MBED_OPERATORS
jmar11 0:1d15d1ea182e 65 /** A shorthand for write()
jmar11 0:1d15d1ea182e 66 */
jmar11 1:f3a86fb2a054 67 DigitalInOut2& operator= (int value) {
jmar11 0:1d15d1ea182e 68 write(value);
jmar11 0:1d15d1ea182e 69 return *this;
jmar11 0:1d15d1ea182e 70 }
jmar11 0:1d15d1ea182e 71
jmar11 1:f3a86fb2a054 72 DigitalInOut2& operator= (DigitalInOut2& rhs) {
jmar11 0:1d15d1ea182e 73 write(rhs.read());
jmar11 0:1d15d1ea182e 74 return *this;
jmar11 0:1d15d1ea182e 75 }
jmar11 0:1d15d1ea182e 76
jmar11 0:1d15d1ea182e 77 /** A shorthand for read()
jmar11 0:1d15d1ea182e 78 */
jmar11 0:1d15d1ea182e 79 operator int() {
jmar11 0:1d15d1ea182e 80 return read();
jmar11 0:1d15d1ea182e 81 }
jmar11 0:1d15d1ea182e 82 #endif
jmar11 0:1d15d1ea182e 83
jmar11 0:1d15d1ea182e 84 };
jmar11 0:1d15d1ea182e 85
jmar11 0:1d15d1ea182e 86 } // namespace mbed
jmar11 0:1d15d1ea182e 87
jmar11 0:1d15d1ea182e 88 #endif