]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/mbed/api/PortIn.h
Merge commit '71381457fa1311dfa0b58ba882a96db740640871'
[max/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