Initial attempt
This commit is contained in:
+46
-9
@@ -1,17 +1,54 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
enum UCCmdNodeType {
|
enum UCCmdRc {
|
||||||
UC_CMDNODE_ROOT,
|
/**Executed ok */
|
||||||
UC_CMDNODE_KEYWORD,
|
UC_CMD_OK,
|
||||||
UC_CMD-zzzzzzzzzzzzzzzz
|
/**Executed with warning */
|
||||||
|
UC_CMD_WARNING,
|
||||||
|
/*Not executed, incomplete command */
|
||||||
|
UC_CMD_INCOMPLETE,
|
||||||
|
/*Not executed, generic error */
|
||||||
|
UC_CMD_ERROR,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum UCCmdRc (*uc_cmd_handler)(int narg, char *args[]);
|
||||||
|
typedef void (*uc_cmd_write_cfg)(void);
|
||||||
|
|
||||||
|
#define UC_CMD_FL_HIDDEN (1 << 0)
|
||||||
|
|
||||||
|
struct UCCmdNode;
|
||||||
|
struct UCCmdDef;
|
||||||
|
|
||||||
|
struct UCCmdSettings {
|
||||||
|
const char *name;
|
||||||
|
const char *version;
|
||||||
|
const char *boot_cfg_file;
|
||||||
|
|
||||||
|
struct UCCmdNode *initial_node;
|
||||||
|
struct UCCmdNode *node_head;
|
||||||
|
};
|
||||||
|
|
||||||
struct UCCmdNode {
|
struct UCCmdNode {
|
||||||
enum UCCmdNodeType type;
|
int id;
|
||||||
uint32_t flags;
|
uc_cmd_write_cfg write_func;
|
||||||
void *param;
|
struct UCCmdDef *cmd_head; //linked list of UCCmdDef
|
||||||
struct UCCmdNode *next;
|
struct UCCmdNode *next;
|
||||||
struct UCCmdNode *child;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct UCCmdDef {
|
||||||
|
const char *cmd;
|
||||||
|
const char **help;
|
||||||
|
size_t cmd_len;
|
||||||
|
uc_cmd_handler cb;
|
||||||
|
uint32_t flags;
|
||||||
|
|
||||||
|
struct UCCmdDef *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void uc_cmd_init(const char *app_name, const char *version);
|
||||||
|
int uc_cmd_read_config(const char *filename);
|
||||||
|
void uc_cmd_set_configfile(const char *filename);
|
||||||
|
void uc_cmd_add_cmd(struct UCCmdDef *cmd, int parent_node_id);
|
||||||
|
void uc_cmd_set_default_node(int node_id);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user