📄 cli_cmdreg.inc
字号:
CT_VALUEGROUP_T valueList; /* 参数值列表 */
}CT_PARAMETER_T;
typedef CT_PARAMETER_T *CT_PARAMETER_P;
/*参数链表结构定义*/
typedef struct CT_PARAMLINK_S
{
_U32 ulNumber; /* Total number of Parameters in the Link */
CT_PARAMETER_P pParam; /* Head Pointer to the Parameter Link */
}CT_PARAMLINK_T;
typedef CT_PARAMLINK_T *CT_PARAMGROUP_P;
/*------------------------------------*/
/* 【2】参数定义结束 */
/*------------------------------------*/
/*------------------------------------*/
/* 【3】对象的结构定义开始 */
/*------------------------------------*/
/* 命令执行操作的属性结构*/
typedef struct CT_ACTION_S
{
_U32 ulMode; /* 命令操作模式 */
CLI_OPERAT_LEVEL_T rightLevel; /* 命令操作权限 */
CLI_CALLBACK_EXEC_FUN pLocFun; /* 如果涉及到堆叠命令,需要要先使用设备定位函数*/
CLI_CALLBACK_EXEC_FUN pFunction; /* 命令的执行函数地址 */
_U32 ulHelpID; /* 帮助信息ID */
CT_MODE_CHANGE_T modeConv; /* 模式转换方式 */
CT_PARAMGROUP_P pParamLink; /* 操作参数链 */
}CT_ACTION_T;
typedef struct CT_OBJECT_S
{
_S8 *szName; /* 对象名 */
_U32 ulObjectCount; /* 子对象个数 */
struct CT_OBJECT_S *pSubObject; /* 第一个子对象的指针 */
struct CT_OBJECT_S *pPrevious; /* 对象的前驱 */
struct CT_OBJECT_S *pNext; /* 对象的后继 */
struct CT_OBJECT_S *pParent; /* 父对象指针 */
CT_ACTION_T action; /* 对象的操作属性结构 */
CT_ACTION_T noAction; /* 对象的no操作属性结构 */
_U32 ulNoFlag; /* 对象是否有否定形式 */
}CT_OBJECT_T;
typedef CT_OBJECT_T *CT_OBJECT_P;
/*------------------------------------*/
/* 【3】对象的结构定义结束 */
/*------------------------------------*/
/*------------------------------------*/
/* 【4】命令模式定义开始 */
/*------------------------------------*/
typedef struct CT_MODE_S
{
_U32 ulMode; /* Mode Identifier */
_S8 szModeName[CT_MAX_MODE_NAME]; /* Mode name (for display) */
_S8 szModePrompt[CT_MAX_MODE_PROMPT];/* Mode prompt string */
_S8 szModeVerb[CT_MAX_MODE_VERB]; /* Mode Verb */
CLI_OPERAT_LEVEL_T rightLevel; /* Mode Right Level */
_U32 ulParent; /* Parent Mode Id */
CT_OBJECT_P pObject; /* Mode Object (setted in runtime) */
_U32 ulHierarchy; /* Mode Hierarchy */
_U32 ulParamCount; /* Number of Parameters of this */
/* Mode command */
}CT_MODE_T;
/*------------------------------------*/
/* 【4】命令模式定义结束 */
/*------------------------------------*/
/*------------------------------------*/
/*【5】自动注册定义开始 */
/*------------------------------------*/
/* 语法分析过程变量结构定义*/
typedef struct PointStack
{
CT_PARAMGROUP_P pParamLink;
CT_PARAMETER_P pParam;
CT_VALUE_P pValue;
_U8 CurType; //该域为临时使用,确定无用之后可以删去
_U8 Number;
_U8 ucMaxIndex;
_U8 ucMutexIndex;
struct PointStack *pPre;
}POINTSTACK_S;
/*------------------------------------*/
/*【5】自动注册定义结束 */
/*------------------------------------*/
/* -------------------------------- 对外接口函数外部引用 ------------------------------ */
POINTSTACK_S *CT_NewPointStack(_VOID);
_U32 CT_IsCmdValid(_S8 *szCmd);
CT_OBJECT_P CT_GetSubObjByName(CT_OBJECT_P pObject, _S8 *szName);
CT_PARAMETER_P CT_AutoCreatParam(POINTSTACK_S *pPointStack, _S8 *szName, _U8 *ucStat);
CT_VALUE_P CT_AutoCreatVal(POINTSTACK_S *pPointStack, _S8 *szName, _U8 *ucStat, _S8 *szType);
_U32 CT_GetObj(_S8 * pCurPos, _S8 * szObj);
CT_PARAMGROUP_P CT_CreatGroup(_S8 *szParmGroup);
_U32 CT_GetRegistToken(_S8 *szSrc, _S8 *szDst);
_VOID CT_SetProperty(_U8 *ucState, _U8 usProp);
_VOID CT_ClearProp(_U8 *ucState, _U8 usProp);
_S8 *CT_GetEndSignal(_S8 *pCurPos);
_VOID CT_GetValType(_S8 *szSrc, _U8 *ucType, _S32 *piLow,
_S32 *piHigh, _S32 *piStrLen);
_U32 CLI_GetRangeStr(_S8 *szSrc, _S8 *szLow, _S8 *szHigh);
_U32 CT_CheckForValue(CT_VALUE_P pValue, _S8 *szToken);
_VOID CT_InitSysModes(_VOID);
_VOID CT_InitUserType(_VOID);
_U32 CT_InitCmdTree(_VOID);
_U32 CT_FreeKeyword( CT_SERIAL_WORD_P pKeyword );
_U32 CT_FreeValue( CT_VALUE_P pValue);
_U32 CT_FreeParameter( CT_PARAMETER_P pParam );
_U32 CT_FreeParamlink( CT_PARAMGROUP_P pParamLink );
_U32 CT_FreeObject( CT_OBJECT_P pObject );
CT_OBJECT_P CT_NewObject( _VOID );
CT_PARAMGROUP_P CT_NewParamlink( _VOID );
CT_PARAMETER_P CT_NewParameter( _VOID );
CT_VALUEGROUP_P CT_NewValuelink( _VOID );
CT_VALUE_P CT_NewValue( _VOID );
CT_SERIAL_WORD_P CT_NewKeyword( _VOID );
CT_SERIAL_WORD_P CT_NewKeywords( _S8 *szKeys, _U32 *ulCount );
CT_OBJECT_P CT_CreateObject( const _S8 *szName, _U32 ulMode,
CLI_OPERAT_LEVEL_T level, CLI_CALLBACK_EXEC_FUN pFunc,
_BOOL bChangeMode, CT_MODE_CHANGE_T modeConv,
CLI_CALLBACK_EXEC_FUN pNoFunc);
CT_PARAMETER_P CT_CreateParameter( _S8 *szName, _U8 ucTypeAttrib,
_U8 ucIndex, _U32 ulIndex);
CT_VALUE_P CT_CreateValue(_S8 *szName, _U8 ucDataType,
_U8 ucDataLen, _S8 *szKeys,
_S32 iLow, _S32 iHigh,
_U32 ulIndex);
CT_VALUE_P CT_CreateValueWithCheck(_S8 *szName,
_U8 ucAttrib, _U8 ucDataType, _U8 ucDataLen,
_S8 *szKeys, _S32 iLow, _S32 iHigh,
_U32 ulIndex, CT_USERCHECK_FUNC_T pFunc);
_U32 CT_SetMode(_U32 ulMode, const _S8 *szName, const _S8 *szPrompt,
const _S8 *s8Verb, CLI_OPERAT_LEVEL_T level,
_U32 ulParentMode, CT_OBJECT_P pObject);
_U32 CT_RegMode( CT_MODE_T *pMode );
_U32 CT_RegModeObject( _U32 ulMode,
CT_OBJECT_P pObject,
_U32 ulParamCount );
_U32 CT_RegModeObjectExt( _U32 ulMode, CT_OBJECT_P pObject,
_U32 ulParamCount, CLI_CALLBACK_EXEC_FUN pFunc);
_U32 CT_RegObjToMode( _U32 ulMode, CT_OBJECT_P pObject );
_U32 CT_RegObject( CT_OBJECT_P pParent, CT_OBJECT_P pObject );
_U32 CT_RegCmdHelp( CT_OBJECT_P pObject, _U32 ulHelpInfoID);
_U32 CT_RegParamlink( CT_OBJECT_P pObject,
_U32 ulFlag, CT_PARAMGROUP_P pParamLink );
_U32 CT_RegParamToLink( CT_PARAMGROUP_P pParamLink,
CT_PARAMETER_P pNewParam );
_U32 CT_RegValueToParam( CT_PARAMETER_P pParam, CT_VALUE_P pValue );
_U32 CT_RegisterUserType( _U32 *ulID,_S8 *szName,CT_TYPECHECK_FUNC_T pFunc );
_U32 CT_RegModes(_VOID);
_U32 CT_RegModeCmd(_VOID);
_U32 CLI_GlobalCmdLink(_VOID);
extern _U32 CI_ResetEnviroment( CT_WS_P pWS );
extern _U32 CI_BrotherParameterOptional( CT_PARAMETER_P *ppParam );
extern _U32 CI_BrotherValueOptional( CT_VALUE_P *ppValue );
extern _S8 * CI_GetParameter( _U32 ulIndex, CT_WS_P pWS );
extern _S8 *CI_GetCurrentPrompt( CT_WS_P pWS );
extern CT_WS_P CI_NewEnviroment( _VOID );
extern CT_MODE_T *CI_GetMode( _U32 ulMode );
extern _S8 *CI_GetModePrompt( _U32 ulMode );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -