Command processor to access I2C and SPI Takes URI coded commands and returns JSON array

Fork of SerialInterface by Greg Steiert

Committer:
switches
Date:
Thu Dec 08 16:32:03 2016 +0000
Revision:
3:601b78524967
Parent:
2:3f6a8ac111a9
Child:
4:0bd9ec504040
Committing for sharing alpha release

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 */
switches 2:3f6a8ac111a9 4 #ifndef SERIALINTERFACE_H
switches 2:3f6a8ac111a9 5 #define SERIALINTERFACE_H
gsteiert 0:828bfd94972b 6
gsteiert 0:828bfd94972b 7 #include "mbed.h"
switches 2:3f6a8ac111a9 8 #include "SerialInterface.h"
gsteiert 0:828bfd94972b 9
gsteiert 0:828bfd94972b 10 /** RAPC Library, Provides utilities for remotely accessing peripherals
gsteiert 0:828bfd94972b 11 *
gsteiert 0:828bfd94972b 12 * Example:
gsteiert 0:828bfd94972b 13 * @code
gsteiert 0:828bfd94972b 14 * // Configure board to pass UART signals to peripheral connector.
gsteiert 0:828bfd94972b 15 *
switches 2:3f6a8ac111a9 16 * #include "SerialInterface.h"
gsteiert 0:828bfd94972b 17 *
switches 2:3f6a8ac111a9 18 * SerialInterface serInt;
switches 3:601b78524967 19 * I2C i2c(P3_4, P3_5);
switches 3:601b78524967 20 * SPI spi(P5_1, P5_2, P5_0, P5_3);
gsteiert 0:828bfd94972b 21 *
gsteiert 0:828bfd94972b 22 * int main() {
gsteiert 0:828bfd94972b 23 * char ibuf[256];
gsteiert 0:828bfd94972b 24 * char obuf[256];
switches 3:601b78524967 25 * serInt.init(&i2c, &spi);
gsteiert 0:828bfd94972b 26 * while(1) {
gsteiert 0:828bfd94972b 27 * scanf("%s", ibuf);
switches 3:601b78524967 28 * serInt.call(ibuf, obuf);
gsteiert 0:828bfd94972b 29 * printf("%s=", ibuf);
gsteiert 0:828bfd94972b 30 * printf("%s\n", obuf);
gsteiert 0:828bfd94972b 31 * }
gsteiert 0:828bfd94972b 32 * @endcode
gsteiert 0:828bfd94972b 33 */
switches 2:3f6a8ac111a9 34 class SerialInterface
gsteiert 0:828bfd94972b 35 {
gsteiert 0:828bfd94972b 36 public:
gsteiert 0:828bfd94972b 37
switches 2:3f6a8ac111a9 38 /** Create a SerialInterface interface
gsteiert 0:828bfd94972b 39 *
gsteiert 0:828bfd94972b 40 */
switches 2:3f6a8ac111a9 41 SerialInterface();
gsteiert 0:828bfd94972b 42
switches 2:3f6a8ac111a9 43 ~SerialInterface();
gsteiert 0:828bfd94972b 44
gsteiert 0:828bfd94972b 45 /** Name the I2C arguments
gsteiert 0:828bfd94972b 46 */
gsteiert 0:828bfd94972b 47 enum PINTi2cArgs {
gsteiert 0:828bfd94972b 48 IA_CNT = 0, /**< Argument Count */
gsteiert 0:828bfd94972b 49 IA_ADD, /**< Device Address */
gsteiert 0:828bfd94972b 50 IA_DATA, /**< Data, Read = # bytes to read, Write = first data byte */
gsteiert 0:828bfd94972b 51 IA_RDDA /**< Read Data, data to write prior to read */
gsteiert 0:828bfd94972b 52 };
gsteiert 0:828bfd94972b 53
gsteiert 0:828bfd94972b 54 /** Initialize the digital pins and PWM
gsteiert 0:828bfd94972b 55 *
gsteiert 0:828bfd94972b 56 */
switches 2:3f6a8ac111a9 57 void init(I2C* i2c, SPI* spi);
gsteiert 0:828bfd94972b 58
gsteiert 0:828bfd94972b 59 /** Process Remote Arduino Peripheral Module Command
gsteiert 0:828bfd94972b 60 *
gsteiert 0:828bfd94972b 61 * @param input a pointer to the string containing the command
gsteiert 0:828bfd94972b 62 * @param output a pointer to the string to write the result
gsteiert 0:828bfd94972b 63 */
gsteiert 0:828bfd94972b 64 void call(char* input, char* output);
gsteiert 0:828bfd94972b 65
gsteiert 0:828bfd94972b 66 private:
gsteiert 0:828bfd94972b 67
gsteiert 0:828bfd94972b 68 // Internal Functions
gsteiert 0:828bfd94972b 69
gsteiert 0:828bfd94972b 70 /** Process I2C Command
gsteiert 0:828bfd94972b 71 *
gsteiert 0:828bfd94972b 72 * @param resp a pointer to the string to write the result
gsteiert 0:828bfd94972b 73 */
gsteiert 0:828bfd94972b 74 void fnc_i2c(char* resp);
gsteiert 0:828bfd94972b 75
gsteiert 0:828bfd94972b 76 /** Process SPI Command
gsteiert 0:828bfd94972b 77 *
gsteiert 0:828bfd94972b 78 * @param resp a pointer to the string to write the result
gsteiert 0:828bfd94972b 79 */
gsteiert 0:828bfd94972b 80 void fnc_spi(char* resp);
gsteiert 0:828bfd94972b 81
gsteiert 0:828bfd94972b 82 // Internal Resources
gsteiert 0:828bfd94972b 83 I2C *_i2c;
gsteiert 0:828bfd94972b 84
switches 2:3f6a8ac111a9 85 // Internal Resources
switches 2:3f6a8ac111a9 86 SPI *_spi;
gsteiert 0:828bfd94972b 87
gsteiert 0:828bfd94972b 88 // Internal Buffers
switches 2:3f6a8ac111a9 89 int _args[64];
switches 2:3f6a8ac111a9 90 char _dbuf[128];
gsteiert 0:828bfd94972b 91
gsteiert 0:828bfd94972b 92 };
gsteiert 0:828bfd94972b 93
gsteiert 0:828bfd94972b 94 #endif