?? cli_cmdreg.inc
字號:
/************************************************************************
Copyright 200X - 200X+1.
filename : CLI_Io.h
description : 本文件提供主機軟件命令行的注冊接口以及注冊過程中所需要
引用的結構定義,另外也包含執行函數中的參數獲取接口
author : Woodhead
modification : Woodhead create 2004-12-07
************************************************************************/
#ifndef _CLI_CMDREG_INC_
#define _CLI_CMDREG_INC_
#define CT_RP_FLAG_NORMAL 0 /*命令是肯定形式*/
#define CT_RP_FLAG_NOFORM 1 /*命令是否定形式*/
/* 參數的屬性位定義 */
#define CT_PRMPROP_NULL 0x00 /* 無屬性 */
#define CT_PRMPROP_NAME 0x01 /* 需要名字 */
#define CT_PRMPROP_MUTEX 0x02 /* 多值互斥 */
#define CT_PRMPROP_INDEX 0x04 /* 索引 */
#define CT_PRMPROP_OPTIONAL 0x08 /* 可選 */
/* 值的屬性位定義,自動注冊不使用,一律為CT_VALPROP_CHECK */
#define CT_VALPROP_NULL 0x00 /* 無屬性 */
#define CT_VALPROP_OPTIONAL 0x01 /* 可選 */
#define CT_VALPROP_MUTEX 0x02 /* 互斥(多選一) */
#define CT_VALPROP_INDEX 0x04 /* 位索引 */
#define CT_VALPROP_CHECK 0x08 /* 輸入類型檢查 */
#define CT_VALPROP_DEFAULT 0x10 /* 缺省 */
#define CT_MAX_MODE_NAME 48 /* 模式名長度 */
#define CT_MAX_MODE_PROMPT 36 /* 模式提示符的長度 */
#define CT_MAX_MODE_VERB 64 /* 進入某模式命令字長度 */
#define CT_MAX_CMD_FORMAT 1000 /* 定義自動注冊的格式化串長度不能超過256 */
#define CT_MAX_OBJECT_NUM 3 /* 定義一條命令中的最多對象個數 */
#define CT_CMD_FOR_AG_M 0x01 /* AG主設備命令 */
#define CT_CMD_FOR_AG_S 0x02 /* AG從設備命令 */
#define CT_CMD_FOR_AG_I 0x04 /* AG單機板命令 */
#define CT_CMD_FOR_TG 0x10 /* TG設備命令 */
#define CT_CMD_FOR_AG_NS (0x01 | 0x04) /* AG主與單機板 */
#define CT_CMD_FOR_AG_ST (CT_CMD_FOR_AG_M | CT_CMD_FOR_AG_S) /* AG堆疊設備 */
#define CT_CMD_FOR_AGI_TG (CT_CMD_FOR_AG_I | CT_CMD_FOR_TG) /* 非堆疊設備 */
#define CT_CMD_FOR_AG (0x01 | 0x02 | 0x04) /* AG設備命令 */
#define CT_CMD_FOR_AGN_TG (CT_CMD_FOR_AG_NS | CT_CMD_FOR_TG) /* 只有AG從沒有的命令*/
#define CT_CMD_FOR_ALL 0xff /* 通用命令 */
/* 語法分析的當前元素類型定義 */
enum ElemType
{
OBJECT,
PARAMETER,
VALUE
};
/* 自動注冊的內部使用的錯誤碼定義 */
enum AutoReg_ErrNo
{
TOKEN_GET_ONLYSPACE = 0, /* 只獲取到空格符號 */
TOKEN_GET_GROUPBEGIN, /* 參數組開始 */
TOKEN_GET_MUTEXBEGIN, /* 互斥組開始 */
TOKEN_GET_GROUPEND, /* 參數組結束 */
TOKEN_GET_MUTEXEND, /* 互斥組結束 */
TOKEN_GET_OPTIONBGIN , /* 可選組開始 */
TOKEN_GET_OPTIONEND , /* 可選組結束 */
TOKEN_GET_PROPBEGIN, /* 參數值屬性開始 */
TOKEN_GET_PROPEND, /* 參數值屬性結束 */
TOKEN_GET_VALBEGIN, /* 參數值開始 */
TOKEN_GET_VALEND, /* 參數值結束 */
TOKEN_GET_MUTEXLINE, /* 互斥分隔符 */
TOKEN_GET_SPACEEND, /* 空格分隔符 */
TOKEN_GET_DEFAULT, /* 缺省分隔符 */
TOKEN_GET_LASTOBJ, /* 最后一個對象 */
TOKEN_GET_CMDNULL /* 取空 */
};
/* -------------------------------- 宏操作定義 ------------------------------ */
/* 判斷兩個對象是否同名 */
#define CT_IS_SAME_OBJECT(p1,p2) ( strcmp((p1)->szName,(p2)->szName) == 0 )
#define CI_IS_BIG_OBJECT(p1,p2) ( strcmp((p1)->szName,(p2)->szName) > 0 )
/* -------------------------------- 結構、類描述定義 ------------------------------ */
/* 注意涉及到通信和偏移地址計算的表定義,要求進行pack */
/*------------------------------------*/
/* 【1】參數值的定義開始 */
/*------------------------------------*/
typedef struct CT_VALUETYPE_S
{
_U8 ucAttrib; /* 參數值屬性 */
_U8 ucDataType; /* 參數值類型 */
_U8 ucDataLen; /* 參數值長度(針對字符串而言)*/
_U8 ucIndex; /* 保留 */
}CT_VALUETYPE_T;
typedef CT_VALUETYPE_T *CT_VALUETYPE_P;
/* 為關鍵字定義的數據結構 {{*/
typedef struct CT_KEYWORD_S
{
_S8 *pK; /* Pointer to a Keyword String */
struct CT_KEYWORD_S *pPrevious; /* Link Pointer Previous Keyword */
struct CT_KEYWORD_S *pNext; /* Link Pointer Next Keyword */
}CT_SERIAL_WORD_T,*CT_SERIAL_WORD_P;
typedef struct CT_KEYWORDS_S
{
_U32 ulNumber; /* Number of Keywords of this Value */
CT_SERIAL_WORD_P pKeyword; /* Link Pointer to First Discrete */
}CT_KEYWORDS_T;
/* }}*/
/* 自定義的參數值檢查函數*/
typedef _U32 (*CT_USERCHECK_FUNC_T)(_S8 *szValue,_S8 *szShow, CT_WS_P pWS);
typedef struct CT_VALUE_S
{
_S8 *szName; /* 參數值名 */
CT_VALUETYPE_T valueType; /* 參數值類型 */
CT_KEYWORDS_T keywords; /* 多選一關鍵字列表 */
_S32 s32IntFilter[2]; /* 參數數值的上下限 */
struct CT_VALUE_S *pPrevious; /* 參數值前驅 */
struct CT_VALUE_S *pNext; /* 參數值的后繼 */
_U32 ulAbsoluteIndex; /* 絕對位置索引 */
_S8 *szDefault; /* 參數值的缺省值 */
CT_USERCHECK_FUNC_T pCheckFunc; /* 用戶提供的檢查函數 */
}CT_VALUE_T;
typedef CT_VALUE_T *CT_VALUE_P;
/* 參數值鏈表的定義 */
typedef struct CT_VALUELINK_S
{
_U32 ulNumber; /* Total number of Values in the Link */
CT_VALUE_P pValue; /* Head Pointer to the Value Link */
}CT_VALUEGROUP_T;
typedef CT_VALUEGROUP_T *CT_VALUEGROUP_P;
/*用戶自定義參數值類型*/
#define CT_MAX_USERTYPES ((_U32)CT_DATA_BOTTOM - (_U32)CT_DATA_USER)
typedef _U32 (*CT_TYPECHECK_FUNC_T) (_S8 *szValue,_S8 *szShow,CT_WS_P pWS);
typedef struct CT_USERTYPE_S
{
_U8 ucTypeID; /* 數據類型 */
_S8 szTypeName[24]; /* 數據類型名字 */
CT_TYPECHECK_FUNC_T pCheckFunc; /* 檢查函數 */
} CT_USERTYPE_T;
/*------------------------------------*/
/* 【1】參數值的定義結束 */
/*------------------------------------*/
/*------------------------------------*/
/* 【2】參數定義開始 */
/*------------------------------------*/
typedef struct CT_PARAMTYPE_S
{
_U8 ucAttrib; /* Bit Attributes */
_S8 reserved1; /* Reserved */
_S8 reserved2; /* Data Length */
_U8 ucIndex; /* Index of Position*/
}CT_PARAMTYPE_T;
typedef CT_PARAMTYPE_T *CT_PARAMTYPE_P;
typedef struct CT_PARAMETER_S
{
_S8 *szName; /* 參數名 */
CT_PARAMTYPE_T paramType; /* 參數類型 */
_U8 ucAttrib; /* 參數屬性 */
struct CT_PARAMETER_S *subParam; /* 第一個子參數的指針*/
struct CT_PARAMETER_S *pPrevious; /* 參數的前驅 */
struct CT_PARAMETER_S *pNext; /* 參數的后繼 */
struct CT_PARAMETER_S *pParent; /* 父參數指針 */
_U32 ulAbsoluteIndex; /* 絕對索引 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -