?? cli_init.c
字號:
}
/*==================================================================*/
/* 函數名 :CLI_DBInit */
/* 函數功能 主機名初始化 */
/*==================================================================*/
_U32 CLI_DBInit( _VOID )
{
#if CLI_DBASE_SUPPORT
_U32 ulRet;
HostName_S sHostName;
/* 是否包含RDB模塊 */
if( G_YES != g_ul_INCLUDE_MODULE_CLI_RDB )
{
return G_SUCCESS;
}
/* 函數指針是否注冊 */
if( ( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectQuery )
|| ( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectInsert )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
if (G_SUCCESS != g_pfn_CFG_CLI_RDB_RecordDirectQuery(m_ulCliUserHandle,
m_usHostNameTable, 0, G_FALSE, &sHostName))
{
EOS_StrCpy(m_szHostName, " ");
EOS_StrCpy(sHostName.szHostName, " ");
ulRet = g_pfn_CFG_CLI_RDB_RecordDirectInsert(m_ulCliUserHandle, m_usHostNameTable, 0, &sHostName);
if( ulRet != G_SUCCESS )
{
MT_ERRLOG(ulRet);
return G_FAILURE;
}
}
else
{
EOS_StrNCpy(m_szHostName, sHostName.szHostName, (HOSTNAME_LENGTH - 1) );
m_szHostName[HOSTNAME_LENGTH - 1] = '\0';
}
if( G_NULL != g_pfn_CFG_CLI_AclDBInit )
{
ulRet = g_pfn_CFG_CLI_AclDBInit();
if( ulRet != G_SUCCESS )
{
MT_ERRLOG(ulRet);
return G_FAILURE;
}
}
#else
EOS_StrCpy(m_szHostName, " ");
#endif
return G_SUCCESS;
}
/*********************************************************************/
/* 函數名稱 : CLI_TasksCreat () */
/* 函數功能 : 命令行模塊的任務創建 */
/* 輸入參數 : */
/* 輸出參數 : */
/* 返回 : */
/* 上層函數 : */
/* 創建者 : */
/* 修改記錄 : */
/*********************************************************************/
_U32 CLI_TasksCreat(_VOID)
{
_U32 ulRet;
_U32 ulArg[2] = {0, 0};
_U32 ulTaskID;
/*串口終端*/
ulRet = ROS_SelfTaskCreate(PID_CLI, "CLI_TASK_SERIAL",
EN_ROS_TASK_PRIORITY_NORMAL,
ROS_TASK_STACK_SIZE_DEFAULT,
ulArg, CLI_SerialTask, &ulTaskID);
CLI_ASSURE_OR_FAIL(ulRet == G_SUCCESS);
/* telnet服務器任務創建 */
#if CLI_TELNET_SUPPORT
if( G_YES == g_ul_INCLUDE_SUB_MODULE_CLI_TELNET )
{
if( G_NULL != g_pfn_CFG_CLI_TelnetTasksCreat )
{
ulRet = g_pfn_CFG_CLI_TelnetTasksCreat();
CLI_ASSURE_OR_FAIL(ulRet == G_SUCCESS);
}
else
{
CLI_ASSURE_OR_FAIL(0);
}
}
#endif
ulRet = ROS_SelfTaskCreate( PID_CLI, "CLI_TASK_ASYNIO",
EN_ROS_TASK_PRIORITY_NORMAL,
ROS_TASK_STACK_SIZE_DEFAULT,
ulArg, IO_AsynDispTask, &ulTaskID);
CLI_ASSURE_OR_FAIL(ulRet == G_SUCCESS);
return G_SUCCESS;
}
/*********************************************************************/
/* 函數名稱 : CLI_ProcessInit() */
/* 函數功能 : 模塊分段初始化函數 */
/* 輸入參數 : */
/* 輸出參數 : */
/* 返回 : */
/* 上層函數 : */
/* 創建者 : */
/* 修改記錄 : */
/*********************************************************************/
_U32 CLI_ProcessInit(EN_PROCESS_INIT_PHASE ulPeriod)
{
_U32 ulRet = G_SUCCESS;
switch (ulPeriod)
{
case EN_PROCESS_INIT_PHASE_1:
/* 日志表項的初始化 */
ulRet = CLI_LogInit();
/* 用戶表初始化 */
ulRet += CLI_UserTableInit();
ulRet += CLI_DBInit();
/* 模式結構初始化 */
CT_InitSysModes();
memset( &m_ulCliStat[0], 0, sizeof(m_ulCliStat));
break;
case EN_PROCESS_INIT_PHASE_2:
/* 終端任務表初始化*/
ulRet += CLI_TDTableInit();
/* 命令行任務創建 */
if (CLI_TasksCreat() != G_SUCCESS)
{
return G_FAILURE;
}
/* 注冊命令模式與模式對象 */
ulRet += CT_InitCmdTree();
break;
case EN_PROCESS_INIT_PHASE_3:
/* 命令注冊 */
if( G_NULL != g_pfn_CFG_MT_RegCmdHub )
{
ulRet += g_pfn_CFG_MT_RegCmdHub();
}
if( G_NULL != g_pfn_CFG_MT_RegCmdDiag )
{
ulRet += g_pfn_CFG_MT_RegCmdDiag();
}
/* 用戶信息初始化 */
ulRet += CLI_LoadTermUser();
break;
case EN_PROCESS_INIT_PHASE_4:
break;
case EN_PROCESS_INIT_PHASE_5:
break;
case EN_PROCESS_INIT_PHASE_6:
break;
case EN_PROCESS_INIT_PHASE_7:
/* 將全局命令鏈接到所有模式 */
ulRet += CLI_GlobalCmdLink();
/* 創建并啟動秒定時 */
if(G_SUCCESS != ROS_TimerRelCreate(&m_CliSecTimer))
{
DBG_Out(PID_CLI, CLI_DBGOUT_ERR,
"\r\n CLI: Second timer creat failed!");
return G_FAILURE;
}
ulRet += ROS_TimerRelStart(m_CliSecTimer, EN_TIMER_MODE_PERIOD,
EOS_GetTicksPerSecond(), 0, 0);
break;
default:
DBG_Out(PID_CLI, MT_DBGOUT_ERR, "\r\n CLI::Init phase error!");
break;
}
if (ulRet == G_SUCCESS)
{
return G_SUCCESS;
}
MT_ERRLOG(ulPeriod);
DBG_Out(PID_CLI, CLI_DBGOUT_ERR,
"\r\n !!! CLI: module initial failed! ulPeriod = %ld", ulPeriod);
return G_FAILURE;
}
/*********************************************************************/
/* 函數名稱 : CLI_GetHostName() */
/* 函數功能 : 對外提供的主機名獲取函數 */
/* 輸入參數 : */
/* 輸出參數 : */
/* 返回 : 主機名字符串 */
/*********************************************************************/
const _S8 *CLI_GetHostName(_VOID)
{
return m_szHostName;
}
/*********************************************************************/
/* 函數名稱 : CLI_SetHostName() */
/* 函數功能 : 對外提供的設置主機名的函數 */
/* 輸入參數 : */
/* 輸出參數 : */
/* 返回 : 成功/失敗 */
/*********************************************************************/
_U32 CLI_SetHostName(const _S8 szNewHostName[])
{
HostName_S sHostName;
/* 入口指針的合法性檢查 */
if( G_NULL == szNewHostName )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 新的主機名長度的合法性檢查 */
if( EOS_StrLen(szNewHostName) >= HOSTNAME_LENGTH )
{
MT_ERRLOG(0);
return G_FAILURE;
}
EOS_StrCpy( m_szHostName, szNewHostName );
#if CLI_DBASE_SUPPORT
/* 是否包含RDB模塊 */
if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
{
/* 函數指針是否注冊 */
if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectUpdate )
{
MT_ERRLOG(0);
return G_FAILURE;
}
EOS_StrCpy (sHostName.szHostName, szNewHostName);
(_VOID)g_pfn_CFG_CLI_RDB_RecordDirectUpdate(m_ulCliUserHandle, m_usHostNameTable, 0, &sHostName);
}
#endif
return G_SUCCESS;
}
/*********************************************************************/
/* 函數名稱 : CLI_IsTermBusy() */
/* 函數功能 : 終端是否忙 */
/* 輸入參數 : */
/* 輸出參數 : */
/* 返回 : */
/*********************************************************************/
_BOOL CLI_IsTermBusy(_U32 ulTermID)
{
PTerm_Data_S pTermStruct;
pTermStruct = m_TDTable[ulTermID - 1].pTermStruct;
if (pTermStruct->ucTermStatus > TERM_LOGED)
return G_TRUE;
return G_FALSE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -