4545

Dependents:   LSS_Rev_1

Fork of mbed-dev by Umar Naeem

Committer:
iftaziz
Date:
Wed Aug 23 10:32:38 2017 +0000
Revision:
166:33361e55dd8c
Parent:
160:d5399cc887bb
r1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 149:156823d33999 1 /* mbed Microcontroller Library
<> 149:156823d33999 2 * Copyright (c) 2006-2013 ARM Limited
<> 149:156823d33999 3 *
<> 149:156823d33999 4 * Licensed under the Apache License, Version 2.0 (the "License");
<> 149:156823d33999 5 * you may not use this file except in compliance with the License.
<> 149:156823d33999 6 * You may obtain a copy of the License at
<> 149:156823d33999 7 *
<> 149:156823d33999 8 * http://www.apache.org/licenses/LICENSE-2.0
<> 149:156823d33999 9 *
<> 149:156823d33999 10 * Unless required by applicable law or agreed to in writing, software
<> 149:156823d33999 11 * distributed under the License is distributed on an "AS IS" BASIS,
<> 149:156823d33999 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
<> 149:156823d33999 13 * See the License for the specific language governing permissions and
<> 149:156823d33999 14 * limitations under the License.
<> 149:156823d33999 15 */
<> 149:156823d33999 16 #ifndef MBED_PORTIN_H
<> 149:156823d33999 17 #define MBED_PORTIN_H
<> 149:156823d33999 18
<> 149:156823d33999 19 #include "platform/platform.h"
<> 149:156823d33999 20
<> 149:156823d33999 21 #if DEVICE_PORTIN
<> 149:156823d33999 22
<> 149:156823d33999 23 #include "hal/port_api.h"
<> 160:d5399cc887bb 24 #include "platform/mbed_critical.h"
<> 149:156823d33999 25
<> 149:156823d33999 26 namespace mbed {
<> 149:156823d33999 27 /** \addtogroup drivers */
<> 149:156823d33999 28 /** @{*/
<> 149:156823d33999 29
<> 149:156823d33999 30 /** A multiple pin digital input
<> 149:156823d33999 31 *
<> 149:156823d33999 32 * @Note Synchronization level: Interrupt safe
<> 149:156823d33999 33 *
<> 149:156823d33999 34 * Example:
<> 149:156823d33999 35 * @code
<> 149:156823d33999 36 * // Switch on an LED if any of mbed pins 21-26 is high
<> 149:156823d33999 37 *
<> 149:156823d33999 38 * #include "mbed.h"
<> 149:156823d33999 39 *
<> 149:156823d33999 40 * PortIn p(Port2, 0x0000003F); // p21-p26
<> 149:156823d33999 41 * DigitalOut ind(LED4);
<> 149:156823d33999 42 *
<> 149:156823d33999 43 * int main() {
<> 149:156823d33999 44 * while(1) {
<> 149:156823d33999 45 * int pins = p.read();
<> 149:156823d33999 46 * if(pins) {
<> 149:156823d33999 47 * ind = 1;
<> 149:156823d33999 48 * } else {
<> 149:156823d33999 49 * ind = 0;
<> 149:156823d33999 50 * }
<> 149:156823d33999 51 * }
<> 149:156823d33999 52 * }
<> 149:156823d33999 53 * @endcode
<> 149:156823d33999 54 */
<> 149:156823d33999 55 class PortIn {
<> 149:156823d33999 56 public:
<> 149:156823d33999 57
<> 149:156823d33999 58 /** Create an PortIn, connected to the specified port
<> 149:156823d33999 59 *
<> 149:156823d33999 60 * @param port Port to connect to (Port0-Port5)
<> 149:156823d33999 61 * @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
<> 149:156823d33999 62 */
<> 149:156823d33999 63 PortIn(PortName port, int mask = 0xFFFFFFFF) {
<> 149:156823d33999 64 core_util_critical_section_enter();
<> 149:156823d33999 65 port_init(&_port, port, mask, PIN_INPUT);
<> 149:156823d33999 66 core_util_critical_section_exit();
<> 149:156823d33999 67 }
<> 149:156823d33999 68
<> 149:156823d33999 69 /** Read the value currently output on the port
<> 149:156823d33999 70 *
<> 149:156823d33999 71 * @returns
<> 149:156823d33999 72 * An integer with each bit corresponding to associated port pin setting
<> 149:156823d33999 73 */
<> 149:156823d33999 74 int read() {
<> 149:156823d33999 75 return port_read(&_port);
<> 149:156823d33999 76 }
<> 149:156823d33999 77
<> 149:156823d33999 78 /** Set the input pin mode
<> 149:156823d33999 79 *
<> 149:156823d33999 80 * @param mode PullUp, PullDown, PullNone, OpenDrain
<> 149:156823d33999 81 */
<> 149:156823d33999 82 void mode(PinMode mode) {
<> 149:156823d33999 83 core_util_critical_section_enter();
<> 149:156823d33999 84 port_mode(&_port, mode);
<> 149:156823d33999 85 core_util_critical_section_exit();
<> 149:156823d33999 86 }
<> 149:156823d33999 87
<> 149:156823d33999 88 /** A shorthand for read()
<> 149:156823d33999 89 */
<> 149:156823d33999 90 operator int() {
<> 149:156823d33999 91 return read();
<> 149:156823d33999 92 }
<> 149:156823d33999 93
<> 149:156823d33999 94 private:
<> 149:156823d33999 95 port_t _port;
<> 149:156823d33999 96 };
<> 149:156823d33999 97
<> 149:156823d33999 98 } // namespace mbed
<> 149:156823d33999 99
<> 149:156823d33999 100 #endif
<> 149:156823d33999 101
<> 149:156823d33999 102 #endif
<> 149:156823d33999 103
<> 149:156823d33999 104 /** @}*/