⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cli_cmdreg.inc

📁 命令行在嵌入式系统的实现
💻 INC
📖 第 1 页 / 共 2 页
字号:
    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 + -