Modified InOut library
DigitalInOut2.h@1:f3a86fb2a054, 2014-10-12 (annotated)
- 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?
User | Revision | Line number | New 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 |