Ejemplo n.º 1
0
/*****************************************************************************
 函 数 名  : Log_Init
 功能描述  : 打印初始化
 输入参数  : VOS_VOID
 输出参数  : 无
 返 回 值  : VOS_VOID
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2007年4月24日
    作    者   : 李霄 46160
    修改内容   : 新生成函数

*****************************************************************************/
VOS_VOID Log_Init(VOS_VOID)
{
    OM_PORT_CFG_STRU    stPortCfg;

    g_stLogEnt.ulPrintSwitch = LOG_FALSE;

    if (VOS_OK != VOS_SmMCreate("LOG_MSem", VOS_SEMA4_PRIOR | VOS_SEMA4_INVERSION_SAFE, &g_logBuffSem))
    {
        vos_printf("Log: Error, semMCreate Fail");
        return ;
    }


    if (VOS_OK != VOS_SmCCreate("LOG_CSem", 0, VOS_SEMA4_FIFO, &(g_stLogEnt.semOmPrint)))
    {
        VOS_SmDelete(g_logBuffSem);
        vos_printf("Log: Error, semCCreate Fail");
        return ;
    }

    g_stLogEnt.rngOmRbufId = OM_RingBufferCreate(LOG_BUF_VOLUMN);
    if (LOG_NULL_PTR == g_stLogEnt.rngOmRbufId)
    {
        VOS_SmDelete(g_logBuffSem);
        VOS_SmDelete(g_stLogEnt.semOmPrint);
        vos_printf("Log: Error, rngCreate Fail");
        return;
    }

    /* 从NV项中读出LOG的输出方式和文件支持的最大大小 */
    if(NV_OK != NV_Read(en_NV_Item_Om_PsLog_Port,
                                &stPortCfg,
                                sizeof(OM_PORT_CFG_STRU)))
    {
        vos_printf("Log_InitFile: NV_Read fail, NV Id :%d\n", en_NV_Item_Om_PsLog_Port);
        stPortCfg.ulMaxFileSize = 0;
    }
    else
    {
        /*参数检测*/
        if (OM_OUTPUT_BUTT > stPortCfg.enPortType)
        {
            g_stLogEnt.ulLogOutput = stPortCfg.enPortType;
        }
    }

    g_stLogEnt.ulPrintSwitch = LOG_TRUE;

    return;
}
Ejemplo n.º 2
0
VOS_VOID NFExt_SelfTaskInit(VOS_VOID)
{
    g_stExEntity.pRingBufferId = OM_RingBufferCreate(NF_EXT_RING_BUF_SIZE);

    if ( VOS_NULL_PTR == g_stExEntity.pRingBufferId )
    {
        vos_printf("NFExt_SelfTaskInit : ERROR : Create ring buffer Failed!" );

        return;
    }

    /* 初始化自处理任务的等待队列头 */
    init_waitqueue_head(&g_stExEntity.stWaitHeadTxTask);
    spin_lock_init(&g_stExEntity.stLockTxTask);
}
VOS_UINT32 SCM_SoftDecodeCfgRcvTaskInit(VOS_VOID)
{
    VOS_UINT32                              ulRslt;

    if (VOS_OK != VOS_SmCCreate("OMCF", 0, VOS_SEMA4_FIFO, &(g_stSCMDataRcvTaskCtrlInfo.SmID)))
    {
        /*lint -e534*/
        vos_printf("SCM_SoftDecodeCfgRcvTaskInit: Error, OMCFG semCCreate Fail.\n");
        /*lint +e534*/

        g_stScmSoftDecodeInfo.stRbInfo.ulSemCreatErr++;

        return VOS_ERR;
    }

    /* 注册OM配置数据接收自处理任务 */
    ulRslt = VOS_RegisterSelfTaskPrio(MSP_FID_DIAG_ACPU,
                                      (VOS_TASK_ENTRY_TYPE)SCM_SoftDecodeCfgRcvSelfTask,
                                      SCM_DATA_RCV_SELFTASK_PRIO,
                                      8096);
    if ( VOS_NULL_BYTE == ulRslt )
    {
        vos_printf("SCM_SoftDecodeCfgRcvTaskInit: VOS_RegisterSelfTaskPrio Fail.\n");
        return VOS_ERR;
    }

    /*lint -e534*/
    VOS_MemSet(&g_stScmSoftDecodeInfo, 0, sizeof(g_stScmSoftDecodeInfo));
    /*lint +e534*/

    if (VOS_OK != SCM_SoftDecodeCfgHdlcInit(&g_stScmHdlcSoftDecodeEntity))
    {
        /*lint -e534*/
        vos_printf("SCM_SoftDecodeCfgRcvTaskInit: Error, HDLC Init Fail.\n");
        /*lint +e534*/

        g_stScmSoftDecodeInfo.ulHdlcInitErr++;

        return VOS_ERR;
    }

    g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId = OM_RingBufferCreate(SCM_DATA_RCV_BUFFER_SIZE);

    if (VOS_NULL_PTR == g_stSCMDataRcvTaskCtrlInfo.rngOmRbufId)
    {
        /*lint -e534*/
        vos_printf("SCM_SoftDecodeCfgRcvTaskInit: Error, Creat OMCFG ringBuffer Fail.\n");
        /*lint +e534*/

        g_stScmSoftDecodeInfo.stRbInfo.ulRingBufferCreatErr++;

        /*lint -e534*/
        VOS_MemFree(MSP_PID_DIAG_APP_AGENT, g_stScmHdlcSoftDecodeEntity.pucDecapBuff);
        /*lint +e534*/

        return VOS_ERR;
    }

    g_stSCMDataRcvTaskCtrlInfo.pucBuffer = &g_aucSCMDataRcvBuffer[0];

    VOS_SpinLockInit(&g_stScmSoftDecodeDataRcvSpinLock);

    return VOS_OK;
}
VOS_UINT32 OM_PrintfInit(VOS_VOID)
{
    OM_PORT_CFG_STRU                    stPortCfg;
    NAS_NVIM_SYSTEM_APP_CONFIG_STRU     stAPPConfig;

    stAPPConfig.usSysAppConfigType = SYSTEM_APP_BUTT;

    if(NV_OK != NV_Read(en_NV_Item_System_APP_Config, &stAPPConfig, sizeof(NAS_NVIM_SYSTEM_APP_CONFIG_STRU)))
    {
        PS_LOG(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_AcpuSelfTaskReg:Read NV en_NV_Item_System_APP_Config fail!");
    }

    if(SYSTEM_APP_WEBUI != stAPPConfig.usSysAppConfigType)
    {
        return VOS_OK;
    }

    VOS_MemSet(&g_stOmPrintfErrRecord, 0, sizeof(OM_PRINTF_ERROR_RECORD_STRU));

    VOS_MemSet(g_astOmPrintfOutPutLev, LOG_LEVEL_OFF, OM_PRINTF_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN));

    /* 读NV项获取输出端口配置和文件大小,若失败则默认输出端口为SHELL口,
    文件大小为0表示取默认文件大小 */
    if(NV_OK != NV_Read(en_NV_Item_Om_Printf_Port, &stPortCfg, sizeof(OM_PORT_CFG_STRU)))
    {
        stPortCfg.ulMaxFileSize = 0;
    }
    else
    {
        /* 判断端口范围 */
        if (OM_OUTPUT_BUTT > stPortCfg.enPortType)
        {
            g_ulOmPrintfPort = (VOS_UINT32)stPortCfg.enPortType;
        }
    }

    /* 创建Printf BUFFER 保护信号量 */
    if(VOS_OK != VOS_SmMCreate("Pt", VOS_SEMA4_PRIOR | VOS_SEMA4_INVERSION_SAFE,
                                &g_ulOmPrintfBuffSem))
    {
        return VOS_ERR;
    }

    /*创建存储OM_Printf数据的环形缓冲区*/
    g_pstOmPrintfBufId = OM_RingBufferCreate(OM_PRINTF_BUFFER_SIZE);
    if (VOS_NULL_PTR == g_pstOmPrintfBufId)
    {
        VOS_SmDelete(g_ulOmPrintfBuffSem);
        return VOS_ERR;
    }

#if (VOS_OS_VER == VOS_LINUX)
    if (VOS_OK != OmPrintf_VFInit())
    {
        VOS_SmDelete(g_ulOmPrintfBuffSem);
        return VOS_ERR;
    }
#endif

    DRV_MSP_PROC_REG(OM_PRINTF_WITH_MODULE,     (BSP_MspProc)OM_PrintfWithModule);
    DRV_MSP_PROC_REG(OM_PRINTF,                 (BSP_MspProc)OM_Printf);
    DRV_MSP_PROC_REG(OM_PRINTF_GET_MODULE_IDLEV,(BSP_MspProc)OM_PrintfGetModuleIdLev);
    /* 模块初始化完后将全局变量置TRUE*/
    g_bIsPrintfInit = VOS_TRUE;

    return VOS_OK;
}
Ejemplo n.º 5
0
/*****************************************************************************
 函 数 名  : Log_Init
 功能描述  : 打印初始化
 输入参数  : void
 输出参数  : 无
 返 回 值  : void
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2007年4月24日
    作    者   : 李霄 46160
    修改内容   : 新生成函数

*****************************************************************************/
void Log_Init(void)
{
    OM_PORT_CFG_STRU    stPortCfg;

    g_stLogEnt.ulPrintSwitch = LOG_FALSE;

    if (VOS_OK != VOS_SmMCreate("LOG_MSem", VOS_SEMA4_PRIOR | VOS_SEMA4_INVERSION_SAFE, &g_logBuffSem))
    {
        vos_printf("Log: Error, semMCreate Fail");
        return ;
    }


    if (VOS_OK != VOS_SmCCreate("LOG_CSem", 0, VOS_SEMA4_FIFO, &(g_stLogEnt.semOmPrint)))
    {
        VOS_SmDelete(g_logBuffSem);
        vos_printf("Log: Error, semCCreate Fail");
        return ;
    }

    g_stLogEnt.rngOmRbufId = OM_RingBufferCreate(LOG_BUF_VOLUMN);
    if (LOG_NULL_PTR == g_stLogEnt.rngOmRbufId)
    {
        VOS_SmDelete(g_logBuffSem);
        VOS_SmDelete(g_stLogEnt.semOmPrint);
        vos_printf("Log: Error, rngCreate Fail");
        return;
    }

    /* 从NV项中读出LOG的输出方式和文件支持的最大大小 */
    if(NV_OK != NV_Read(en_NV_Item_Om_PsLog_Port,
                                &stPortCfg,
                                sizeof(OM_PORT_CFG_STRU)))
    {
        vos_printf("Log_InitFile: NV_Read fail, NV Id :%d\n", en_NV_Item_Om_PsLog_Port);
        stPortCfg.ulMaxFileSize = 0;
    }
    else
    {
        /*参数检测*/
        if (OM_OUTPUT_BUTT > stPortCfg.enPortType)
        {
            g_stLogEnt.ulLogOutput = (LOG_ULONG)stPortCfg.enPortType;
        }
    }

    g_stLogEnt.ulPrintSwitch = LOG_TRUE;

    /* 注册底软的回调函数,定义OM_Log...... */
#ifdef __LOG_BBIT__
    LOG_RegisterDrv((LOG_PFUN)OM_Log, (LOG_PFUN)OM_Log1, (LOG_PFUN)OM_Log2,
                     (LOG_PFUN)OM_Log3, (LOG_PFUN)OM_Log4);
#endif

#ifdef __LOG_RELEASE__
    LOG_RegisterDrv((LOG_PFUN)OM_LogId, (LOG_PFUN)OM_LogId1, (LOG_PFUN)OM_LogId2,
                    (LOG_PFUN)OM_LogId3, (LOG_PFUN)OM_LogId4);
#endif

    return;
}