加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
debugcmd.h 2.79 KB
一键复制 编辑 原始数据 按行查看 历史
/*
* debugcmd.h
*
* Created on: 2020年2月24日
* Author: wangbing
* Email : mz8023yt@163.com
*/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef MAZ_DEBUGCMD_H_
#define MAZ_DEBUGCMD_H_
#include "debug.h"
#include "debugcmd_config.h"
#include "list.h"
/* 1. TYPE: Data type */
#define uint8_t unsigned char
#define uint16_t unsigned short
#define uint32_t unsigned int
/* 2. MAZRET: State code returned */
#define MTRUE 1
#define MFALSE 0
#define MAZRET_TRUE MTRUE
#define MAZRET_FALSE MFALSE
#define MENABLE 1
#define MDISABLE 0
#define MAZRET_ENBALE MENABLE
#define MAZRET_DISABLE MDISABLE
#define MAZRET_REMOTECMD 100
#define MAZRET_OK 0
#define MAZRET_NG -1
#define MAZRET_EINVAL -2 /* Invalid argument */
#define MAZRET_ENOITEM -3 /* No such item */
#define MAZRET_ENOCMD -4 /* No such command */
#define MAZRET_ENOSUBCMD -5 /* No such sub command */
#define MAZRET_ENULLP -6 /* Null pointer exception */
#define MAZRET_EEXIST -7 /* File exists */
#define MAZRET_EEXE -8 /* Command exe fail */
#define MAZRET_ENEWLINE -9 /* New line */
#define MAZRET_EAUTO -10 /* Auto completion */
#define MAZRET_ERING -11 /* Ring */
#define MAZRET_EDEV -12 /* No devices */
/**
* @brief 调试命令组件版本号
*/
#define DEBUGCMD_MAIN_VER 1
#define DEBUGCMD_SUB_VER 2
#define DEBUGCMD_REV_VER 0
/**
* @brief 命令回调函数原型
*/
typedef int (*DEBUGCMD_HANDLER)(void* cmd, char* param);
/**
* @brief 子命令类型
*/
typedef struct _DEBUGCMD_SUB_CMD_ {
char* name; // 子命令名称
char* desc; // 子命令描述信息
DEBUGCMD_HANDLER handler; // 子命令回调函数
struct list_head list; // 子命令链表成员
int registered; // 是否注册标记
} DEBUGCMD_SCMD;
/**
* @brief 主命令类型
*/
typedef struct _DEBUGCMD_MAIN_CMD_ {
char* name; // 主命令名称
char* desc; // 主命令描述信息
DEBUGCMD_HANDLER handler; // 主命令回调函数, 遍历子命令链表, 并打印字命令的描述信息
DEBUGCMD_SCMD cmds; // 主命令下绑定的子命令链表
struct list_head list; // 主命令链表成员
int registered; // 是否注册标记
} DEBUGCMD_MCMD;
/**
* @brief API接口
*/
int debugcmd_init(void);
int debugcmd_deinit(void);
int debugcmd_mcmd_register(DEBUGCMD_MCMD* mcmd);
int debugcmd_mcmd_unregister(DEBUGCMD_MCMD* mcmd);
int debugcmd_scmd_register(DEBUGCMD_MCMD* mcmd, DEBUGCMD_SCMD* scmd);
int debugcmd_scmd_unregister(DEBUGCMD_SCMD* scmd);
int debugcmd_execute(char* str);
int debugcmd_automatic_completion(char* str, char* fill, int* length);
int debugcmd_export(char* filename);
int debugcmd_param_only_space(char* str);
#endif /* MAZ_DEBUGCMD_H_ */
#ifdef __cplusplus
}
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化