cli.h

来自「基于ARM和uC/OS-II实现的串口控制台」· C头文件 代码 · 共 104 行

H
104
字号
/*******************************************************************************
**
**  File Name:      CLI.h
**  Author:			Zhoudan
**  Last Modified:  2007-01-10
**  Last Version:   0.5
**  Environment:    LPC2214/RVDSv2.2/uCOS-II2.52
**  Descriptions:   
**
*******************************************************************************/
#ifndef __CLI_H__
#define __CLI_H__

#ifndef __CLI_C__
#define EXTERN
#else
#define EXTERN extern
#endif  //__CLI_C__

#include "config.h"
#include "cmd.h"

/* 打开/关闭串口中断 */
#define EnU0Int()   VICIntEnable = EN_IRQ_UART0
#define DisU0Int()  VICIntEnClr = EN_IRQ_UART0

/* 命令状态 */
EXTERN uint8 CmdStatus;
#define GetCmdStatus()          CmdStatus
#define ChangCmdStatus(x)       CmdStatus = x
#define USER                    0x00
#define PRIVATE                 0x01
#define CONFIG                  0x02
#define CONFIG_IF               0x03
#define CONFIG_LINE             0x04

/* 命令BUF结构 */
#define CMD_BUF_MAX             128     // 命令最大长度
#define MAX_HIS_BUF             32      // 历史命令数

typedef struct _BufInfo
{
    BYTE  Buf[CMD_BUF_MAX];     /* 命令BUF */
    uint8 WrPtr;                /* 写指针 */
    uint8 RdPtr;                /* 读指针 */
    uint8 InsDelPtr;            /* 插入和删除指针 */
    uint8 Cnt;                  /* BUF中有效数据计数 */
}BufInfo;

typedef struct _CmdInfo
{
    char *name;             // 命令名
    CMDHANDLE func;         // 命令的处理函数
    char *help;             // 命令的帮助字符串
    int cmdid;              // 标号
    struct _CmdInfo *paraDB;
}CmdInfo;

typedef struct _CmdStatus
{
    CmdInfo *CurCmdDB;
    char *StatusPrompt;
}

/*******************************************************************************
extern
*******************************************************************************/
void CLIInit(void);
void GetCmd(char *pCurCmdBuf);
BOOL GetPara(char * CurBuf, char * pParaBuf, uint8 ParaNum);
int SearchCmd(char *CurBuf, uint8 *CmdID, uint8 *err);
int SearchPara(char *CurBuf, uint8 ParaNum, CmdInfo *CurDB, uint8 *ParaID
                , uint8 *err);
void CmdRun(uint8 CmdID);
void CmdErr(void);
void CmdIncomplate(void);
void CmdNotUnique(void);
void CurPrompt(void);
void BufClean(void);
void PrintBuf(void);
void ConSplit(void);

void TaskCLI(void *pdata);
void U0RxISR(void);

/* 终端提示信息 */
EXTERN char *HOSTNAME;
EXTERN const char *DefHostName;
EXTERN const char *PROMPT;
EXTERN const char *PROMPT_PRI;
EXTERN const char *PROMPT_CONFIG;
EXTERN const char *PROMPT_CONF_LINE;
EXTERN const char *PROMPT_CONF_IF;
EXTERN const char *BLANKROW;

/* 命令错误 */
EXTERN const char *CMD_ERR_INVALID;
EXTERN const char *CMD_ERR_INCOMPLETE;

EXTERN uint32 CLIConfigFile[];


#endif /* __CLI_H__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?