cc y / mbed

Fork of mbed by mbed official

Committer:
Kojto
Date:
Fri Aug 12 13:04:35 2016 +0200
Revision:
123:b0220dba8be7
Parent:
122:f9eeca106725
Release 123 of the mbed library

Changes:
- new targets: nucleo_f207zg, beetle, nrf51_dk, hexiwear,
nuvoton nuc472, vk rz a1h
- ST - fix timer interrupt handler, sleep api fix
- NXP - lpc15xx us ticker fix
- Nordic - analogin fixes, LF clock init addition, enable i2c async

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 65:5798e58a58b1 1 /* mbed Microcontroller Library
bogdanm 65:5798e58a58b1 2 * Copyright (c) 2006-2013 ARM Limited
bogdanm 65:5798e58a58b1 3 *
bogdanm 65:5798e58a58b1 4 * Licensed under the Apache License, Version 2.0 (the "License");
bogdanm 65:5798e58a58b1 5 * you may not use this file except in compliance with the License.
bogdanm 65:5798e58a58b1 6 * You may obtain a copy of the License at
bogdanm 65:5798e58a58b1 7 *
bogdanm 65:5798e58a58b1 8 * http://www.apache.org/licenses/LICENSE-2.0
bogdanm 65:5798e58a58b1 9 *
bogdanm 65:5798e58a58b1 10 * Unless required by applicable law or agreed to in writing, software
bogdanm 65:5798e58a58b1 11 * distributed under the License is distributed on an "AS IS" BASIS,
bogdanm 65:5798e58a58b1 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
bogdanm 65:5798e58a58b1 13 * See the License for the specific language governing permissions and
bogdanm 65:5798e58a58b1 14 * limitations under the License.
bogdanm 65:5798e58a58b1 15 */
bogdanm 65:5798e58a58b1 16 #ifndef MBED_BUSIN_H
bogdanm 65:5798e58a58b1 17 #define MBED_BUSIN_H
bogdanm 65:5798e58a58b1 18
bogdanm 65:5798e58a58b1 19 #include "platform.h"
bogdanm 65:5798e58a58b1 20 #include "DigitalIn.h"
Kojto 123:b0220dba8be7 21 #include "PlatformMutex.h"
bogdanm 65:5798e58a58b1 22
bogdanm 65:5798e58a58b1 23 namespace mbed {
bogdanm 65:5798e58a58b1 24
bogdanm 65:5798e58a58b1 25 /** A digital input bus, used for reading the state of a collection of pins
Kojto 122:f9eeca106725 26 *
Kojto 122:f9eeca106725 27 * @Note Synchronization level: Thread safe
bogdanm 65:5798e58a58b1 28 */
bogdanm 65:5798e58a58b1 29 class BusIn {
bogdanm 65:5798e58a58b1 30
bogdanm 65:5798e58a58b1 31 public:
bogdanm 65:5798e58a58b1 32 /* Group: Configuration Methods */
bogdanm 65:5798e58a58b1 33
bogdanm 65:5798e58a58b1 34 /** Create an BusIn, connected to the specified pins
bogdanm 65:5798e58a58b1 35 *
bogdanm 65:5798e58a58b1 36 * @param <n> DigitalIn pin to connect to bus bit <n> (p5-p30, NC)
bogdanm 65:5798e58a58b1 37 *
bogdanm 65:5798e58a58b1 38 * @note
bogdanm 65:5798e58a58b1 39 * It is only required to specify as many pin variables as is required
bogdanm 65:5798e58a58b1 40 * for the bus; the rest will default to NC (not connected)
bogdanm 65:5798e58a58b1 41 */
bogdanm 65:5798e58a58b1 42 BusIn(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC,
bogdanm 65:5798e58a58b1 43 PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
bogdanm 65:5798e58a58b1 44 PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
bogdanm 65:5798e58a58b1 45 PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC);
bogdanm 65:5798e58a58b1 46
bogdanm 65:5798e58a58b1 47 BusIn(PinName pins[16]);
bogdanm 65:5798e58a58b1 48
bogdanm 65:5798e58a58b1 49 virtual ~BusIn();
bogdanm 65:5798e58a58b1 50
bogdanm 65:5798e58a58b1 51 /** Read the value of the input bus
bogdanm 65:5798e58a58b1 52 *
bogdanm 65:5798e58a58b1 53 * @returns
bogdanm 65:5798e58a58b1 54 * An integer with each bit corresponding to the value read from the associated DigitalIn pin
bogdanm 65:5798e58a58b1 55 */
bogdanm 65:5798e58a58b1 56 int read();
bogdanm 85:024bf7f99721 57
bogdanm 83:8a40adfe8776 58 /** Set the input pin mode
bogdanm 83:8a40adfe8776 59 *
bogdanm 83:8a40adfe8776 60 * @param mode PullUp, PullDown, PullNone
bogdanm 83:8a40adfe8776 61 */
bogdanm 83:8a40adfe8776 62 void mode(PinMode pull);
bogdanm 85:024bf7f99721 63
Kojto 93:e188a91d3eaa 64 /** Binary mask of bus pins connected to actual pins (not NC pins)
Kojto 93:e188a91d3eaa 65 * If bus pin is in NC state make corresponding bit will be cleared (set to 0), else bit will be set to 1
Kojto 93:e188a91d3eaa 66 *
Kojto 93:e188a91d3eaa 67 * @returns
Kojto 93:e188a91d3eaa 68 * Binary mask of connected pins
Kojto 93:e188a91d3eaa 69 */
Kojto 93:e188a91d3eaa 70 int mask() {
Kojto 122:f9eeca106725 71 // No lock needed since _nc_mask is not modified outside the constructor
Kojto 93:e188a91d3eaa 72 return _nc_mask;
Kojto 93:e188a91d3eaa 73 }
Kojto 93:e188a91d3eaa 74
bogdanm 65:5798e58a58b1 75 /** A shorthand for read()
bogdanm 65:5798e58a58b1 76 */
bogdanm 65:5798e58a58b1 77 operator int();
Kojto 93:e188a91d3eaa 78
Kojto 93:e188a91d3eaa 79 /** Access to particular bit in random-iterator fashion
Kojto 93:e188a91d3eaa 80 */
Kojto 93:e188a91d3eaa 81 DigitalIn & operator[] (int index);
bogdanm 65:5798e58a58b1 82
bogdanm 65:5798e58a58b1 83 protected:
bogdanm 65:5798e58a58b1 84 DigitalIn* _pin[16];
bogdanm 85:024bf7f99721 85
Kojto 93:e188a91d3eaa 86 /** Mask of bus's NC pins
Kojto 93:e188a91d3eaa 87 * If bit[n] is set to 1 - pin is connected
Kojto 93:e188a91d3eaa 88 * if bit[n] is cleared - pin is not connected (NC)
Kojto 93:e188a91d3eaa 89 */
Kojto 93:e188a91d3eaa 90 int _nc_mask;
Kojto 93:e188a91d3eaa 91
Kojto 122:f9eeca106725 92 PlatformMutex _mutex;
Kojto 122:f9eeca106725 93
bogdanm 85:024bf7f99721 94 /* disallow copy constructor and assignment operators */
bogdanm 85:024bf7f99721 95 private:
Kojto 122:f9eeca106725 96 virtual void lock();
Kojto 122:f9eeca106725 97 virtual void unlock();
bogdanm 85:024bf7f99721 98 BusIn(const BusIn&);
bogdanm 85:024bf7f99721 99 BusIn & operator = (const BusIn&);
bogdanm 65:5798e58a58b1 100 };
bogdanm 65:5798e58a58b1 101
bogdanm 65:5798e58a58b1 102 } // namespace mbed
bogdanm 65:5798e58a58b1 103
bogdanm 65:5798e58a58b1 104 #endif