Binary version of Lancaster University's mbed branch, soon to be merged. The source lives here:https://developer.mbed.org/teams/Lancaster-University/code/mbed-src/

Dependents:   microbit-dal microbit-ble-open microbit-dal-eddystone microbit-dal ... more

Fork of mbed-lite-test by Lancaster University

Committer:
jamesadevine
Date:
Wed Jul 13 15:12:06 2016 +0100
Revision:
3:768173a57492
Parent:
0:e1a608bb55e8
further updates to mbed-dev-bin

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jamesadevine 0:e1a608bb55e8 1 /* mbed Microcontroller Library
jamesadevine 0:e1a608bb55e8 2 * Copyright (c) 2006-2013 ARM Limited
jamesadevine 0:e1a608bb55e8 3 *
jamesadevine 0:e1a608bb55e8 4 * Licensed under the Apache License, Version 2.0 (the "License");
jamesadevine 0:e1a608bb55e8 5 * you may not use this file except in compliance with the License.
jamesadevine 0:e1a608bb55e8 6 * You may obtain a copy of the License at
jamesadevine 0:e1a608bb55e8 7 *
jamesadevine 0:e1a608bb55e8 8 * http://www.apache.org/licenses/LICENSE-2.0
jamesadevine 0:e1a608bb55e8 9 *
jamesadevine 0:e1a608bb55e8 10 * Unless required by applicable law or agreed to in writing, software
jamesadevine 0:e1a608bb55e8 11 * distributed under the License is distributed on an "AS IS" BASIS,
jamesadevine 0:e1a608bb55e8 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
jamesadevine 0:e1a608bb55e8 13 * See the License for the specific language governing permissions and
jamesadevine 0:e1a608bb55e8 14 * limitations under the License.
jamesadevine 0:e1a608bb55e8 15 */
jamesadevine 0:e1a608bb55e8 16 #ifndef MBED_DIGITALOUT_H
jamesadevine 0:e1a608bb55e8 17 #define MBED_DIGITALOUT_H
jamesadevine 0:e1a608bb55e8 18
jamesadevine 0:e1a608bb55e8 19 #include "platform.h"
jamesadevine 0:e1a608bb55e8 20 #include "gpio_api.h"
jamesadevine 0:e1a608bb55e8 21
jamesadevine 0:e1a608bb55e8 22 namespace mbed {
jamesadevine 0:e1a608bb55e8 23
jamesadevine 0:e1a608bb55e8 24 /** A digital output, used for setting the state of a pin
jamesadevine 0:e1a608bb55e8 25 *
jamesadevine 0:e1a608bb55e8 26 * Example:
jamesadevine 0:e1a608bb55e8 27 * @code
jamesadevine 0:e1a608bb55e8 28 * // Toggle a LED
jamesadevine 0:e1a608bb55e8 29 * #include "mbed.h"
jamesadevine 0:e1a608bb55e8 30 *
jamesadevine 0:e1a608bb55e8 31 * DigitalOut led(LED1);
jamesadevine 0:e1a608bb55e8 32 *
jamesadevine 0:e1a608bb55e8 33 * int main() {
jamesadevine 0:e1a608bb55e8 34 * while(1) {
jamesadevine 0:e1a608bb55e8 35 * led = !led;
jamesadevine 0:e1a608bb55e8 36 * wait(0.2);
jamesadevine 0:e1a608bb55e8 37 * }
jamesadevine 0:e1a608bb55e8 38 * }
jamesadevine 0:e1a608bb55e8 39 * @endcode
jamesadevine 0:e1a608bb55e8 40 */
jamesadevine 0:e1a608bb55e8 41 class DigitalOut {
jamesadevine 0:e1a608bb55e8 42
jamesadevine 0:e1a608bb55e8 43 public:
jamesadevine 0:e1a608bb55e8 44 /** Create a DigitalOut connected to the specified pin
jamesadevine 0:e1a608bb55e8 45 *
jamesadevine 0:e1a608bb55e8 46 * @param pin DigitalOut pin to connect to
jamesadevine 0:e1a608bb55e8 47 */
jamesadevine 0:e1a608bb55e8 48 DigitalOut(PinName pin) : gpio() {
jamesadevine 0:e1a608bb55e8 49 gpio_init_out(&gpio, pin);
jamesadevine 0:e1a608bb55e8 50 }
jamesadevine 0:e1a608bb55e8 51
jamesadevine 0:e1a608bb55e8 52 /** Create a DigitalOut connected to the specified pin
jamesadevine 0:e1a608bb55e8 53 *
jamesadevine 0:e1a608bb55e8 54 * @param pin DigitalOut pin to connect to
jamesadevine 0:e1a608bb55e8 55 * @param value the initial pin value
jamesadevine 0:e1a608bb55e8 56 */
jamesadevine 0:e1a608bb55e8 57 DigitalOut(PinName pin, int value) : gpio() {
jamesadevine 0:e1a608bb55e8 58 gpio_init_out_ex(&gpio, pin, value);
jamesadevine 0:e1a608bb55e8 59 }
jamesadevine 0:e1a608bb55e8 60
jamesadevine 0:e1a608bb55e8 61 /** Set the output, specified as 0 or 1 (int)
jamesadevine 0:e1a608bb55e8 62 *
jamesadevine 0:e1a608bb55e8 63 * @param value An integer specifying the pin output value,
jamesadevine 0:e1a608bb55e8 64 * 0 for logical 0, 1 (or any other non-zero value) for logical 1
jamesadevine 0:e1a608bb55e8 65 */
jamesadevine 0:e1a608bb55e8 66 void write(int value) {
jamesadevine 0:e1a608bb55e8 67 gpio_write(&gpio, value);
jamesadevine 0:e1a608bb55e8 68 }
jamesadevine 0:e1a608bb55e8 69
jamesadevine 0:e1a608bb55e8 70 /** Return the output setting, represented as 0 or 1 (int)
jamesadevine 0:e1a608bb55e8 71 *
jamesadevine 0:e1a608bb55e8 72 * @returns
jamesadevine 0:e1a608bb55e8 73 * an integer representing the output setting of the pin,
jamesadevine 0:e1a608bb55e8 74 * 0 for logical 0, 1 for logical 1
jamesadevine 0:e1a608bb55e8 75 */
jamesadevine 0:e1a608bb55e8 76 int read() {
jamesadevine 0:e1a608bb55e8 77 return gpio_read(&gpio);
jamesadevine 0:e1a608bb55e8 78 }
jamesadevine 0:e1a608bb55e8 79
jamesadevine 0:e1a608bb55e8 80 /** Return the output setting, represented as 0 or 1 (int)
jamesadevine 0:e1a608bb55e8 81 *
jamesadevine 0:e1a608bb55e8 82 * @returns
jamesadevine 0:e1a608bb55e8 83 * Non zero value if pin is connected to uc GPIO
jamesadevine 0:e1a608bb55e8 84 * 0 if gpio object was initialized with NC
jamesadevine 0:e1a608bb55e8 85 */
jamesadevine 0:e1a608bb55e8 86 int is_connected() {
jamesadevine 0:e1a608bb55e8 87 return gpio_is_connected(&gpio);
jamesadevine 0:e1a608bb55e8 88 }
jamesadevine 0:e1a608bb55e8 89
jamesadevine 0:e1a608bb55e8 90 #ifdef MBED_OPERATORS
jamesadevine 0:e1a608bb55e8 91 /** A shorthand for write()
jamesadevine 0:e1a608bb55e8 92 */
jamesadevine 0:e1a608bb55e8 93 DigitalOut& operator= (int value) {
jamesadevine 0:e1a608bb55e8 94 write(value);
jamesadevine 0:e1a608bb55e8 95 return *this;
jamesadevine 0:e1a608bb55e8 96 }
jamesadevine 0:e1a608bb55e8 97
jamesadevine 0:e1a608bb55e8 98 DigitalOut& operator= (DigitalOut& rhs) {
jamesadevine 0:e1a608bb55e8 99 write(rhs.read());
jamesadevine 0:e1a608bb55e8 100 return *this;
jamesadevine 0:e1a608bb55e8 101 }
jamesadevine 0:e1a608bb55e8 102
jamesadevine 0:e1a608bb55e8 103 /** A shorthand for read()
jamesadevine 0:e1a608bb55e8 104 */
jamesadevine 0:e1a608bb55e8 105 operator int() {
jamesadevine 0:e1a608bb55e8 106 return read();
jamesadevine 0:e1a608bb55e8 107 }
jamesadevine 0:e1a608bb55e8 108 #endif
jamesadevine 0:e1a608bb55e8 109
jamesadevine 0:e1a608bb55e8 110 protected:
jamesadevine 0:e1a608bb55e8 111 gpio_t gpio;
jamesadevine 0:e1a608bb55e8 112 };
jamesadevine 0:e1a608bb55e8 113
jamesadevine 0:e1a608bb55e8 114 } // namespace mbed
jamesadevine 0:e1a608bb55e8 115
jamesadevine 0:e1a608bb55e8 116 #endif