parent
a0ac5e7393
commit
657463b048
@ -0,0 +1,84 @@
|
|||||||
|
// Example program
|
||||||
|
// work in progress 2022.08.07
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
enum cmd_parser_mode_t{
|
||||||
|
PARSING_DEVICE,
|
||||||
|
CHECK_DEVICE,
|
||||||
|
PARSING_COMMAND,
|
||||||
|
CHECK_COMMAND,
|
||||||
|
PARSING_VALUE,
|
||||||
|
CHECK_VALUE,
|
||||||
|
COMMAND_VALID
|
||||||
|
};
|
||||||
|
|
||||||
|
void device_check(const std::string cmd)
|
||||||
|
{
|
||||||
|
std::cout << cmd << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void cmd_parser(const std::string &cmd)
|
||||||
|
{
|
||||||
|
cmd_parser_mode_t parser_mode = PARSING_DEVICE;
|
||||||
|
std::string::size_type pos;
|
||||||
|
|
||||||
|
for(uint32_t i = 0; i < cmd.length(); i++) {
|
||||||
|
switch(parser_mode) {
|
||||||
|
case PARSING_DEVICE:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
|
||||||
|
pos = cmd.find('_');
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
device_check(cmd.substr(0, pos));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
parser_mode = CHECK_DEVICE;
|
||||||
|
break;
|
||||||
|
case CHECK_DEVICE:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
parser_mode = PARSING_COMMAND;
|
||||||
|
break;
|
||||||
|
case PARSING_COMMAND:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
parser_mode = CHECK_COMMAND;
|
||||||
|
break;
|
||||||
|
case CHECK_COMMAND:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
parser_mode = PARSING_VALUE;
|
||||||
|
break;
|
||||||
|
case PARSING_VALUE:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
parser_mode = CHECK_VALUE;
|
||||||
|
break;
|
||||||
|
case CHECK_VALUE:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
parser_mode = COMMAND_VALID;
|
||||||
|
break;
|
||||||
|
case COMMAND_VALID:
|
||||||
|
std::cout << parser_mode << std::endl;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
std::string cmd_in = "DEVICE_COMMAND_VALUE";
|
||||||
|
|
||||||
|
cmd_parser(cmd_in);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in new issue