📄 cli_debug.c
字号:
pModulename = CT_GetParamByName("module", ulTermID);
if (!EOS_StriCmp(pModulename, "all"))
{
for (i = 0; g_st_CFG_ModuleStatDisp[i].szModuleName[0] != '\0'; i++)
{
if (g_st_CFG_ModuleStatDisp[i].pClearFile != G_NULL)
{
IO_PrintToTerm(ulTermID, PUB_STRING_OUT, "\r\n\r\n ==== CLEAR STATISTIC OF MODULE : ");
IO_PrintToTerm(ulTermID, PUB_STRING_OUT, g_st_CFG_ModuleStatDisp[i].szModuleName);
g_st_CFG_ModuleStatDisp[i].pClearFile();
}
}
return G_SUCCESS;
}
for (i = 0; g_st_CFG_ModuleStatDisp[i].szModuleName[0] != '\0'; i++)
{
if (!EOS_StriCmp(g_st_CFG_ModuleStatDisp[i].szModuleName, pModulename))
{
if (g_st_CFG_ModuleStatDisp[i].pClearFile != G_NULL)
{
IO_PrintToTerm(ulTermID, PUB_STRING_OUT, "\r\n\r\n ==== CLEAR STATISTIC OF MODULE : ");
IO_PrintToTerm(ulTermID, PUB_STRING_OUT, g_st_CFG_ModuleStatDisp[i].szModuleName);
g_st_CFG_ModuleStatDisp[i].pClearFile();
}
else
{
IO_PrintToTerm(ulTermID, PUB_STRING_OUT, "\r\n There is no clear statistic function of module " );
IO_PrintToTerm(ulTermID, PUB_STRING_OUT, g_st_CFG_ModuleStatDisp[i].szModuleName );
}
return G_SUCCESS;
}
}
return G_FAILURE;
}
/*---------- MML终端接收透传命令字的模拟命令 -----------*/
/*------------------------------------------------------*/
_U32 CLI_MmlCmdTest(_U32 ulTermID)
{
_S8 *pParam[8];
_U32 i;
_S8 szParam[80];
(_VOID)ulTermID;
m_TDTable[1].pTermStruct->szRecvBuf[0] = 0;
for (i = 0; i < 8; i ++)
{
EOS_Sprintf(szParam, "cmd-string%d", i+1);
pParam[i] = CT_GetParamByName(szParam, ulTermID);
if (pParam[i] != G_NULL)
{
EOS_StrCat(m_TDTable[1].pTermStruct->szRecvBuf, pParam[i]);
EOS_StrCat(m_TDTable[1].pTermStruct->szRecvBuf, " ");
}
else
break;
}
EOS_StrCat(m_TDTable[1].pTermStruct->szRecvBuf, "\r\n");
m_TDTable[1].pTermStruct->iRecvLen = (_S32)EOS_StrLen(m_TDTable[1].pTermStruct->szRecvBuf);
return G_SUCCESS;
}
_U32 CLI_MsTestGet(_U32 ulTermID)
{
CT_SetDeviceID(ulTermID, 1);
return G_SUCCESS;
}
_U32 CLI_MsTestExec(_U32 ulTermID)
{
_S8 *pParam;
_U32 i;
pParam = CT_GetParamByName("type", ulTermID);
if (!EOS_StriCmp("normal", pParam))
{
IO_Print(CLI_MONITOR_ENABLE);
IO_OutString("kkkkkkk");
}
else if (!EOS_StriCmp("long-resp",pParam))
{
for (i = 0; i < 20; i++)
{
IO_Print(CLI_MONITOR_ENABLE);
CLI_DELAY(100);
}
}
else
{
IO_Print(CLI_MONITOR_ENABLE);
CLI_DELAY(2500);
IO_Print(CLI_MONITOR_ENABLE);
}
return G_SUCCESS;
}
_U32 CLI_ShowTermData(_U32 ulTermID)
{
_U32 i, ulRet;
_U32 ulFromTermId, ulToTermId;
PTerm_Data_S pTermStruct;
_S8 *pszTermId,szInfo[2048], szIp[32];
/* 输入指针的合法性判断 */
if( !CLI_IS_TERMID_VALIDE(ulTermID))
{
DBG_ASSERT(0);
return G_FAILURE;
}
pszTermId = CT_GetParamByName( (_S8 *)"term-id", ulTermID );
if( G_NULL == pszTermId )
{
DBG_ASSERT(0);
return G_FAILURE;
}
/* 获取终端ID */
if( 0 == EOS_StrCmp( pszTermId, "all") )
{
ulFromTermId = 1;
ulToTermId = m_ulCliMaxTermNum;
}
else
{
ulRet = EOS_atou( pszTermId, &ulFromTermId );
if( G_SUCCESS != ulRet )
{
DBG_ASSERT(0);
return G_FAILURE;
}
/* 终端ID的合法性检查 */
if( m_ulCliMaxTermNum < ulFromTermId )
{
DBG_ASSERT(0);
IO_OutString("Input Term Id is too large !");
return G_FAILURE;
}
ulToTermId = ulFromTermId;
}
for( i = ulFromTermId; i <= ulToTermId; i ++ )
{
pTermStruct = m_TDTable[i - 1].pTermStruct;
if( (pTermStruct->iSocket >= 0) || (pTermStruct->iSocket == SOCKET_FOR_WEB) )
{
EOS_IPAddrToStr( pTermStruct->ulClientIP, szIp );
}
else
{
EOS_StrCpy( szIp, "---" );
}
EOS_Sprintf(szInfo,
"\r\n\r\n ============================================"
"\r\n Term ID %ld"
"\r\n Term Data address 0x%lx"
"\r\n socket %ld"
"\r\n ulClientIP %s(0x%lx)"
"\r\n username %s"
"\r\n ulTimeLeft %ld"
"\r\n ucTermStatus %ld"
"\r\n ucUserLevel %ld"
"\r\n -------------------------------------"
"\r\n pWS data address 0x%lx",
i,
(_U32)pTermStruct,
pTermStruct->iSocket,
szIp, pTermStruct->ulClientIP,
pTermStruct->szCurUserName,
pTermStruct->ulTimeLeft,
pTermStruct->ucTermStatus,
pTermStruct->ucUserLevel,
(_U32)pTermStruct->pWS
);
IO_OutString(szInfo);
if( i <= m_ulCliMaxOnlineUser )
{
DBG_ASSERT( G_NULL != pTermStruct->pWS );
EOS_Sprintf(szInfo,
"\r\n szCmd %s"
"\r\n ulLevel %ld"
"\r\n ulStatus %ld",
pTermStruct->pWS->szCmdString,
pTermStruct->pWS->ulLevel,
pTermStruct->pWS->ulStatus
);
IO_OutString(szInfo);
}
}
return G_SUCCESS;
}
/*-----------------------------------------------------------------------------
函数名称 : CLI_LogSend
功能 : 日志调试, 发送(写)日志
-----------------------------------------------------------------------------*/
_U32 CLI_LogSend( _U32 ulTermID )
{
_U32 i, ulRet;
_U32 ulUserLevel, ulFrom, ulTo;
_S8 *pszInputUserLevel;
_S8 szLogInfo[64];
/* !!!!!! 字符串的次序必须保证和枚举CLI_OPERAT_LEVEL_T严格一致 */
const _S8 *szUserLevel[CT_AL_NULL + 1] =
{
"query",
"operator",
"admin",
"super",
"debug",
"all"
};
const _S8 *szUserName[CT_AL_NULL] =
{
"log_query",
"log_operator",
"log_admin",
"log_super",
"log_debug"
};
szUserName[CT_AL_SUPER] = g_csz_CFG_CLI_SUPER_USER_NAME;
szUserName[CT_AL_DEBUG] = g_csz_CFG_CLI_DBG_USER_NAME;
/* 输入变量的合法性判断 */
if( !CLI_IS_TERMID_VALIDE(ulTermID) )
{
DBG_ASSERT(0);
return G_FAILURE;
}
/* 获取输入参数 */
pszInputUserLevel = CT_GetParamByName("user-level", ulTermID);
if( G_NULL == pszInputUserLevel )
{
DBG_ASSERT(0);
return G_FAILURE;
}
ulRet = CT_GetUlongByName( "from", ulTermID, &ulFrom );
if( G_SUCCESS != ulRet )
{
DBG_ASSERT(0);
return G_FAILURE;
}
ulRet = CT_GetUlongByName( "to", ulTermID, &ulTo );
if( G_SUCCESS != ulRet )
{
DBG_ASSERT(0);
return G_FAILURE;
}
/* 参数范围的合法性检查 */
for( i = 0; i <= CT_AL_NULL ; i ++ )
{
if( 0 == EOS_StriCmp( pszInputUserLevel, szUserLevel[i] ) )
{
break;
}
}
if( i > CT_AL_NULL )
{
DBG_ASSERT(0);
return G_FAILURE;
}
else
{
ulUserLevel = i;
}
if( ulFrom > ulTo )
{
(_VOID)IO_OutString( G_STR_HEAD"Input ulFrom > ulTo . Must be From <= to !" );
return G_FAILURE;
}
DBG_Out( PID_CLI, EN_DBG_OUT_CHN_31, G_STR_HEAD"szUserLevel[%ld] -> %s : [%ld, %ld] ",
ulUserLevel, szUserLevel[ulUserLevel], ulFrom, ulTo );
/* 特定的用户级别写日志 */
if( CT_AL_NULL != ulUserLevel )
{
/* 创建临时用户 */
if( CT_AL_ADMIN >= ulUserLevel )
{
(_VOID)CLI_AddTermUser( szUserName[ulUserLevel],
szUserName[ulUserLevel],
(_U8)ulUserLevel,
USER_FOR_CLI,
ML_ENG );
}
for( i = ulFrom; i <= ulTo; i ++ )
{
EOS_Sprintf( szLogInfo, "log_%03ld", i );
(_VOID)CLI_SaveUserLog( szUserName[ulUserLevel],
LOG_MODE_SERIAL,
0,
szLogInfo );
}
/* 删除临时用户 */
if( CT_AL_ADMIN >= ulUserLevel )
{
(_VOID)CLI_DelTermUser( szUserName[ulUserLevel] );
}
}
/* 所有级别用户交叉写日志 */
else
{
/* 创建临时用户 */
for( ulUserLevel = CT_AL_QUERY; ulUserLevel <= CT_AL_ADMIN; ulUserLevel ++ )
{
(_VOID)CLI_AddTermUser( szUserName[ulUserLevel],
szUserName[ulUserLevel],
(_U8)ulUserLevel,
USER_FOR_CLI,
ML_ENG );
}
for( ulUserLevel = 0, i = ulFrom; i <= ulTo; i ++ )
{
EOS_Sprintf( szLogInfo, "log_%03ld", i );
(_VOID )CLI_SaveUserLog( szUserName[ulUserLevel],
LOG_MODE_SERIAL,
0,
szLogInfo );
ulUserLevel = ( ulUserLevel + 1 ) % CT_AL_NULL;
}
/* 删除临时用户 */
for( ulUserLevel = CT_AL_QUERY; ulUserLevel <= CT_AL_ADMIN; ulUserLevel ++ )
{
(_VOID)CLI_DelTermUser( szUserName[ulUserLevel] );
}
}
return G_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -