Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

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/platform.h"
00020 
00021 #if DEVICE_PORTIN
00022 
00023 #include "hal/port_api.h"
00024 #include "platform/mbed_critical.h"
00025 
00026 namespace mbed {
00027 /** \addtogroup drivers */
00028 /** @{*/
00029 
00030 /** A multiple pin digital input
00031  *
00032  * @Note Synchronization level: Interrupt safe
00033  *
00034  *  Example:
00035  * @code
00036  * // Switch on an LED if any of mbed pins 21-26 is high
00037  *
00038  * #include "mbed.h"
00039  *
00040  * PortIn     p(Port2, 0x0000003F);   // p21-p26
00041  * DigitalOut ind(LED4);
00042  *
00043  * int main() {
00044  *     while(1) {
00045  *         int pins = p.read();
00046  *         if(pins) {
00047  *             ind = 1;
00048  *         } else {
00049  *             ind = 0;
00050  *         }
00051  *     }
00052  * }
00053  * @endcode
00054  */
00055 class PortIn {
00056 public:
00057 
00058     /** Create an PortIn, connected to the specified port
00059      *
00060      *  @param port Port to connect to (Port0-Port5)
00061      *  @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
00062         */
00063     PortIn(PortName port, int mask = 0xFFFFFFFF) {
00064         core_util_critical_section_enter();
00065         port_init(&_port, port, mask, PIN_INPUT);
00066         core_util_critical_section_exit();
00067     }
00068 
00069     /** Read the value currently output on the port
00070      *
00071      *  @returns
00072      *    An integer with each bit corresponding to associated port pin setting
00073      */
00074     int read() {
00075         return port_read(&_port);
00076     }
00077 
00078     /** Set the input pin mode
00079      *
00080      *  @param mode PullUp, PullDown, PullNone, OpenDrain
00081      */
00082     void mode(PinMode mode) {
00083         core_util_critical_section_enter();
00084         port_mode(&_port, mode);
00085         core_util_critical_section_exit();
00086     }
00087 
00088     /** A shorthand for read()
00089      */
00090     operator int() {
00091         return read();
00092     }
00093 
00094 private:
00095     port_t _port;
00096 };
00097 
00098 } // namespace mbed
00099 
00100 #endif
00101 
00102 #endif
00103 
00104 /** @}*/