예제 #1
0
VOS_UINT32 TTF_MNTN_InitErrLogEnt(VOS_UINT32 ulPid)
{
    MODEM_ID_ENUM_UINT16        enModemId;
    VOS_UINT32                  ulRslt;

    if (VOS_YES == TTF_ERR_LOG_ENT_STATE_GET())
    {
        return VOS_OK;
    }

    PS_MEM_SET(&g_stTtfMntnErrlogEnt, 0, sizeof(TTF_MNTN_ERR_LOG_ENT_STRU));
    PS_MEM_SET(apErrLogRptCb, 0, sizeof(apErrLogRptCb));

    /* 创建互斥信号量,每个Modem 1个 */
    for (enModemId = 0; enModemId < MODEM_ID_BUTT; enModemId++)
    {
        ulRslt    = VOS_SmMCreate("TFEL", VOS_SEMA4_FIFO,
                        (VOS_UINT32 *)(&TTF_ERR_LOG_ENT_SEM_GET(enModemId)));

        if (VOS_OK != ulRslt)
        {
            PS_LOG2(ulPid, 0, PS_PRINT_ERROR,
                "TTF_MNTN_InitErrLogEnt: Create TTF_ERR_LOG_ENT_SEM<1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt);

            return ulRslt;
        }


        /* 读NV项获取当前上报状态 */
        ulRslt = NV_ReadEx(enModemId, en_NV_Item_ErrLogCtrlInfo,
                   &g_stTtfMntnErrlogEnt.stCtrlInfo[enModemId],
                   sizeof(NV_ID_ERR_LOG_CTRL_INFO_STRU));

        if (VOS_OK != ulRslt)
        {
            PS_LOG1(ulPid, 0, PS_PRINT_ERROR,
                "TTF_MNTN_InitErrLogEnt: NV_Read fail!",  (VOS_INT32)ulRslt);

            TTF_ERR_LOG_ENT_CTRL_STATUS_SET(enModemId, OM_APP_STATUS_CLOSE);
        }

        TTF_MNTN_InitErrlogBuffer(enModemId);
    }

    PS_MEM_SET(&g_stErrLogLiErrCtx, 0, sizeof(TTF_MNTN_ERR_LOG_WRLC_LI_ERR_CTX_STRU));

    TTF_ERR_LOG_ENT_STATE_SET(VOS_YES);

    return VOS_OK;
}
예제 #2
0
VOS_UINT32 TTF_MNTN_ErrLogRcvCtrlInd(MsgBlock *pstMsg, void *p)
{
    OM_ERROR_LOG_CTRL_IND_STRU *pstCtrlInd;
    MODEM_ID_ENUM_UINT16        enModemId;

    pstCtrlInd = (OM_ERROR_LOG_CTRL_IND_STRU *)pstMsg;

    enModemId = VOS_GetModemIDFromPid(pstCtrlInd->ulReceiverPid);

    TTF_ERR_LOG_ENT_CTRL_STATUS_SET(enModemId, pstCtrlInd->ucAlmStatus);
    TTF_ERR_LOG_ENT_CTRL_LEV_SET(enModemId, pstCtrlInd->ucAlmLevel);

    return VOS_OK;
}
VOS_UINT32 TTF_MNTN_ErrLogRcvCtrlInd(MsgBlock *pstMsg, void *p)
{
    OM_ERROR_LOG_CTRL_IND_STRU *pstCtrlInd;
    MODEM_ID_ENUM_UINT16        enModemId;

    pstCtrlInd = (OM_ERROR_LOG_CTRL_IND_STRU *)pstMsg;

    enModemId = (MODEM_ID_ENUM_UINT16)VOS_GetModemIDFromPid(pstCtrlInd->ulReceiverPid);

    if (MODEM_ID_BUTT <= enModemId)
    {
        TTF_LOG1(WUEPS_PID_RLC, 0, PS_PRINT_ERROR,
            "TTF_MNTN_ErrLogRcvCtrlInd: Invalid ModemId ", enModemId);

        return VOS_ERR;
    }

    TTF_ERR_LOG_ENT_CTRL_STATUS_SET(enModemId, pstCtrlInd->ucAlmStatus);
    TTF_ERR_LOG_ENT_CTRL_LEV_SET(enModemId, pstCtrlInd->ucAlmLevel);

    return VOS_OK;
}
VOS_UINT32 TTF_MNTN_InitErrLogEnt(VOS_UINT32 ulPid)
{
    VOS_UINT32                  ulRslt;
    VOS_UINT32                  ulTtfCommInfoBufLen;
    MODEM_ID_ENUM_UINT16        enModemId = VOS_GetModemIDFromPid(ulPid);

    if (MODEM_ID_BUTT <= enModemId)
    {
        enModemId = MODEM_ID_0;
    }

    if (VOS_YES == TTF_ERR_LOG_ENT_STATE_GET(enModemId))
    {
        return VOS_OK;
    }

    PS_MEM_SET(apErrLogRptCb, 0, sizeof(apErrLogRptCb));

    if (TTF_MEMCTRL_MODEL_SUPPORT_YES == TTF_MEM_GET_SUPPORT_WCDMA(enModemId))
    {
        /* 初始化WCDMA基本配置信息结构体 */
        ulTtfCommInfoBufLen =   sizeof(TTF_MNTN_WCDMA_COMM_INFO_STRU);

        TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId) = (TTF_MNTN_WCDMA_COMM_INFO_STRU *)PS_ALLOC_STATIC_MEM(ulPid, ulTtfCommInfoBufLen);
        if (VOS_NULL_PTR == TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId))
        {
                TTF_LOG1(ulPid, 0, PS_PRINT_ERROR,
                    "TTF_MNTN_InitErrLogEnt: PS_ALLOC_STATIC_MEM fail!", enModemId);

            return VOS_ERR;
        }

        PS_MEM_SET(TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId), 0, sizeof(TTF_MNTN_WCDMA_COMM_INFO_STRU));

        TTF_ERR_LOG_FILL_HEADER(
            &(TTF_ERR_LOG_ENT_WCDMA_COMM_INFO_GET(enModemId)->stHeader),
            enModemId,
            TTF_ERR_LOG_ALM_ID_WCDMA_COMM_INFO,
            TTF_ERR_LOG_ALM_LEV_CRITICAL,
            (sizeof(TTF_MNTN_WCDMA_COMM_INFO_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU)));
    }

    if (TTF_MEMCTRL_MODEL_SUPPORT_YES == TTF_MEM_GET_SUPPORT_GSM(enModemId))
    {
        /* 初始化GSM基本配置信息结构体 */
        ulTtfCommInfoBufLen =   sizeof(TTF_MNTN_GSM_COMM_INFO_STRU);

        TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId) = (TTF_MNTN_GSM_COMM_INFO_STRU *)PS_ALLOC_STATIC_MEM(ulPid, ulTtfCommInfoBufLen);
        if (VOS_NULL_PTR == TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId))
        {
                TTF_LOG1(ulPid, 0, PS_PRINT_ERROR,
                    "TTF_MNTN_InitErrLogEnt: PS_ALLOC_STATIC_MEM fail!", enModemId);

            return VOS_ERR;
        }

        PS_MEM_SET(TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId), 0, sizeof(TTF_MNTN_GSM_COMM_INFO_STRU));

        TTF_ERR_LOG_FILL_HEADER(
            &(TTF_ERR_LOG_ENT_GSM_COMM_INFO_GET(enModemId)->stHeader),
            enModemId,
            TTF_ERR_LOG_ALM_ID_GSM_COMM_INFO,
            TTF_ERR_LOG_ALM_LEV_CRITICAL,
            (sizeof(TTF_MNTN_GSM_COMM_INFO_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU)));
    }

    /* 创建互斥信号量,每个Modem 1个 */
    ulRslt    = VOS_SmMCreate("TFEL", VOS_SEMA4_FIFO,
                    (VOS_SEM *)(&TTF_ERR_LOG_ENT_SEM_GET(enModemId)));

    if (VOS_OK != ulRslt)
    {
            TTF_LOG2(ulPid, 0, PS_PRINT_ERROR,
            "TTF_MNTN_InitErrLogEnt: Create TTF_ERR_LOG_ENT_SEM<1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt);

        return ulRslt;
    }

    /* 读NV项获取当前上报状态 */
    ulRslt = NV_ReadEx(enModemId, en_NV_Item_ErrLogCtrlInfo,
               &g_stTtfMntnErrlogEnt.stCtrlInfo[enModemId],
               sizeof(NV_ID_ERR_LOG_CTRL_INFO_STRU));

    if (VOS_OK != ulRslt)
    {
            TTF_LOG1(ulPid, 0, PS_PRINT_ERROR,
            "TTF_MNTN_InitErrLogEnt: NV_ReadEx fail!",  (VOS_INT32)ulRslt);

        TTF_ERR_LOG_ENT_CTRL_STATUS_SET(enModemId, OM_APP_STATUS_CLOSE);
    }

    TTF_MNTN_InitErrlogBuffer(enModemId);

    TTF_ERR_LOG_ENT_STATE_SET(enModemId, VOS_YES);

    return VOS_OK;
}