Mbed OS Reference
Loading...
Searching...
No Matches
PortIn.h
1/* mbed Microcontroller Library
2 * Copyright (c) 2006-2019 ARM Limited
3 * SPDX-License-Identifier: Apache-2.0
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17#ifndef MBED_PORTIN_H
18#define MBED_PORTIN_H
19
20#include "platform/platform.h"
21
22#if DEVICE_PORTIN || defined(DOXYGEN_ONLY)
23
24#include "hal/port_api.h"
25
26namespace mbed {
27/**
28 * \defgroup drivers_PortIn PortIn class
29 * \ingroup drivers-public-api-gpio
30 * @{
31 */
32
33/** A multiple pin digital input
34 *
35 * @note Synchronization level: Interrupt safe
36 *
37 * Example:
38 * @code
39 * // Turn on an LED if any pins of Port2[0:5] are high
40 *
41 * #include "mbed.h"
42 *
43 * PortIn p(Port2, 0x0000003F); // Port2 pins [0:5] only
44 * DigitalOut led(LED4);
45 *
46 * int main() {
47 * while(1) {
48 * int pins = p.read();
49 * if(pins) {
50 * led = 1;
51 * } else {
52 * led = 0;
53 * }
54 * }
55 * }
56 * @endcode
57 */
58class PortIn {
59public:
60
61 /** Create a PortIn, connected to the specified port
62 *
63 * @param port Port to connect to (as defined in target's PortNames.h)
64 * @param mask Bitmask defines which port pins should be an input (0 - ignore, 1 - include)
65 */
66 PortIn(PortName port, int mask = 0xFFFFFFFF);
67
68 /** Read the value input to the port
69 *
70 * @returns
71 * An integer with each bit corresponding to the associated pin value
72 */
73 int read()
74 {
75 return port_read(&_port);
76 }
77
78 /** Set the input pin mode
79 *
80 * @param mode PullUp, PullDown, PullNone, OpenDrain
81 */
82 void mode(PinMode mode);
83
84 /** A shorthand for read()
85 */
86 operator int()
87 {
88 return read();
89 }
90
91private:
92 port_t _port;
93};
94
95/** @}*/
96
97} // namespace mbed
98
99#endif
100
101#endif
A multiple pin digital input.
Definition: PortIn.h:58
PortIn(PortName port, int mask=0xFFFFFFFF)
Create a PortIn, connected to the specified port.
void mode(PinMode mode)
Set the input pin mode.
int read()
Read the value input to the port.
Definition: PortIn.h:73
int port_read(port_t *obj)
Read the current value on the port.
struct port_s port_t
Port HAL structure.
Definition: port_api.h:33