Initial attempt

This commit is contained in:
Nils O. Selåsdal
2014-12-07 15:39:32 +01:00
parent 03d66f8698
commit 0622c57d42
+46 -9
View File
@@ -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);