📄 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 + -