Command processor to access I2C and SPI Takes URI coded commands and returns JSON array
Fork of SerialInterface by
PmodInterface.h@0:828bfd94972b, 2014-05-10 (annotated)
- Committer:
- gsteiert
- Date:
- Sat May 10 00:37:21 2014 +0000
- Revision:
- 0:828bfd94972b
- Child:
- 1:0c22013818d7
URI friendly Pmod Interface Library initial publication
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:828bfd94972b | 9 | #include "mbd2pmd.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 |