Bayley Wang / Mbed 2 deprecated dc_motor_control

Dependencies:   mbed FastPWM3

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers cmd_helpers.cpp Source File

cmd_helpers.cpp

00001 #include "mbed.h"
00002 #include "CommandProcessor.h"
00003 
00004 #include "globals.h"
00005 
00006 int tokenize(char *buf, char **out, int max) {
00007     char* tok;
00008     int k = 0;
00009     
00010     tok = strtok(buf, " ");
00011     
00012     while(tok != NULL && k < max) {
00013         out[k] = tok;
00014         k++;
00015         tok = strtok(NULL, " ");
00016     }
00017     return k;
00018 }
00019 
00020 #define __check(x) if(strcmp(s, #x) == 0) return &x
00021 
00022 float* checkf(char *s) {
00023     __check(KP);
00024     __check(KI);
00025     __check(I_LIMIT);
00026     __check(F_SW);
00027     __check(THROTTLE_DEADBAND);
00028     __check(ANALOG_THROTTLE_LOW);
00029     __check(ANALOG_THROTTLE_HI);
00030     return NULL;
00031 }
00032 
00033 int* checkn(char *s) {
00034     return NULL;
00035 }
00036 
00037 #define __strcase(in, out) case in:strcpy(result, out);break
00038 #define __intcase(in, out) if (strcmp(buf, in) == 0) return out
00039 
00040 char* src_to_str(int n) {
00041     static char result[12];
00042     switch (n) {
00043         __strcase(CMD_SRC_RC, "RC");
00044         __strcase(CMD_SRC_ANALOG, "Analog");
00045         __strcase(CMD_SRC_TERMINAL, "Terminal");
00046         __strcase(CMD_SRC_SERIAL, "Serial");
00047         __strcase(CMD_SRC_CAN, "CAN");
00048         __strcase(CMD_SRC_INTERNAL, "Internal");
00049     default:
00050         strcpy(result, "Invalid");
00051         break;
00052     }
00053     return result;
00054 }
00055 
00056 int str_to_src(char *buf) {
00057     __intcase("rc", CMD_SRC_RC);
00058     __intcase("analog", CMD_SRC_ANALOG);
00059     __intcase("terminal", CMD_SRC_TERMINAL);
00060     __intcase("serial", CMD_SRC_SERIAL);
00061     __intcase("can", CMD_SRC_CAN);
00062     __intcase("internal", CMD_SRC_INTERNAL);
00063     return -1;
00064 }
00065 
00066 
00067 char* op_to_str(int n) {
00068     static char result[24];
00069     switch(n) {
00070         __strcase(OP_TORQUE, "Torque loop");
00071         __strcase(OP_DRIVING, "Driving map");
00072         __strcase(OP_SPEED, "Open-loop speed");
00073         __strcase(OP_POSITION, "Position loop");
00074     default:
00075         strcpy(result, "Invalid");
00076         break;
00077     }
00078     return result;
00079 }
00080 
00081 int str_to_op(char *buf) {
00082     __intcase("torque", OP_TORQUE);
00083     __intcase("driving", OP_DRIVING);
00084     __intcase("speed", OP_SPEED);
00085     __intcase("pos", OP_POSITION);
00086     __intcase("position", OP_POSITION);
00087     return -1;
00088 }