#pragma once #define CMDP_KEY_DONE 1 #define CMDP_KEY_ARG 2 #define CMDP_KEY_STOP 3 typedef enum { CMD_OK, CMD_VALUE_REQ, CMD_MULTIVAL_REQ, CMD_UNKNOWN, } result_t; typedef result_t (*parser_t)(char key, char *arg); typedef struct { char *name; parser_t parser; } cmd_t; void cmd_parser_init(const cmd_t *commands[], uint8_t size); void msg_parse(char *msg);