From Ben Katz mbed-dev library. Removed unnecessary target files to reduce the overall size by a factor of 10 to make it easier to import into the online IDE.

Dependents:   motor_driver motor_driver_screaming_fix

Committer:
saloutos
Date:
Thu Nov 26 04:08:56 2020 +0000
Revision:
0:083111ae2a11
first commit of leaned mbed dev lib

Who changed what in which revision?

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