]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/api/PortOut.h
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / api / PortOut.h
1 /* mbed Microcontroller Library
2  * Copyright (c) 2006-2013 ARM Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef MBED_PORTOUT_H
17 #define MBED_PORTOUT_H
18
19 #include "platform.h"
20
21 #if DEVICE_PORTOUT
22
23 #include "port_api.h"
24
25 namespace mbed {
26 /** A multiple pin digital out
27  *
28  * Example:
29  * @code
30  * // Toggle all four LEDs
31  *
32  * #include "mbed.h"
33  *
34  * // LED1 = P1.18  LED2 = P1.20  LED3 = P1.21  LED4 = P1.23
35  * #define LED_MASK 0x00B40000
36  *
37  * PortOut ledport(Port1, LED_MASK);
38  *
39  * int main() {
40  *     while(1) {
41  *         ledport = LED_MASK;
42  *         wait(1);
43  *         ledport = 0;
44  *         wait(1);
45  *     }
46  * }
47  * @endcode
48  */
49 class PortOut {
50 public:
51
52     /** Create an PortOut, connected to the specified port
53      *
54      *  @param port Port to connect to (Port0-Port5)
55      *  @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
56      */
57     PortOut(PortName port, int mask = 0xFFFFFFFF) {
58         port_init(&_port, port, mask, PIN_OUTPUT);
59     }
60
61     /** Write the value to the output port
62      *
63      *  @param value An integer specifying a bit to write for every corresponding PortOut pin
64      */
65     void write(int value) {
66         port_write(&_port, value);
67     }
68
69     /** Read the value currently output on the port
70      *
71      *  @returns
72      *    An integer with each bit corresponding to associated PortOut pin setting
73      */
74     int read() {
75         return port_read(&_port);
76     }
77
78     /** A shorthand for write()
79      */
80     PortOut& operator= (int value) {
81         write(value);
82         return *this;
83     }
84
85     PortOut& operator= (PortOut& rhs) {
86         write(rhs.read());
87         return *this;
88     }
89
90     /** A shorthand for read()
91      */
92     operator int() {
93         return read();
94     }
95
96 private:
97     port_t _port;
98 };
99
100 } // namespace mbed
101
102 #endif
103
104 #endif