From 87d996dfe1f04901711f1f718ff62f8b1fba462b Mon Sep 17 00:00:00 2001 From: Will Hilton Date: Sun, 5 May 2013 23:17:52 -0400 Subject: [PATCH 1/3] Added 'Command not recognized' response to hubo-console --- src/hubo-console.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/hubo-console.cpp b/src/hubo-console.cpp index 16195a5..6e84702 100644 --- a/src/hubo-console.cpp +++ b/src/hubo-console.cpp @@ -368,6 +368,10 @@ int main() { /* Quit */ else if (strcmp(buf0,"quit")==0) break; + } + else { + printf("Command '%s' not recognized.\n",getArg(buf,0)); + } if (buf[0]!=0) add_history(buf); sleep(tsleep); // sleep for tsleep sec From ca64b6682cf6bfc8de12677939c216b518cb21df Mon Sep 17 00:00:00 2001 From: Will Hilton Date: Sun, 5 May 2013 23:20:57 -0400 Subject: [PATCH 2/3] Print a final \n before quitting hubo-console and added 'exit' as an alias for 'quit'. --- src/hubo-console.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hubo-console.cpp b/src/hubo-console.cpp index 6e84702..f5439c1 100644 --- a/src/hubo-console.cpp +++ b/src/hubo-console.cpp @@ -366,7 +366,8 @@ int main() { } /* Quit */ - else if (strcmp(buf0,"quit")==0) + else if (strcmp(buf0,"quit")==0 || strcmp(buf0,"exit")==0) { + printf("\n"); break; } else { From 0355fca1703aca5b7f9f3e5550cec741214a4ba6 Mon Sep 17 00:00:00 2001 From: Will Hilton Date: Mon, 6 May 2013 00:18:03 -0400 Subject: [PATCH 3/3] hubo-console checks for invalid joint names --- src/hubo-console.cpp | 189 ++++++++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 85 deletions(-) diff --git a/src/hubo-console.cpp b/src/hubo-console.cpp index f5439c1..d7b8d23 100644 --- a/src/hubo-console.cpp +++ b/src/hubo-console.cpp @@ -76,7 +76,6 @@ int test(char *s , struct hubo *h); char* getArg(string s, int argNum); void hubo_update(struct hubo_ref *h_ref, struct hubo_state *h_state); int name2mot(char*s, hubo_param_t *h); -double hubo_get(char*s, struct hubo_ref *h, hubo_param_t *p); void hubo_jmc_beep(hubo_param_t *h, hubo_board_cmd_t *c, char* buff); void hubo_jmc_home(hubo_param_t *h, hubo_board_cmd_t *c, char* buff); //char* cmd [] ={ "test","hello", "world", "hell" ,"word", "quit", " " }; @@ -84,7 +83,6 @@ void hubo_jmc_home_all(hubo_param_t *h, hubo_board_cmd_t *c, char* buff); void hubo_enc_reset(hubo_param_t *h, hubo_board_cmd_t *c, int jnt); void hubo_startup_all(hubo_param_t *h, hubo_board_cmd_t *c, char* buff); int name2sensor(char* name, hubo_param_t *h); -double hubo_set(char*s, hubo_param_t *p); char* cmd [] ={ "initialize","fet","initializeAll","homeAll","zero","zeroacc","iniSensors","reset", "ctrl","ctrlAll","enczero", "goto","get","test","update", "quit","beep", "home"," ", "resetAll","status","statusAll"}; //, @@ -151,36 +149,48 @@ int main() { printf("--->Hubo Information Updated\n"); } else if (strcmp(buf0,"get")==0) { - double jRef = hubo_get(buf,&H_ref, &H_param); - char* tmp = getArg(buf,1); - printf(">> %s = %f rad \n",tmp,jRef); - } - else if (strcmp(buf0,"goto")==0) { - int jnt = hubo_set(buf, &H_param); - float f = 0.0; - char* str = getArg(buf,2); - if(sscanf(str, "%f", &f) != 0){ //It's a float. - H_ref.ref[jnt] = (double)f; - int r = ach_put( &chan_hubo_ref, &H_ref, sizeof(H_ref) ); + int jnt = name2mot(getArg(buf,1), &H_param); + if( jnt == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} + else { + double jRef = H_ref.ref[jnt]; char* tmp = getArg(buf,1); - printf(">> %s = %f rad \n",tmp,f); + printf(">> %s = %f rad \n",tmp,jRef); } + } + else if (strcmp(buf0,"goto")==0) { + int jnt = name2mot(getArg(buf,1), &H_param); + if( jnt == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} else { - printf(">> Bad input \n"); + float f = 0.0; + char* str = getArg(buf,2); + if(sscanf(str, "%f", &f) != 0){ //It's a float. + H_ref.ref[jnt] = (double)f; + int r = ach_put( &chan_hubo_ref, &H_ref, sizeof(H_ref) ); + char* tmp = getArg(buf,1); + printf(">> %s = %f rad \n",tmp,f); + } + else { + printf(">> Bad input \n"); + } } } else if (strcmp(buf0,"beep")==0) { hubo_jmc_beep(&H_param, &H_cmd, buf); } else if (strcmp(buf0,"home")==0) { - hubo_jmc_home(&H_param, &H_cmd, buf); - printf("%s - Home \n",getArg(buf,1)); + if( name2mot(getArg(buf,1),&H_param) == -1 ) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} + else { + hubo_jmc_home(&H_param, &H_cmd, buf); + printf("%s - Home \n",getArg(buf,1)); + } } else if (strcmp(buf0,"homeAll")==0) { hubo_jmc_home_all(&H_param, &H_cmd, buf); printf("%s - Home All \n",getArg(buf,1)); tsleep = 5; - } else if (strcmp(buf0,"ctrl")==0) { @@ -188,16 +198,20 @@ int main() { if(hOnOff == 0 | hOnOff == 1) { H_cmd.type = D_CTRL_ON_OFF; H_cmd.joint = name2mot(getArg(buf,1),&H_param); // set motor num - if( hOnOff == 1) - H_cmd.param[0] = D_ENABLE; // 1 = on - if( hOnOff == 0) - H_cmd.param[0] = D_DISABLE; // 0 = off - if( hOnOff == 1 | hOnOff == 0 ) - r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); - if( hOnOff == 0) { - printf("%s - Turning Off CTRL\n",getArg(buf,1));} - else { - printf("%s - Turning On CTRL\n",getArg(buf,1));} + if( H_cmd.joint == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} + else { + if( hOnOff == 1) + H_cmd.param[0] = D_ENABLE; // 1 = on + if( hOnOff == 0) + H_cmd.param[0] = D_DISABLE; // 0 = off + if( hOnOff == 1 | hOnOff == 0 ) + r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); + if( hOnOff == 0) { + printf("%s - Turning Off CTRL\n",getArg(buf,1));} + else { + printf("%s - Turning On CTRL\n",getArg(buf,1));} + } } } @@ -223,25 +237,29 @@ int main() { else if (strcmp(buf0,"status")==0) { H_cmd.type = D_GET_STATUS; H_cmd.joint = name2mot(getArg(buf,1),&H_param); // set motor num - r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); - printf("%s - Getting Status \n", &H_param.joint[H_cmd.joint].name); - usleep(50*1000); - hubo_update(&H_ref, &H_state); - hubo_joint_status_t e = H_state.status[H_cmd.joint]; - printf("Mode : %d \n", H_ref.mode[H_cmd.joint]); - printf("Zeroed : %d \n", H_state.joint[H_cmd.joint].zeroed); - printf("Homed : %d \n", e.homeFlag); - printf("Jam : %d \n", e.jam); - printf("PWM Saturated: %d \n", e.pwmSaturated); - printf("Big Error : %d \n", e.bigError); - printf("Enc Error : %d \n", e.encError); - printf("Drive Fault : %d \n", e.driverFault); - printf("Pos Err (min): %d \n", e.posMinError); - printf("Pos Err (max): %d \n", e.posMaxError); - printf("Velos Error : %d \n", e.velError); - printf("Acc Error : %d \n", e.accError); - printf("Temp Error : %d \n", e.tempError); - printf("Active : %d \n", H_state.joint[H_cmd.joint].active); + if( H_cmd.joint == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} + else { + r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); + printf("%s - Getting Status \n", H_param.joint[H_cmd.joint].name); + usleep(50*1000); + hubo_update(&H_ref, &H_state); + hubo_joint_status_t e = H_state.status[H_cmd.joint]; + printf("Mode : %d \n", H_ref.mode[H_cmd.joint]); + printf("Zeroed : %d \n", H_state.joint[H_cmd.joint].zeroed); + printf("Homed : %d \n", e.homeFlag); + printf("Jam : %d \n", e.jam); + printf("PWM Saturated: %d \n", e.pwmSaturated); + printf("Big Error : %d \n", e.bigError); + printf("Enc Error : %d \n", e.encError); + printf("Drive Fault : %d \n", e.driverFault); + printf("Pos Err (min): %d \n", e.posMinError); + printf("Pos Err (max): %d \n", e.posMaxError); + printf("Velos Error : %d \n", e.velError); + printf("Acc Error : %d \n", e.accError); + printf("Temp Error : %d \n", e.tempError); + printf("Active : %d \n", H_state.joint[H_cmd.joint].active); + } } else if (strcmp(buf0,"statusAll")==0) { printf(" - Getting Status All\n"); @@ -250,7 +268,7 @@ int main() { for( int i = 0; i < HUBO_JOINT_COUNT; i++) { hubo_joint_status_t e = H_state.status[i]; printf("%s - %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n" - , &H_param.joint[i].name + , H_param.joint[i].name , H_ref.mode[i] , H_state.joint[i].zeroed , e.homeFlag @@ -270,15 +288,19 @@ int main() { else if (strcmp(buf0,"resetAll")==0) { for( int i = 0; i < HUBO_JOINT_COUNT; i++) { hubo_enc_reset(&H_param, &H_cmd, i); - printf("%s - Resetting Encoder \n", &H_param.joint[i].name); + printf("%s - Resetting Encoder \n", H_param.joint[i].name); usleep(10*1000); } } else if (strcmp(buf0,"reset")==0) { int jnt = name2mot(getArg(buf, 1), &H_param); - hubo_enc_reset(&H_param, &H_cmd, jnt); - printf("%s - Resetting Encoder \n",getArg(buf,1)); + if( jnt == -1 ) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} + else { + hubo_enc_reset(&H_param, &H_cmd, jnt); + printf("%s - Resetting Encoder \n",getArg(buf,1)); +} } else if (strcmp(buf0,"startup")==0) { hubo_startup_all(&H_param, &H_cmd, buf); @@ -290,15 +312,19 @@ int main() { if(onOrOff == 0 | onOrOff == 1) { H_cmd.type = D_CTRL_SWITCH; H_cmd.joint = name2mot(getArg(buf,1),&H_param); // set motor num - if(onOrOff==1) // 1 = on, 0 = 0ff - H_cmd.param[0] = D_ENABLE; - else if(onOrOff==0) - H_cmd.param[0] = D_DISABLE; - r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); - if(onOrOff == 0) { - printf("%s - Turning Off CTRL\n",getArg(buf,1));} + if( H_cmd.joint == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} else { - printf("%s - Turning On CTRL\n",getArg(buf,1));} + if(onOrOff==1) // 1 = on, 0 = 0ff + H_cmd.param[0] = D_ENABLE; + else if(onOrOff==0) + H_cmd.param[0] = D_DISABLE; + r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); + if(onOrOff == 0) { + printf("%s - Turning Off CTRL\n",getArg(buf,1));} + else { + printf("%s - Turning On CTRL\n",getArg(buf,1));} + } } } else if (strcmp(buf0,"fet")==0) { @@ -306,23 +332,31 @@ int main() { if(onOrOff == 0 | onOrOff == 1) { H_cmd.type = D_FET_SWITCH; H_cmd.joint = name2mot(getArg(buf,1),&H_param); // set motor num - if(onOrOff==1) - H_cmd.param[0] = D_ENABLE; - else if(onOrOff==0) - H_cmd.param[0] = D_DISABLE; - int r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); - if(onOrOff == 0) { - printf("%s - Turning Off FET\n",getArg(buf,1));} + if( H_cmd.joint == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} else { - printf("%s - Turning On FET\n",getArg(buf,1));} + if(onOrOff==1) + H_cmd.param[0] = D_ENABLE; + else if(onOrOff==0) + H_cmd.param[0] = D_DISABLE; + int r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); + if(onOrOff == 0) { + printf("%s - Turning Off FET\n",getArg(buf,1));} + else { + printf("%s - Turning On FET\n",getArg(buf,1));} + } } } else if (strcmp(buf0,"initialize")==0) { H_cmd.type = D_JMC_INITIALIZE; H_cmd.joint = name2mot(getArg(buf,1),&H_param); // set motor num - //C.val[0] = atof(getArg(buf,2)); - int r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); - printf("%s - Initialize \n",getArg(buf,1)); + if( H_cmd.joint == -1) { + printf("Unrecognized joint '%s'\n",getArg(buf,1));} + else { + //C.val[0] = atof(getArg(buf,2)); + int r = ach_put( &chan_hubo_board_cmd, &H_cmd, sizeof(H_cmd) ); + printf("%s - Initialize \n",getArg(buf,1)); + } } else if (strcmp(buf0,"initializeAll")==0) { H_cmd.type = D_JMC_INITIALIZE_ALL; @@ -381,21 +415,6 @@ int main() { return 0; } -double hubo_get(char*s, struct hubo_ref *h, hubo_param_t *p) { - - /* get joint number */ - int jointNo = name2mot(getArg(s,1),p); - - return h->ref[jointNo]; -} - -double hubo_set(char*s, hubo_param_t *p) { - - /* get joint number */ - int jointNo = name2mot(getArg(s,1),p); - return jointNo; -} - void hubo_jmc_beep(hubo_param_t *h, hubo_board_cmd_t *c, char* buff) { /* make beep */ c->type = D_JMC_BEEP;