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; }
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; }