]> git.gir.st - tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/mbed/api/PortIn.h
Merge commit '1fe4406f374291ab2e86e95a97341fd9c475fcb8'
[tmk_keyboard.git] / tmk_core / tool / mbed / mbed-sdk / libraries / mbed / api / PortIn.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_PORTIN_H
17 #define MBED_PORTIN_H
18
19 #include "platform.h"
20
21 #if DEVICE_PORTIN
22
23 #include "port_api.h"
24
25 namespace mbed {
26
27 /** A multiple pin digital input
28 *
29 * Example:
30 * @code
31 * // Switch on an LED if any of mbed pins 21-26 is high
32 *
33 * #include "mbed.h"
34 *
35 * PortIn p(Port2, 0x0000003F); // p21-p26
36 * DigitalOut ind(LED4);
37 *
38 * int main() {
39 * while(1) {
40 * int pins = p.read();
41 * if(pins) {
42 * ind = 1;
43 * } else {
44 * ind = 0;
45 * }
46 * }
47 * }
48 * @endcode
49 */
50 class PortIn {
51 public:
52
53 /** Create an PortIn, connected to the specified port
54 *
55 * @param port Port to connect to (Port0-Port5)
56 * @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
57 */
58 PortIn(PortName port, int mask = 0xFFFFFFFF) {
59 port_init(&_port, port, mask, PIN_INPUT);
60 }
61
62 /** Read the value currently output on the port
63 *
64 * @returns
65 * An integer with each bit corresponding to associated port pin setting
66 */
67 int read() {
68 return port_read(&_port);
69 }
70
71 /** Set the input pin mode
72 *
73 * @param mode PullUp, PullDown, PullNone, OpenDrain
74 */
75 void mode(PinMode mode) {
76 port_mode(&_port, mode);
77 }
78
79 /** A shorthand for read()
80 */
81 operator int() {
82 return read();
83 }
84
85 private:
86 port_t _port;
87 };
88
89 } // namespace mbed
90
91 #endif
92
93 #endif
Imprint / Impressum