29 lines
748 B
C++
29 lines
748 B
C++
|
#include "Command.h"
|
||
|
|
||
|
void Command::run(char* str){
|
||
|
for(int i=0; i < call_count; i++){
|
||
|
if(isSentinel(call_ids[i],str)){ // case : call_ids = "T2" str = "T215.15"
|
||
|
call_list[i](str+strlen(call_ids[i])); // get 15.15 input function
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
void Command::add(char* id, CommandCallback onCommand){
|
||
|
call_list[call_count] = onCommand;
|
||
|
call_ids[call_count] = id;
|
||
|
call_count++;
|
||
|
}
|
||
|
void Command::scalar(float* value, char* user_cmd){
|
||
|
*value = atof(user_cmd);
|
||
|
}
|
||
|
bool Command::isSentinel(char* ch,char* str)
|
||
|
{
|
||
|
char s[strlen(ch)+1];
|
||
|
strncpy(s,str,strlen(ch));
|
||
|
s[strlen(ch)] = '\0'; //strncpy need add end '\0'
|
||
|
if(strcmp(ch, s) == 0)
|
||
|
return true;
|
||
|
else
|
||
|
return false;
|
||
|
}
|