![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
flash based config testing
Embed:
(wiki syntax)
Show/hide line numbers
cmd_helpers.cpp
00001 #include "mbed.h" 00002 #include "CommandProcessor.h" 00003 #include "PreferenceWriter.h" 00004 #include "globals.h" 00005 00006 #include "config.h" 00007 #include "config_driving.h" 00008 #include "config_inverter.h" 00009 #include "config_logging.h" 00010 #include "config_loop.h" 00011 #include "config_motor.h" 00012 #include "config_pins.h" 00013 #include "config_table.h" 00014 00015 int tokenize(char *buf, char **out, int max) { 00016 char* tok; 00017 int k = 0; 00018 00019 tok = strtok(buf, " "); 00020 00021 while(tok != NULL && k < max) { 00022 out[k] = tok; 00023 k++; 00024 tok = strtok(NULL, " "); 00025 } 00026 return k; 00027 } 00028 00029 #define __check(x) if(strcmp(s, #x) == 0) return &_##x 00030 #define __check2(x) if (strcmp(s, #x) == 0) return &x 00031 00032 float* checkf(char *s) { 00033 __check(MAX_TQPCT_PLUS); 00034 __check(MAX_TQPCT_MINUS); 00035 __check(TORQUE_MAX); 00036 __check(W_MAX); 00037 __check(BUS_VOLTAGE); 00038 __check(F_SW); 00039 __check(K_LOOP_D); 00040 __check(KI_BASE_D); 00041 __check(K_LOOP_Q); 00042 __check(KI_BASE_Q); 00043 __check(F_SLOW_LOOP); 00044 __check(INTEGRAL_MAX); 00045 __check(W_FILTER_STRENGTH); 00046 __check(DQ_FILTER_STRENGTH); 00047 __check(THROTTLE_FILTER_STRENGTH); 00048 __check(KP_D); 00049 __check(KI_D); 00050 __check(KP_Q); 00051 __check(KI_Q); 00052 __check(POLE_PAIRS); 00053 __check(POS_OFFSET); 00054 __check(RESOLVER_LOBES); 00055 __check(Ld); 00056 __check(Lq); 00057 __check(FLUX_LINKAGE); 00058 __check(Rs); 00059 __check(KT); 00060 __check(W_SAFE); 00061 __check(W_CRAZY); 00062 __check(W_STEP); 00063 return NULL; 00064 } 00065 00066 int* checkn(char *s) { 00067 __check(TORQUE_MODE); 00068 __check(CPR); 00069 __check(TH_LIMIT_LOW); 00070 __check(TH_LIMIT_HIGH); 00071 __check(TH_LIMIT_CRAZY); 00072 __check(ROWS); 00073 __check(COLUMNS); 00074 __check2(BREMS_mode); 00075 __check2(BREMS_src); 00076 __check2(BREMS_op); 00077 return NULL; 00078 } 00079 00080 #define __strcase(in, out) case in:strcpy(result, out);break 00081 #define __intcase(in, out) if (strcmp(buf, in) == 0) return out 00082 00083 char* mode_to_str(int n) { 00084 static char result[12]; 00085 switch (n) { 00086 __strcase(MODE_RUN, "Run"); 00087 __strcase(MODE_CFG, "Config"); 00088 __strcase(MODE_ZERO, "Zero"); 00089 __strcase(MODE_CHR, "Wizard"); 00090 default: 00091 strcpy(result, "Invalid"); 00092 break; 00093 } 00094 return result; 00095 } 00096 00097 int str_to_mode(char *buf) { 00098 __intcase("run", MODE_RUN); 00099 __intcase("cfg", MODE_CFG); 00100 __intcase("zero", MODE_ZERO); 00101 __intcase("char", MODE_CHR); 00102 __intcase("wizard", MODE_CHR); 00103 return -1; 00104 } 00105 00106 char* src_to_str(int n) { 00107 static char result[12]; 00108 switch (n) { 00109 __strcase(CMD_SRC_RC, "RC"); 00110 __strcase(CMD_SRC_ANALOG, "Analog"); 00111 __strcase(CMD_SRC_TERMINAL, "Terminal"); 00112 __strcase(CMD_SRC_SERIAL, "Serial"); 00113 __strcase(CMD_SRC_CAN, "CAN"); 00114 __strcase(CMD_SRC_INTERNAL, "Internal"); 00115 default: 00116 strcpy(result, "Invalid"); 00117 break; 00118 } 00119 return result; 00120 } 00121 00122 int str_to_src(char *buf) { 00123 __intcase("rc", CMD_SRC_RC); 00124 __intcase("analog", CMD_SRC_ANALOG); 00125 __intcase("terminal", CMD_SRC_TERMINAL); 00126 __intcase("serial", CMD_SRC_SERIAL); 00127 __intcase("can", CMD_SRC_CAN); 00128 __intcase("internal", CMD_SRC_INTERNAL); 00129 return -1; 00130 } 00131 00132 char* op_to_str(int n) { 00133 static char result[24]; 00134 switch(n) { 00135 __strcase(OP_TORQUE, "Torque loop"); 00136 __strcase(OP_DRIVING, "Driving map"); 00137 __strcase(OP_SPEED, "Speed loop"); 00138 __strcase(OP_POSITION, "Position loop"); 00139 default: 00140 strcpy(result, "Invalid"); 00141 break; 00142 } 00143 return result; 00144 } 00145 00146 int str_to_op(char *buf) { 00147 __intcase("torque", OP_TORQUE); 00148 __intcase("driving", OP_DRIVING); 00149 __intcase("speed", OP_SPEED); 00150 __intcase("pos", OP_POSITION); 00151 __intcase("position", OP_POSITION); 00152 return -1; 00153 } 00154
Generated on Wed Jul 13 2022 04:37:22 by
![doxygen](doxygen.png)