39 #define NUM_OF_CMD_TYPE 4
42 #define NUMBER_OF_PARAM 13
43 #define MAX_NUM_OF_PACKET_PARAM 16
45 #define INTENSITY_MAX 50000.0
62 "FirstConnectDummySend"
83 std::vector<unsigned char> v_cmd_frame;
84 int cnt = 0, cmd_num = 0;
85 std::string target =
" ";
86 std::string rep =
",";
92 cmd.replace(cmd.find(target), target.length(), rep);
96 char* ptr_tok_cmd = strtok(&temp_str[0],
",");
101 if(strcmp(
cmd_list[i], ptr_tok_cmd) == 0)
108 v_cmd_frame.push_back(
',');
115 v_cmd_frame.push_back(
's');
116 v_cmd_frame.push_back(
'M');
117 v_cmd_frame.push_back(
'C');
121 v_cmd_frame.push_back(
's');
122 v_cmd_frame.push_back(
'R');
123 v_cmd_frame.push_back(
'C');
128 std::cout <<
"invalid command, type correct command " << cmd_num << std::endl;
132 v_cmd_frame.push_back(
',');
134 for(
int i = 0; i < cmd.size() + 1; i++)
136 v_cmd_frame.push_back(cmd[i]);
139 memcpy(buf, &v_cmd_frame[0], v_cmd_frame.size());
141 return v_cmd_frame.size() - 1;
146 uint16_t msg_size = 0, index= 0, field_size = 0, index_base = 0;
147 int cmd_type = 0, cmd = 0, version = 0, status = 0;
148 float chk_intensity = 0;
149 std::vector<char *> field;
152 if(raw_msg[0] == 0x02)
154 ptr = strtok((
char*) &raw_msg[1],
",");
156 if(raw_msg[strtoul(ptr,NULL, 16) - 1] == 0x03)
158 raw_msg[strtoul(ptr, NULL, 16) - 1] =
'\0';
162 for(
int i = 0; i < raw_msg.size(); i++)
164 std::cout << raw_msg[i] <<std::endl;
171 field.push_back(ptr);
172 ptr = strtok(NULL,
",");
176 msg_size = strtoul(field[index++], NULL, 16);
177 field_size = field.size();
195 int temp_ret = strcmp(field[index],
cmd_list[i]);
211 #ifdef PRINT_PARSE_DATA
212 std::cout <<
"Command : " <<
cmd_list[cmd] << std::endl;
222 ptr = strtok(NULL,
",");
223 field.push_back(ptr);
233 #ifdef PRINT_PARSE_DATA
234 std::cout <<
"Cmd type : " <<
cmd_type_list[cmd_type] << std::endl;
235 std::cout <<
"Command : " <<
cmd_list[cmd] << std::endl;
237 std::cout <<
"Scan frequency : " << std::dec << lsc->
scan_mea.
scan_freq << std::endl;
250 #ifdef PRINT_PARSE_DATA
251 std::cout <<
"" << std::endl;
252 std::cout <<
"msg->angle_min = " <<
msg->angle_min << std::endl;
253 std::cout <<
"msg->angle_max = " <<
msg->angle_max << std::endl;
254 std::cout <<
"msg->angle_increment = " <<
msg->angle_increment << std::endl;
255 std::cout <<
"msg->range_max = " <<
msg->range_max << std::endl;
256 std::cout <<
"msg->range_min = " <<
msg->range_min << std::endl;
257 std::cout <<
"msg->scan_time = " <<
msg->scan_time << std::endl;
258 std::cout <<
"msg->time_increment = " <<
msg->time_increment << std::endl;
261 if(strcmp(field[index++],
"DIST1") == 0)
268 msg->ranges.push_back(strtoul(field[index++], NULL, 16) / 1000.0);
270 #ifdef PRINT_PARSE_DATA
271 std::cout <<
msg->ranges[i] <<
", ";
273 std::cout <<
"" << std::endl;
279 msg->intensities.clear();
280 if(field[index] == field.back())
285 if(strcmp(field[index++],
"RSSI1") == 0 )
291 chk_intensity = strtoul(field[index++], NULL, 16);
293 msg->intensities.push_back(chk_intensity);
295 #ifdef PRINT_PARSE_DATA
296 std::cout << std::hex << std::uppercase <<
msg->intensities[i] <<
",";
298 std::cout <<
"" << std::endl;
310 for(
int i = 2; i < field.size(); i++)
312 std::cout << field[i] <<
" ";
314 std::cout <<
"" << std::endl;
318 for(
int i = 2; i < field.size(); i++)
320 std::cout << field[i] <<
" ";
322 std::cout <<
"" << std::endl;