#ifndef UC_CMD_H_ #define UC_CMD_H_ #include enum UCCmdResult { UC_CMDRES_OK, UC_CMDRES_WARN, UC_CMDRES_ERR }; struct UCCmdDef; struct UCVTerm; typedef enum UCCmdResult (*uc_cmd_handler)(struct UCCmd *cmd, struct UCVTerm *term, int arg, char *argv[]); struct UCCmdDef { uint32_t cmd_id; uint32_t cmd_flags; const char *cmd_syntax; const char *cmd_desc; uc_cmd_handler cmd_cb; }; #define UC_DEF_CMD_DEF(id, flags, syntax, desc)\ static const struct UCCmdDef uc_cmd_def ## cmd_id {\ .cmd_id = cmd_id,\ .cmd_flags = flags,\ .cmd_syntax = syntax,\ .cmd_desc = desc,\ }; #define UC_DEF_CMD_FUNC(id)\ static enum UCCmdResult uc_cmd_func_ ## id (struct UCCmd *cmd, struct UCVTerm *term, int nargs, char *args[]) #define UC_DEF_CMD(id, flags, syntax, desc)\ UC_DEF_CMD_DEF(id, flags, syntax, desc)\ UC_DEF_CMD_FUNC(id) UC_DEF_CMD(111, 0 , "show peers", "Show all connected peers") { } #endif /