This fork captures the mbed lib v125 for ease of integration into older projects.

Fork of mbed-dev by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PortIn.h Source File

PortIn.h

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2013 ARM Limited
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #ifndef MBED_PORTIN_H
00017 #define MBED_PORTIN_H
00018 
00019 #include "platform.h"
00020 
00021 #if DEVICE_PORTIN
00022 
00023 #include "port_api.h"
00024 #include "critical.h"
00025 
00026 namespace mbed {
00027 
00028 /** A multiple pin digital input
00029  *
00030  * @Note Synchronization level: Interrupt safe
00031  *
00032  *  Example:
00033  * @code
00034  * // Switch on an LED if any of mbed pins 21-26 is high
00035  *
00036  * #include "mbed.h"
00037  *
00038  * PortIn     p(Port2, 0x0000003F);   // p21-p26
00039  * DigitalOut ind(LED4);
00040  *
00041  * int main() {
00042  *     while(1) {
00043  *         int pins = p.read();
00044  *         if(pins) {
00045  *             ind = 1;
00046  *         } else {
00047  *             ind = 0;
00048  *         }
00049  *     }
00050  * }
00051  * @endcode
00052  */
00053 class PortIn {
00054 public:
00055 
00056     /** Create an PortIn, connected to the specified port
00057      *
00058      *  @param port Port to connect to (Port0-Port5)
00059      *  @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
00060         */
00061     PortIn(PortName port, int mask = 0xFFFFFFFF) {
00062         core_util_critical_section_enter();
00063         port_init(&_port, port, mask, PIN_INPUT);
00064         core_util_critical_section_exit();
00065     }
00066 
00067     /** Read the value currently output on the port
00068      *
00069      *  @returns
00070      *    An integer with each bit corresponding to associated port pin setting
00071      */
00072     int read() {
00073         return port_read(&_port);
00074     }
00075 
00076     /** Set the input pin mode
00077      *
00078      *  @param mode PullUp, PullDown, PullNone, OpenDrain
00079      */
00080     void mode(PinMode mode) {
00081         core_util_critical_section_enter();
00082         port_mode(&_port, mode);
00083         core_util_critical_section_exit();
00084     }
00085 
00086     /** A shorthand for read()
00087      */
00088     operator int() {
00089         return read();
00090     }
00091 
00092 private:
00093     port_t _port;
00094 };
00095 
00096 } // namespace mbed
00097 
00098 #endif
00099 
00100 #endif