Charith Dassanayake / CPPToPigpio
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BusIn.h Source File

BusIn.h

00001 #ifndef CPP_TO_PIGPIO_BUSIN_HEADER
00002 #define CPP_TO_PIGPIO_BUSIN_HEADER
00003 #include <vector>
00004 namespace CPPToPigpio{
00005     /**
00006      * BusIn is used to create a number of DigitalIn pins that can be read as one value. 
00007      */
00008 
00009     class BusIn : public CPPToPigpio{
00010         private:
00011             std::vector<DigitalIn *> _digitalIns;
00012         public:
00013             /**
00014              * Creates a BusIn, connected to the specific pins. 
00015              * 
00016              * @param p0 DigitalIn pin to connect to bus bit
00017              * @param p1 DigitalIn pin to connect to bus bit
00018              * @param p2 DigitalIn pin to connect to bus bit
00019              * @param p4 DigitalIn pin to connect to bus bit
00020              * @param p5 DigitalIn pin to connect to bus bit
00021              * @param p6 DigitalIn pin to connect to bus bit
00022              * @param p7 DigitalIn pin to connect to bus bit
00023              * @param p8 DigitalIn pin to connect to bus bit
00024              * @param p9 DigitalIn pin to connect to bus bit
00025              * @param p10 DigitalIn pin to connect to bus bit
00026              * @param p11 DigitalIn pin to connect to bus bit
00027              * @param p12 DigitalIn pin to connect to bus bit
00028              * @param p13 DigitalIn pin to connect to bus bit
00029              * @param p14 DigitalIn pin to connect to bus bit
00030              * @param p15 DigitalIn pin to connect to bus bit
00031              */
00032             BusIn (PinName p0, PinName p1=NC, PinName p2=NC, PinName p3=NC, PinName p4=NC, PinName p5=NC, PinName p6=NC, PinName p7=NC, PinName p8=NC, PinName p9=NC, PinName p10=NC, PinName p11=NC, PinName p12=NC, PinName p13=NC, PinName p14=NC, PinName p15=NC);
00033 
00034             /**
00035              * Creates a BusIn, connected to the specific pins. 
00036              * 
00037              * @param p0 DigitalIn pin to connect to bus bit
00038              * @param p1 DigitalIn pin to connect to bus bit
00039              * @param p2 DigitalIn pin to connect to bus bit
00040              * @param p4 DigitalIn pin to connect to bus bit
00041              * @param p5 DigitalIn pin to connect to bus bit
00042              * @param p6 DigitalIn pin to connect to bus bit
00043              * @param p7 DigitalIn pin to connect to bus bit
00044              * @param p8 DigitalIn pin to connect to bus bit
00045              * @param p9 DigitalIn pin to connect to bus bit
00046              * @param p10 DigitalIn pin to connect to bus bit
00047              * @param p11 DigitalIn pin to connect to bus bit
00048              * @param p12 DigitalIn pin to connect to bus bit
00049              * @param p13 DigitalIn pin to connect to bus bit
00050              * @param p14 DigitalIn pin to connect to bus bit
00051              * @param p15 DigitalIn pin to connect to bus bit
00052              */
00053             BusIn (int p0, int p1=-1, int p2=-1, int p3=-1, int p4=-1, int p5=-1, int p6=-1, int p7=-1, int p8=-1, int p9=-1, int p10=-1, int p11=-1, int p12=-1, int p13=-1, int p14=-1, int p15=-1);
00054 
00055             /**
00056              * Creates a BusIn, connected to the specific pins.
00057              * @param number of pins specified
00058              * @param array of pins to connect to bus
00059              */
00060             
00061             //This is different from standard MBED API. Since the literal 0 is a valid pinName, need busSize to be passed in to tell which pins matter.
00062             BusIn (int busSize, PinName pinNames[16]);
00063 
00064             /**
00065              * Creates a BusIn, connected to the specific pins.
00066              * @param number of pins specified
00067              * @param array of pins to connect to bus
00068              */
00069 
00070             //This is different from standard MBED API. Since the literal 0 is a valid pinName, need busSize to be passed in to tell which pins matter.
00071             BusIn (int busSize, int pinNames[16]);
00072       
00073             /**
00074              * Read value of input pins
00075              * 
00076              * @returns An integer with each bit corresponding to the value read from the associated DigitalIn pin
00077              */
00078             int read();
00079 
00080             /**
00081              * Sets the input pin mode for all pins in the bus
00082              * 
00083              * @param pull PullUp, PullDown, PullNone
00084              */
00085             void mode(PinMode pull);
00086 
00087             /** A shorthand for read()
00088              * \sa BusOut::read()
00089              */
00090             operator int();
00091 
00092             /** Access to particular bit in random-iterator fashion
00093              * 
00094              * @param index or position of bit
00095              */
00096             DigitalIn & operator[](int index);
00097 
00098             /** Binary mask of bus pins connected to actual pins (not NC pins)
00099              *  If bus pin is in NC state make corresponding bit will be cleared (set to 0), else bit will be set to 1
00100              *
00101              *  @returns Binary mask of connected pins
00102              */
00103             //Returns mask of connected pins, double check that this matches what it should do. Note that since 0 is valid, mask of BusIn(0) will return 0b000..1 and mask(BusIn(1)) returns 0b000..10
00104             long long mask(); 
00105 
00106             /** Desconstructor for object
00107              */
00108             ~BusIn();
00109 
00110     };
00111 
00112 
00113 }
00114 #endif