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

📄 cli_log.inc

📁 命令行在嵌入式系统的实现
💻 INC
字号:
/************************************************************************
Copyright 200X - 200X+1.

filename     : Cli_Log.inc

description  : 日志记录的私有头文件.

author       : Woodhead

modification : Woodhead    create              2004-12-07
************************************************************************/

#ifndef _CLI_LOG_INC__
#define _CLI_LOG_INC__

#define LOG_MAX_NUM             g_us_CFG_LOG_MAX_NUM
#define LOG_SAVE_MAGIC          0x6B6BB6B6

/* 日志表的记录结构 */
typedef struct  tag_ST_LOG_ITEM
{
    _U16  usLogCrc;                    /* 日志项校验*/
    _S16  sReserve;                    /* 保留字 */
    _S8   szUserName[USERNAME_LEN];    /* 用户帐号 */
    _U32  ulLevel;                     /* 用户权限级别, CLI_OPERAT_LEVEL_T */
    _U32  ulLogMode;                   /* 用户登录方式, EN_USER_LOG_MODE */
    _U32  ulClientIp;                  /* IP address */
    _U32  ulLogDate;                   /* 日志记录日期 */
    _U32  ulLogTime;                   /* 日志记录时间 */
    _S8   szCommand[MT_LOG_CMD_LEN];   /* 用户执行命令 */
    #if LOG_SAVE_FLASH
    _U32  ulUseFlag;
    #endif
}ST_LOG_ITEM, *P_ST_LOG_ITEM;

/* 日志表的控制头 */
typedef struct  tag_ST_LOG_TBL_CTRL
{
    _U16    usCtrlCrc;              /* 控制头的校验和, 从下一个字节开始计算 */
    _U16    usRsv1;                 /* 保留 */

    _U32    ulMagic;                /* 魔术字 */

    _U16    usLogMaxNum;            /* 日志表的最大数目, 等于LOG_MAX_NUM.
                                       参与CRC校验, 否则, LOG_MAX_NUM改变后, 可能出现CRC校验OK的情况 */
    _U16    usLogCount;             /* 日志表的有效计数, <= LOG_MAX_NUM */
    _U16    usLogHead;              /* 日志表的头索引(时间最前), < LOG_MAX_NUM */
    _U16    usLogTail;              /* 日志表的尾索引(时间最后), < LOG_MAX_NUM */
}ST_LOG_TBL_CTRL;

/*
    根据用户权限记录的日志索引映射表的控制结构.
    所有映射表的表数目为CT_AL_NULL.
    每张表的表项的最大数目为LOG_MAX_NUM, 表项的内容为日志表的索引(大小为_U16).
*/
typedef struct  tag_ST_LOG_INDEX_MAP_CTRL
{
    _U16    usMapCount;             /* 映射表的有效计数, <= LOG_MAX_NUM */
    _U16    usMapHead;              /* 映射表的头索引(时间最前), < LOG_MAX_NUM */
    _U16    usMapTail;              /* 映射表的尾索引(时间最后), < LOG_MAX_NUM */
    _U16    usRsv;                  /* 保留 */
}ST_LOG_INDEX_MAP_CTRL;

extern ST_LOG_TBL_CTRL             *m_pstLogTblCtrl;
extern ST_LOG_INDEX_MAP_CTRL        m_astLogIndexMapCtrl[CT_AL_NULL];
extern _U16                        *m_ausLogMapIndexTable[CT_AL_NULL];

_U32    CLI_LogInit(_VOID);
_U32    CLI_LogTableInit( _VOID );
_U32    CLI_LogItemCheck(P_ST_LOG_ITEM pLogItem);
_U32    CLI_LogTableCtlrCheck( _VOID );
_U32    CLI_LogTableCheck( _VOID );
_U32    CLI_LogMapReset( _VOID );
_U32    CLI_LogMapCheck( _VOID );

P_ST_LOG_ITEM CLI_GetOneLog(_U16 ulIndex);
_U32    CLI_DisplayOneLog(P_ST_LOG_ITEM pLogItem);
_U32    CLI_DisplayAllLog(_VOID);
_VOID   CLI_CmdRecord ( PTerm_Data_S pTermStruct );

#endif

⌨️ 快捷键说明

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