mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BusInOut.h Source File

BusInOut.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_BUSINOUT_H
00017 #define MBED_BUSINOUT_H
00018 
00019 #include "DigitalInOut.h"
00020 
00021 namespace mbed {
00022 
00023 /** A digital input output bus, used for setting the state of a collection of pins
00024  */
00025 class BusInOut {
00026 
00027 public:
00028 
00029     /** Create an BusInOut, connected to the specified pins
00030      *
00031      *  @param p<n> DigitalInOut pin to connect to bus bit p<n> (p5-p30, NC)
00032      *
00033      *  @note
00034      *  It is only required to specify as many pin variables as is required
00035      *  for the bus; the rest will default to NC (not connected)
00036      */
00037     BusInOut(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC,
00038              PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
00039              PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
00040              PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC);
00041 
00042     BusInOut(PinName pins[16]);
00043 
00044     virtual ~BusInOut();
00045 
00046     /* Group: Access Methods */
00047 
00048     /** Write the value to the output bus
00049      *
00050      *  @param value An integer specifying a bit to write for every corresponding DigitalInOut pin
00051      */
00052     void write(int value);
00053 
00054     /** Read the value currently output on the bus
00055      *
00056      *  @returns
00057      *    An integer with each bit corresponding to associated DigitalInOut pin setting
00058      */
00059     int read();
00060 
00061     /** Set as an output
00062      */
00063     void output();
00064 
00065     /** Set as an input
00066      */
00067     void input();
00068 
00069     /** Set the input pin mode
00070      *
00071      *  @param mode PullUp, PullDown, PullNone
00072      */
00073     void mode(PinMode pull);
00074 
00075     /** Binary mask of bus pins connected to actual pins (not NC pins)
00076      *  If bus pin is in NC state make corresponding bit will be cleared (set to 0), else bit will be set to 1
00077      *
00078      *  @returns
00079      *    Binary mask of connected pins
00080      */
00081     int mask() {
00082         return _nc_mask;
00083     }
00084 
00085 #ifdef MBED_OPERATORS
00086      /** A shorthand for write()
00087      */
00088     BusInOut& operator= (int v);
00089     BusInOut& operator= (BusInOut& rhs);
00090 
00091     /** Access to particular bit in random-iterator fashion
00092     */
00093     DigitalInOut& operator[] (int index);
00094 
00095     /** A shorthand for read()
00096      */
00097     operator int();
00098 #endif
00099 
00100 protected:
00101     DigitalInOut* _pin[16];
00102 
00103     /** Mask of bus's NC pins
00104      * If bit[n] is set to 1 - pin is connected
00105      * if bit[n] is cleared - pin is not connected (NC)
00106      */
00107     int _nc_mask;
00108 
00109     /* disallow copy constructor and assignment operators */
00110 private:
00111     BusInOut(const BusInOut&);
00112     BusInOut & operator = (const BusInOut&);
00113 };
00114 
00115 } // namespace mbed
00116 
00117 #endif