URI friendly Pmod Interface Library

Dependents:   MBD2PMD_WebServer ARD2PMD_WebServer

Committer:
gsteiert
Date:
Sat May 10 02:04:42 2014 +0000
Revision:
1:0c22013818d7
Parent:
0:828bfd94972b
Publishing ARD2PMD Web Server

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsteiert 0:828bfd94972b 1 /* Pmod Interface Library
gsteiert 0:828bfd94972b 2 *
gsteiert 0:828bfd94972b 3 */
gsteiert 0:828bfd94972b 4 #ifndef PMODINTERFACE_H
gsteiert 0:828bfd94972b 5 #define PMODINTERFACE_H
gsteiert 0:828bfd94972b 6
gsteiert 0:828bfd94972b 7 #include "mbed.h"
gsteiert 0:828bfd94972b 8 #include "PmodInterface.h"
gsteiert 1:0c22013818d7 9 #include "MAX14661.h"
gsteiert 0:828bfd94972b 10
gsteiert 0:828bfd94972b 11 /** RAPC Library, Provides utilities for remotely accessing peripherals
gsteiert 0:828bfd94972b 12 *
gsteiert 0:828bfd94972b 13 * Example:
gsteiert 0:828bfd94972b 14 * @code
gsteiert 0:828bfd94972b 15 * // Configure board to pass UART signals to peripheral connector.
gsteiert 0:828bfd94972b 16 *
gsteiert 0:828bfd94972b 17 * #include "PmodInterface.h"
gsteiert 0:828bfd94972b 18 *
gsteiert 0:828bfd94972b 19 * PmodInterface pInt(PTD0, PTD2, PTD3, PTD1,
gsteiert 0:828bfd94972b 20 * PTA4, PTA5, PTC8, PTC9,
gsteiert 0:828bfd94972b 21 * PTA12, PTE0, PTE1
gsteiert 0:828bfd94972b 22 * );
gsteiert 0:828bfd94972b 23 *
gsteiert 0:828bfd94972b 24 * int main() {
gsteiert 0:828bfd94972b 25 * char ibuf[256];
gsteiert 0:828bfd94972b 26 * char obuf[256];
gsteiert 0:828bfd94972b 27 * pInt.init();
gsteiert 0:828bfd94972b 28 * while(1) {
gsteiert 0:828bfd94972b 29 * scanf("%s", ibuf);
gsteiert 0:828bfd94972b 30 * pInt.call(ibuf, obuf);
gsteiert 0:828bfd94972b 31 * printf("%s=", ibuf);
gsteiert 0:828bfd94972b 32 * printf("%s\n", obuf);
gsteiert 0:828bfd94972b 33 * }
gsteiert 0:828bfd94972b 34 * @endcode
gsteiert 0:828bfd94972b 35 */
gsteiert 0:828bfd94972b 36 class PmodInterface
gsteiert 0:828bfd94972b 37 {
gsteiert 0:828bfd94972b 38 public:
gsteiert 0:828bfd94972b 39
gsteiert 0:828bfd94972b 40 /** Create a PmodInterface interface
gsteiert 0:828bfd94972b 41 *
gsteiert 0:828bfd94972b 42 */
gsteiert 0:828bfd94972b 43 PmodInterface();
gsteiert 0:828bfd94972b 44
gsteiert 0:828bfd94972b 45 ~PmodInterface();
gsteiert 0:828bfd94972b 46
gsteiert 0:828bfd94972b 47 /** Name the DIO bits
gsteiert 0:828bfd94972b 48 */
gsteiert 0:828bfd94972b 49 enum PINTdioBits {
gsteiert 0:828bfd94972b 50 DB_OUT = 0x01, /**< Pin Output State Bit */
gsteiert 0:828bfd94972b 51 DB_OWD = 0x02, /**< Output Write Disable, set to block writing the output state */
gsteiert 0:828bfd94972b 52 DB_DIR = 0x04, /**< Pin Direction, 0 = Input, 1 = Output */
gsteiert 0:828bfd94972b 53 DB_DWE = 0x08, /**< Direction Write Enable, set this bit to write the direction */
gsteiert 0:828bfd94972b 54 DB_PU = 0x10, /**< Pull Up State, 0 = PullNone, 1 = PullUp */
gsteiert 0:828bfd94972b 55 DB_PWE = 0x20, /**< Pull Up Write Enable, set this bit to write the pull up state */
gsteiert 0:828bfd94972b 56 };
gsteiert 0:828bfd94972b 57
gsteiert 0:828bfd94972b 58 /** Name the I2C arguments
gsteiert 0:828bfd94972b 59 */
gsteiert 0:828bfd94972b 60 enum PINTi2cArgs {
gsteiert 0:828bfd94972b 61 IA_CNT = 0, /**< Argument Count */
gsteiert 0:828bfd94972b 62 IA_ADD, /**< Device Address */
gsteiert 0:828bfd94972b 63 IA_DATA, /**< Data, Read = # bytes to read, Write = first data byte */
gsteiert 0:828bfd94972b 64 IA_RDDA /**< Read Data, data to write prior to read */
gsteiert 0:828bfd94972b 65 };
gsteiert 0:828bfd94972b 66
gsteiert 0:828bfd94972b 67 /** Initialize the digital pins and PWM
gsteiert 0:828bfd94972b 68 *
gsteiert 0:828bfd94972b 69 */
gsteiert 0:828bfd94972b 70 void init(DigitalInOut *dio[], I2C* i2c, MAX14661* mux, const int* mux_a, const int* mux_p);
gsteiert 0:828bfd94972b 71
gsteiert 0:828bfd94972b 72 /** Process Remote Arduino Peripheral Module Command
gsteiert 0:828bfd94972b 73 *
gsteiert 0:828bfd94972b 74 * @param input a pointer to the string containing the command
gsteiert 0:828bfd94972b 75 * @param output a pointer to the string to write the result
gsteiert 0:828bfd94972b 76 */
gsteiert 0:828bfd94972b 77 void call(char* input, char* output);
gsteiert 0:828bfd94972b 78
gsteiert 0:828bfd94972b 79 private:
gsteiert 0:828bfd94972b 80
gsteiert 0:828bfd94972b 81 // Internal Functions
gsteiert 0:828bfd94972b 82
gsteiert 0:828bfd94972b 83 /** Process Digital I/O Command
gsteiert 0:828bfd94972b 84 *
gsteiert 0:828bfd94972b 85 * @param resp a pointer to the string to write the result
gsteiert 0:828bfd94972b 86 */
gsteiert 0:828bfd94972b 87 void fnc_dio(char* resp);
gsteiert 0:828bfd94972b 88
gsteiert 0:828bfd94972b 89 /** Process I2C Command
gsteiert 0:828bfd94972b 90 *
gsteiert 0:828bfd94972b 91 * @param resp a pointer to the string to write the result
gsteiert 0:828bfd94972b 92 */
gsteiert 0:828bfd94972b 93 void fnc_i2c(char* resp);
gsteiert 0:828bfd94972b 94
gsteiert 0:828bfd94972b 95 /** Process Multiplexer Command
gsteiert 0:828bfd94972b 96 *
gsteiert 0:828bfd94972b 97 * @param resp a pointer to the string to write the result
gsteiert 0:828bfd94972b 98 */
gsteiert 0:828bfd94972b 99 void fnc_mux(char* resp);
gsteiert 0:828bfd94972b 100
gsteiert 0:828bfd94972b 101
gsteiert 0:828bfd94972b 102 /** Process SPI Command
gsteiert 0:828bfd94972b 103 *
gsteiert 0:828bfd94972b 104 * @param resp a pointer to the string to write the result
gsteiert 0:828bfd94972b 105 */
gsteiert 0:828bfd94972b 106 void fnc_spi(char* resp);
gsteiert 0:828bfd94972b 107
gsteiert 0:828bfd94972b 108 // Internal Resources
gsteiert 0:828bfd94972b 109 I2C *_i2c;
gsteiert 0:828bfd94972b 110 MAX14661 *_mux;
gsteiert 0:828bfd94972b 111 const int *_mux_a; // mux micro map LUT
gsteiert 0:828bfd94972b 112 const int *_mux_p; // mux pmod map LUT
gsteiert 0:828bfd94972b 113
gsteiert 0:828bfd94972b 114 // Array of pointers to the DIO pins
gsteiert 0:828bfd94972b 115 DigitalInOut **_pmd;
gsteiert 0:828bfd94972b 116
gsteiert 0:828bfd94972b 117 // Internal Buffers
gsteiert 0:828bfd94972b 118 int _args[32];
gsteiert 0:828bfd94972b 119 char _dbuf[64];
gsteiert 0:828bfd94972b 120
gsteiert 0:828bfd94972b 121 };
gsteiert 0:828bfd94972b 122
gsteiert 0:828bfd94972b 123 #endif