Library designed as an interface to the mbed Pin Connect Block

Revision:
0:1b1cf3daf204
Child:
1:e9f239e90ef4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PinConnectBlock.h	Tue Nov 29 05:08:41 2011 +0000
@@ -0,0 +1,189 @@
+#ifndef LPC1768PinConnectBlockLibrary
+#define LPC1768PinConnectBlockLibrary
+
+#include "cmsis.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+namespace PinConnectBlock
+{
+    unsigned char ValidateInput(
+        unsigned char Port, unsigned char Pin, unsigned char Mode);
+        //This function accepts a Port number, Pin number, and Mode code for
+        //a pin that is to be connected to microcontroller hardware.  It
+        //validates the input for future use as input to connection setting
+        //functions.  It will check for the validity of the Port and Pin and
+        //the validity of the Function, Resistor, and Open Drain mode
+        //selections for a valid Port and Pin.  The Mode codes are specified
+        //as follows:
+        //
+        //Bits 7:5 - Reserved       ------------------------------------------
+        //Bit   4  - OpenDrain Mode |   See documentation for the mapping of |
+        //Bits 3:2 - Resistor Mode  | mode code values to connections.  The  |
+        //Bits 1:0 - Function Mode  | reserved bits must be 0.               |
+        //                          ------------------------------------------
+        //The return value is a code with flags to alert the user of errors in
+        //the input.  The errors are specified as follows:
+        //
+        //Bits 7:6 - Reserved
+        //Bit   5  - OpenDrain Mode
+        //Bit   4  - Resistor Mode  ------------------------------------------
+        //Bit   3  - Function Mode  |   A value of 0 indicates there are no  |
+        //Bit   2  - Mode           | errors.  A value of 1 indicates an     |
+        //Bit   1  - Pin            | error in the input corresponding with  |
+        //Bit   0  - Port           | that bit.  Reserved bits will be 0.    |
+        //                          ------------------------------------------
+    void SetPinConnection(
+        unsigned char Port, unsigned char Pin, unsigned char Mode);
+        //This function accepts a Port number, Pin number, and Mode code and
+        //connects the selected Pin on the selected Port to the hardware
+        //specified in the Mode code.  This function will not check for the
+        //validity of the input and will write to a reserved or unrelated
+        //sector if an invalid Port and Pin are specified.  It will reject any
+        //portion of the Mode code that connects 1.0:1.17 to functions 10 or
+        //11, 0.27:0.30 to resistor hardware, or 0.27:0.28 to open drain mode
+        //hardware, and will complete any valid connections in the Mode code.
+        //The Mode codes are specified as follows:
+        //
+        //Bits 7:5 - Reserved       ------------------------------------------
+        //Bit   4  - OpenDrain Mode |   See documentation for the mapping of |
+        //Bits 3:2 - Resistor Mode  | mode code values to connections.  The  |
+        //Bits 1:0 - Function Mode  | reserved bits must be 0.               |
+        //                          ------------------------------------------
+    unsigned char GetPinConnection(
+        unsigned char Port, unsigned char Pin);
+        //This function accepts a Port number and Pin number and returns a
+        //mode code that specifies the hardware connected to the selected Pin
+        //on the selected Port.  This function will not check for the validity
+        //of the input and will return junk bits from a reserved or unrelated
+        //sector if an invalid Port and Pin are specified.  The Mode codes are
+        //specified as follows:
+        //
+        //Bits 7:5 - Reserved       ------------------------------------------
+        //Bit   4  - OpenDrain Mode |   See documentation for the mapping of |
+        //Bits 3:2 - Resistor Mode  | mode code values to connections.  The  |
+        //Bits 1:0 - Function Mode  | reserved bits must be 0.               |
+        //                          ------------------------------------------
+    void SetFunctionMode(
+        unsigned char Port, unsigned char Pin, unsigned char Mode);
+        //This function accepts a Port number, Pin number, and Mode code and
+        //connects the selected Pin on the selected Port to the function
+        //hardware specified in the Mode code.  This function will not check
+        //for the validity of the input and will write to a reserved or
+        //non-function mode sector if an invalid Port and Pin are specified.
+        //Mode codes are specified as follows:
+        //                          ------------------------------------------
+        //                          |   See documentation for the mapping of |
+        //Bits 7:2 - Reserved       | mode code values to connections.  The  |
+        //Bits 1:0 - Function Mode  | reserved bits and modes must be 0.     |
+        //                          ------------------------------------------
+    unsigned char GetFunctionMode(unsigned char Port, unsigned char Pin);
+        //This function accepts a Port number and Pin number and returns a
+        //mode code that specifies the function hardware connected to the
+        //selected Pin on the selected Port.  This function will not check for
+        //the validity of the input and will return junk bits from a reserved
+        //or non-function mode sector if an invalid Port and Pin are
+        //specified.  The Mode codes are specified as follows:
+        //                          ------------------------------------------
+        //                          |   See documentation for the mapping of |
+        //Bits 2:7 - Reserved       | mode code values to connections.  The  |
+        //Bits 1:0 - Function Mode  | reserved bits will be 0.               |
+        //                          ------------------------------------------
+    void SetResistorMode(
+        unsigned char Port, unsigned char Pin, unsigned char Mode);
+        //This function accepts a Port number, Pin number, and Mode code and
+        //connects the selected Pin on the selected Port to the resistor
+        //hardware specified in the Mode code.  This function will not check
+        //for the validity of the input and will write to a reserved or
+        //non-resistor mode sector if an invalid Port and Pin are specified.
+        //The Mode codes are       -------------------------------------------
+        //specified as follows:    | Value - Connection                      |
+        //                         |-----------------------------------------|
+        //                         |   00  - Pull Up Resistor                |
+        //                         |   01  - Repeater Mode                   |
+        //Bits 7:2 - Reserved      |   10  - No Resistor                     |
+        //Bits 1:0 - Resistor Mode |   11  - Pull Down Resistor              |
+        //                         -------------------------------------------
+    unsigned char GetResistorMode(unsigned char Port, unsigned char Pin);
+        //This function accepts a Port number and Pin number and returns a
+        //mode code that specifies the resistor hardware connected to the
+        //selected Pin on the selected Port.  This function will not check for
+        //the validity of the input and will return junk bits from a reserved
+        //or non-resistor mode sector if an invalid Port and Pin are
+        //specified.  The Mode     -------------------------------------------
+        //codes are specified as   | Value - Connection                      |
+        //follows:                 |-----------------------------------------|
+        //                         |   00  - Pull Up Resistor                |
+        //                         |   01  - Repeater Mode                   |
+        //Bits 7:2 - Reserved      |   10  - No Resistor                     |
+        //Bits 1:0 - Resistor Mode |   11  - Pull Down Resistor              |
+        //                         -------------------------------------------
+    void SetOpenDrainMode(
+        unsigned char Port, unsigned char Pin, bool Mode);
+        //This function accepts a Port number, Pin number, and Mode bit and
+        //connects or disconnects the open drain hardware for the selected Pin
+        //on the selected Port.  A 0 will disconnect the open drain hardware,
+        //and a 1 will connect the open drain hardware.  This function will
+        //not check for the validity of the input before making a connection,
+        //and will write to a reserved or non-open drain mode sector if an
+        //invalid Port and Pin are specified.
+    bool GetOpenDrainMode(unsigned char Port, unsigned char Pin);
+        //This function accepts a Port number and Pin number and returns a
+        //mode bit that specifies the resistor hardware that is connected to
+        //the selected Pin on the selected Port.  A value of 0 indicates that
+        //the open drain hardware is disconnected, and a value of 1 indicates
+        //that the open drain hardware is connected.  This function will not
+        //check for the validity of the input and will return a junk bit from
+        //a reserved or non-open drain sector if an invalid Port and Pin are
+        //specified.
+    void SetTraceMode(bool Mode);
+        //This function accepts a Mode bit and connects or disconnects the
+        //trace port hardware.  A value of 0 will disconnect the trace port
+        //hardware, and a value of 1 will connect the trace port hardware.
+        //The trace port uses pins 2.2:2.6, and will override any function,
+        //resistor, or open drain hardware connected to these pins.
+    bool GetTraceMode();
+        //This function returns a mode bit that specifies the current
+        //connection status of the trace port.  A value of 0 indicates that
+        //the trace port is disconnected, and a value of 1 indicates that the
+        //trace port is connected.
+    void SetI2C0Mode(unsigned char Mode);
+        //This function accepts a Mode code and connects or disconnects
+        //specialized I2C hardware to the I2C0 bus on pins 0.27:0.28.  The
+        //Mode codes are specified as follows:
+        //                     -----------------------------------------------
+        //Bit 1: I2C Fast Mode |   A value of 0 will disconnect the hard-    |
+        //Bit 0: I2C Filter    | ware, and a value of 1 will connect it.     |
+        //                     -----------------------------------------------
+        //For non-I2C of these pins, the Filter and Fast Mode hardware should
+        //be disconnected.  For normal I2C use of these pins, the Filter
+        //hardware should be connected and the Fast Mode hardware should be
+        //disconnected.  For I2C Fast Mode, the Filter hardware and Fast Mode
+        //hardware should both be connected.
+    unsigned char GetI2C0Mode();
+        //This function returns a mode code that specifies the current
+        //connection status of the I2C0 bus with its specialized I2C hardware.
+        //The first two bits indicate the current hardware connection, and
+        //the next four bits indicate errors in the connection.  The
+        //connection status of SCL pin 0.28 must mach that of SDA pin 0.27.
+        //If this is not the case, the bus will not function properly and the
+        //function will return an error code.  The I2C Mode codes are
+        //specified as follows:                   ----------------------------
+        //                                        |   A value of o indicates |
+        //Bit 5: Error - Only SCL Fast Mode is On | the hardware is discon-  |
+        //Bit 4: Error - Only SDA Fast Mode is On | nected or the error is   |
+        //Bit 3: Error - Only SCL Filter is On    | not present.  A value of |
+        //Bit 2: Error - Only SDA Filter is On    | 1 indicates the hardware |
+        //Bit 1: I2C Fast Mode                    | is connected or the      |
+        //Bit 0: I2C Filter                       | error is present.        |
+        //                                        ----------------------------
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file