71 "sINVALID",
"sRN",
"sRA",
"sMN",
"sAN",
"sMA",
"sWN",
"sWA",
"sEN",
"sEA",
"sSN",
"sFA"
79 {
"", sINVALID}, {
"sINVALID", sINVALID}, {
"sRN", sRN}, {
"sRA", sRA}, {
"sMN", sMN}, {
"sAN", sAN}, {
"sMA", sMA}, {
"sWN", sWN}, {
"sWA", sWA}, {
"sEN", sEN}, {
"sEA", sEA}, {
"sSN", sSN}, {
"sFA", sFA}
100 const std::string & command_name,
const std::vector<std::string> & parameter)
107 return cola_telegram;
132 std::string cola_ascii_cmd;
133 if (
cola_ascii.size() > s_cola_ascii_start_tag.size() + s_cola_ascii_end_tag.size()
134 &&
cola_ascii.substr(0, s_cola_ascii_start_tag.size()) == s_cola_ascii_start_tag
137 cola_ascii_cmd =
cola_ascii.substr(s_cola_ascii_start_tag.size(),
cola_ascii.size() - s_cola_ascii_start_tag.size() - s_cola_ascii_end_tag.size());
145 if(cola_parts.size() < 2)
147 ROS_WARN_STREAM(
"## ERROR Parse error in ColaParser::decodeColaTelegram(\"" << cola_ascii_cmd <<
"\"): to few arguments, at least command_type and command_name required");
148 return createColaTelegram(sINVALID,
"");
152 if(command_type == sINVALID)
154 ROS_WARN_STREAM(
"## ERROR Parse error in ColaParser::decodeColaTelegram(\"" << cola_ascii_cmd <<
"\"): invalid command_type \"" << cola_parts[0] <<
"\"");
155 return createColaTelegram(sINVALID,
"");
158 if(cola_parts[1].empty())
160 ROS_WARN_STREAM(
"## ERROR Parse error in ColaParser::decodeColaTelegram(\"" << cola_ascii_cmd <<
"\"): invalid command_name \"" << cola_parts[1] <<
"\"");
161 return createColaTelegram(sINVALID,
"");
165 if(cola_parts.size() > 2)
167 cola_telegram.
parameter.reserve(cola_parts.size() - 2);
168 for(
size_t n = 2; n < cola_parts.size(); n++)
169 cola_telegram.
parameter.push_back(cola_parts[n]);
171 return cola_telegram;
189 for(
size_t n = 0; n < cola_telegram.
parameter.size(); n++)
191 if( n == 0 || parameter_is_ascii)
207 const std::vector<std::string> & parameter,
bool parameter_is_ascii)
209 return encodeColaTelegram(createColaTelegram(command_type, command_name, parameter), parameter_is_ascii);
220 return s_command_type_string[command_type];
231 std::map<std::string, sick_scan_xd::ColaParser::COLA_SOPAS_COMMAND>::const_iterator iter_command_type = s_command_type_map.find(sopas_command);
248 base = ((cola_arg.find_first_of(
"+-") != std::string::npos) ? 10 : 16);
249 return std::stoi(cola_arg, 0, base);
251 catch(
const std::exception & exc)
253 ROS_WARN_STREAM(
"## ERROR ColaParser::convertColaArg(" << cola_arg <<
") failed, exception " << exc.what());
270 base = ((cola_arg.find_first_of(
"+-") != std::string::npos) ? 10 : 16);
271 return (uint32_t)std::stoul(cola_arg, 0, base);
273 catch(
const std::exception & exc)
275 ROS_WARN_STREAM(
"## ERROR ColaParser::convertColaArg(" << cola_arg <<
") failed, exception " << exc.what());