Francois Girard / Mbed 2 deprecated CommandParser

Dependencies:   Libs mbed

Committer:
fantasiiio
Date:
Wed May 27 22:47:33 2015 +0000
Revision:
0:ac40171bed6b
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fantasiiio 0:ac40171bed6b 1 #include "mbed.h"
fantasiiio 0:ac40171bed6b 2 #include "Commands.h"
fantasiiio 0:ac40171bed6b 3
fantasiiio 0:ac40171bed6b 4 #define COMMAND_MAX_SIZE 30
fantasiiio 0:ac40171bed6b 5
fantasiiio 0:ac40171bed6b 6 char command[COMMAND_MAX_SIZE];
fantasiiio 0:ac40171bed6b 7 int cmdIndex;
fantasiiio 0:ac40171bed6b 8 int commandReady;
fantasiiio 0:ac40171bed6b 9
fantasiiio 0:ac40171bed6b 10 CommandList commands;
fantasiiio 0:ac40171bed6b 11 Serial pc(USBTX, USBRX);
fantasiiio 0:ac40171bed6b 12
fantasiiio 0:ac40171bed6b 13 // This function is called when a character goes into the RX buffer.
fantasiiio 0:ac40171bed6b 14 void rxCallback() {
fantasiiio 0:ac40171bed6b 15 char c;
fantasiiio 0:ac40171bed6b 16 c = pc.getc();
fantasiiio 0:ac40171bed6b 17
fantasiiio 0:ac40171bed6b 18 if(c != '\n')
fantasiiio 0:ac40171bed6b 19 {
fantasiiio 0:ac40171bed6b 20 command[cmdIndex++] = c;
fantasiiio 0:ac40171bed6b 21 command[cmdIndex] = 0;
fantasiiio 0:ac40171bed6b 22 }
fantasiiio 0:ac40171bed6b 23
fantasiiio 0:ac40171bed6b 24 if(cmdIndex == COMMAND_MAX_SIZE || c == '\r')
fantasiiio 0:ac40171bed6b 25 {
fantasiiio 0:ac40171bed6b 26 command[cmdIndex-1] = 0;
fantasiiio 0:ac40171bed6b 27 commandReady = 1;
fantasiiio 0:ac40171bed6b 28 cmdIndex = 0;
fantasiiio 0:ac40171bed6b 29 }
fantasiiio 0:ac40171bed6b 30 }
fantasiiio 0:ac40171bed6b 31
fantasiiio 0:ac40171bed6b 32 void parseServo(CommandArgs cmdArgs)
fantasiiio 0:ac40171bed6b 33 {
fantasiiio 0:ac40171bed6b 34 if(cmdArgs.paramCount != 3)
fantasiiio 0:ac40171bed6b 35 printf("command %s: wrong parameters count\r\n", cmdArgs.params[0]);
fantasiiio 0:ac40171bed6b 36
fantasiiio 0:ac40171bed6b 37 printf("servo: %s %s\r\n",cmdArgs.params[1], cmdArgs.params[2]);
fantasiiio 0:ac40171bed6b 38 }
fantasiiio 0:ac40171bed6b 39
fantasiiio 0:ac40171bed6b 40 void parseUnknown(CommandArgs cmdArgs)
fantasiiio 0:ac40171bed6b 41 {
fantasiiio 0:ac40171bed6b 42 printf("Unknown command '%s'\r\n", cmdArgs.params[0]);
fantasiiio 0:ac40171bed6b 43 }
fantasiiio 0:ac40171bed6b 44
fantasiiio 0:ac40171bed6b 45 int main()
fantasiiio 0:ac40171bed6b 46 {
fantasiiio 0:ac40171bed6b 47 cmdIndex = 0;
fantasiiio 0:ac40171bed6b 48 commandReady = 0;
fantasiiio 0:ac40171bed6b 49
fantasiiio 0:ac40171bed6b 50 commands.add("unknown",parseUnknown);
fantasiiio 0:ac40171bed6b 51 commands.add("servo",parseServo);
fantasiiio 0:ac40171bed6b 52
fantasiiio 0:ac40171bed6b 53 pc.printf("Enter Command:\r\n");
fantasiiio 0:ac40171bed6b 54 pc.attach(&rxCallback, Serial::RxIrq);
fantasiiio 0:ac40171bed6b 55
fantasiiio 0:ac40171bed6b 56 while(1)
fantasiiio 0:ac40171bed6b 57 {
fantasiiio 0:ac40171bed6b 58 if(commandReady)
fantasiiio 0:ac40171bed6b 59 {
fantasiiio 0:ac40171bed6b 60 commands.parseCommand(command);
fantasiiio 0:ac40171bed6b 61 commandReady = 0;
fantasiiio 0:ac40171bed6b 62 }
fantasiiio 0:ac40171bed6b 63 }
fantasiiio 0:ac40171bed6b 64 }