Bayley Wang
/
flash_configuration
flash based config testing
Diff: CommandProcessor/CommandProcessor.cpp
- Revision:
- 3:82c00c8e2cb4
- Parent:
- 2:cfc39b0843ae
--- a/CommandProcessor/CommandProcessor.cpp Thu Mar 02 07:36:56 2017 +0000 +++ b/CommandProcessor/CommandProcessor.cpp Tue Mar 07 08:06:39 2017 +0000 @@ -12,140 +12,10 @@ #include "config_pins.h" #include "config_table.h" -void cmd_ls(Serial *pc) { - DPRINT(TORQUE_MODE); - FPRINT(MAX_TQPCT_PLUS); - FPRINT(MAX_TQPCT_MINUS); - FPRINT(TORQUE_MAX); - FPRINT(W_MAX); - FPRINT(BUS_VOLTAGE); - FPRINT(F_SW); - FPRINT(K_LOOP_D); - FPRINT(KI_BASE_D); - FPRINT(K_LOOP_Q); - FPRINT(KI_BASE_Q); - FPRINT(F_SLOW_LOOP); - FPRINT(INTEGRAL_MAX); - FPRINT(W_FILTER_STRENGTH); - FPRINT(DQ_FILTER_STRENGTH); - FPRINT(THROTTLE_FILTER_STRENGTH); - FPRINT(KP_D); - FPRINT(KI_D); - FPRINT(KP_Q); - FPRINT(KI_Q); - FPRINT(SLOW_LOOP_COUNTER); - FPRINT(POLE_PAIRS); - FPRINT(POS_OFFSET); - FPRINT(RESOLVER_LOBES); - DPRINT(CPR); - FPRINT(Ld); - FPRINT(Lq); - FPRINT(FLUX_LINKAGE); - FPRINT(Rs); - FPRINT(KT); - FPRINT(W_SAFE); - FPRINT(W_CRAZY); - DPRINT(TH_LIMIT_LOW); - DPRINT(TH_LIMIT_HIGH); - DPRINT(TH_LIMIT_CRAZY); - DPRINT(ROWS); - DPRINT(COLUMNS); - FPRINT(W_STEP); -} - -void cmd_ls2(Serial *pc, char *buf) { - float *fptr = checkf(buf); - if (fptr != NULL) pc->printf("%s: %f\n", buf, *fptr); - int *nptr = NULL; - if (fptr == NULL) nptr = checkn(buf); - if (nptr != NULL) pc->printf("%s: %d\n", buf, *nptr); - if (nptr == NULL && fptr == NULL) pc->printf("%s\n", "No Such Parameter"); -} - -void cmd_defaults(Serial *pc) { - DEFAULT(TORQUE_MODE); - DEFAULT(MAX_TQPCT_PLUS); - DEFAULT(MAX_TQPCT_MINUS); - DEFAULT(TORQUE_MAX); - DEFAULT(W_MAX); - DEFAULT(BUS_VOLTAGE); - DEFAULT(F_SW); - DEFAULT(K_LOOP_D); - DEFAULT(KI_BASE_D); - DEFAULT(K_LOOP_Q); - DEFAULT(KI_BASE_Q); - DEFAULT(F_SLOW_LOOP); - DEFAULT(INTEGRAL_MAX); - DEFAULT(W_FILTER_STRENGTH); - DEFAULT(DQ_FILTER_STRENGTH); - DEFAULT(THROTTLE_FILTER_STRENGTH); - DEFAULT(KP_D); - DEFAULT(KI_D); - DEFAULT(KP_Q); - DEFAULT(KI_Q); - DEFAULT(SLOW_LOOP_COUNTER); - DEFAULT(POLE_PAIRS); - DEFAULT(POS_OFFSET); - DEFAULT(RESOLVER_LOBES); - DEFAULT(CPR); - DEFAULT(Ld); - DEFAULT(Lq); - DEFAULT(FLUX_LINKAGE); - DEFAULT(Rs); - DEFAULT(KT); - DEFAULT(W_SAFE); - DEFAULT(W_CRAZY); - DEFAULT(TH_LIMIT_LOW); - DEFAULT(TH_LIMIT_HIGH); - DEFAULT(TH_LIMIT_CRAZY); - DEFAULT(ROWS); - DEFAULT(COLUMNS); - DEFAULT(W_STEP); - pc->printf("Defaults Loaded\n"); -} - -void cmd_reload(Serial *pc, PreferenceWriter *pref) { - pref->load(); - pc->printf("Flash Values Loaded\n"); -} - -void cmd_set(Serial *pc, char *buf, char *val) { - float *fptr = checkf(buf); - if (fptr != NULL) *fptr = (float) (atof(val)); - int *nptr = NULL; - if (fptr == NULL) nptr = checkn(buf); - if (nptr != NULL) *nptr = (int) (atoi(val)); - cmd_ls2(pc, buf); - if (nptr == NULL && fptr == NULL) pc->printf("%s\n", "No Such Parameter"); -} - -void cmd_flush(Serial *pc, PreferenceWriter *pref) { - if (!pref->ready()) pref->open(); - pref->flush(); -} - -void cmd_cfg(Serial *pc) { - mode = MODE_CFG; - pc->printf("%s\n", "Config mode ON"); -} - -void cmd_exit(Serial *pc) { - mode = MODE_RUN; - pc->printf("%s\n", "Run mode ON"); -} - void processCmd(Serial *pc, PreferenceWriter *pref, char *buf) { char *tokens[10]; int len = tokenize(buf, tokens, 10); - if (mode == MODE_RUN) { - if (len == 1 && strcmp(tokens[0], "cfg") == 0) { - cmd_cfg(pc); - } else { - return; - } - } - switch (len) { case 1: if (strcmp(tokens[0], "ls") == 0) cmd_ls(pc); @@ -153,75 +23,25 @@ if (strcmp(tokens[0], "reload") == 0) cmd_reload(pc, pref); if (strcmp(tokens[0], "load") == 0) cmd_reload(pc, pref); if (strcmp(tokens[0], "flush") == 0) cmd_flush(pc, pref); + if (strcmp(tokens[0], "mode") == 0) cmd_ls2(pc, tokens[0]); + if (strcmp(tokens[0], "src") == 0) cmd_ls2(pc, tokens[0]); + if (strcmp(tokens[0], "op") == 0) cmd_ls2(pc, tokens[0]); + if (strcmp(tokens[0], "cfg") == 0) cmd_mode(pc, tokens[0]); + if (strcmp(tokens[0], "zero") == 0) cmd_mode(pc, tokens[0]); + if (strcmp(tokens[0], "wizard") == 0) cmd_mode(pc, tokens[0]); if (strcmp(tokens[0], "exit") == 0) cmd_exit(pc); break; case 2: if (strcmp(tokens[0], "ls") == 0) cmd_ls2(pc, tokens[1]); if (strcmp(tokens[0], "get") == 0) cmd_ls2(pc, tokens[1]); + if (strcmp(tokens[0], "setp") == 0) cmd_setp(pc, tokens[1]); + if (strcmp(tokens[0], "mode") == 0) cmd_mode(pc, tokens[1]); + if (strcmp(tokens[0], "src") == 0) cmd_src(pc, tokens[1]); + if (strcmp(tokens[0], "op") == 0) cmd_op(pc, tokens[1]); break; case 3: if (strcmp(tokens[0], "set") == 0) cmd_set(pc, tokens[1], tokens[2]); default: break; } -} - -int tokenize(char *buf, char **out, int max) { - char* tok; - int k = 0; - - tok = strtok(buf, " "); - - while(tok != NULL && k < max) { - out[k] = tok; - k++; - tok = strtok(NULL, " "); - } - return k; -} - -#define __check(x) if(strcmp(s, #x) == 0) return &_##x -float* checkf(char *s) { - __check(MAX_TQPCT_PLUS); - __check(MAX_TQPCT_MINUS); - __check(TORQUE_MAX); - __check(W_MAX); - __check(BUS_VOLTAGE); - __check(F_SW); - __check(K_LOOP_D); - __check(KI_BASE_D); - __check(K_LOOP_Q); - __check(KI_BASE_Q); - __check(F_SLOW_LOOP); - __check(INTEGRAL_MAX); - __check(W_FILTER_STRENGTH); - __check(DQ_FILTER_STRENGTH); - __check(THROTTLE_FILTER_STRENGTH); - __check(KP_D); - __check(KI_D); - __check(KP_Q); - __check(KI_Q); - __check(POLE_PAIRS); - __check(POS_OFFSET); - __check(RESOLVER_LOBES); - __check(Ld); - __check(Lq); - __check(FLUX_LINKAGE); - __check(Rs); - __check(KT); - __check(W_SAFE); - __check(W_CRAZY); - __check(W_STEP); - return NULL; -} - -int* checkn(char *s) { - __check(TORQUE_MODE); - __check(CPR); - __check(TH_LIMIT_LOW); - __check(TH_LIMIT_HIGH); - __check(TH_LIMIT_CRAZY); - __check(ROWS); - __check(COLUMNS); - return NULL; } \ No newline at end of file