VOS_VOID GTTF_MNTN_ErrlogTbfAbnmlEvt(VOS_UINT32 ulPid, VOS_UINT16 usType) { TTF_MNTN_ERR_LOG_GRLC_TBF_ABNML_STRU stTbfAbnml; VOS_UINT8 ucAlmLev; MODEM_ID_ENUM_UINT16 enModemId; ucAlmLev = TTF_ERR_LOG_GET_ALM_LEV(TTF_ERR_LOG_ALM_ID_GPRS_TBF_ABNML); enModemId = VOS_GetModemIDFromPid(ulPid); if (MODEM_ID_BUTT <= enModemId) { TTF_LOG1(ulPid, 0, PS_PRINT_ERROR, "GTTF_MNTN_ErrlogTbfAbnmlEvt: Invalid ModemId ", enModemId); return; } if (!TTF_ERR_LOG_NEED_RPT_LEV(enModemId, ucAlmLev)) { return; } TTF_ERR_LOG_FILL_HEADER( &stTbfAbnml.stHeader, enModemId, TTF_ERR_LOG_ALM_ID_GPRS_TBF_ABNML, ucAlmLev, (sizeof(TTF_MNTN_ERR_LOG_GRLC_TBF_ABNML_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU))); stTbfAbnml.usAbnmlType = (VOS_UINT16)usType; TTF_MNTN_ErrlogBufPut(ulPid, (VOS_CHAR *)&stTbfAbnml, sizeof(TTF_MNTN_ERR_LOG_GRLC_TBF_ABNML_STRU)); }
VOS_VOID WTTF_MNTN_ErrlogTfciFailEvt(VOS_UINT8 ucMacState, TTF_MNTN_ERR_LOG_TFC_ERR_NO_CHOICE_ENUM8 enType) { VOS_UINT8 ucAlmLev; WTTF_MNTN_TFCI_FAIL_STRU stTtfMNtnTfciFail; MODEM_ID_ENUM_UINT16 enModemId; ucAlmLev = TTF_ERR_LOG_GET_ALM_LEV(TTF_ERR_LOG_ALM_ID_WRLC_TFCI_FAIL); enModemId = VOS_GetModemIDFromPid(WUEPS_PID_RLC); if (!TTF_ERR_LOG_NEED_RPT_LEV(enModemId, ucAlmLev)) { return; } TTF_ERR_LOG_FILL_HEADER( &stTtfMNtnTfciFail.stHeader, enModemId, TTF_ERR_LOG_ALM_ID_WRLC_TFCI_FAIL, ucAlmLev, (sizeof(WTTF_MNTN_TFCI_FAIL_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU))); stTtfMNtnTfciFail.ucMacState = ucMacState; stTtfMNtnTfciFail.enType = enType; /* 异常事件写入缓存中 */ TTF_MNTN_ErrlogBufPut(WUEPS_PID_MAC, (VOS_CHAR *)&stTtfMNtnTfciFail, sizeof(WTTF_MNTN_TFCI_FAIL_STRU)); return; }
VOS_VOID WTTF_MNTN_ErrlogRlcResetEvt(VOS_UINT8 ucRbId, TTF_MNTN_ERR_LOG_WRLC_RESET_TYPE_ENUM_UINT8 enResetType) { TTF_MNTN_ERR_LOG_WRLC_RESET_STRU stTtfMntnWrlcReset; VOS_UINT8 ucAlmLev; MODEM_ID_ENUM_UINT16 enModemId; ucAlmLev = TTF_ERR_LOG_GET_ALM_LEV(TTF_ERR_LOG_ALM_ID_WRLC_RESET); enModemId = VOS_GetModemIDFromPid(WUEPS_PID_RLC); if (!TTF_ERR_LOG_NEED_RPT_LEV(enModemId, ucAlmLev)) { return; } TTF_ERR_LOG_FILL_HEADER( &stTtfMntnWrlcReset.stHeader, enModemId, TTF_ERR_LOG_ALM_ID_WRLC_RESET, ucAlmLev, (sizeof(TTF_MNTN_ERR_LOG_WRLC_RESET_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU))); stTtfMntnWrlcReset.ucRbId = ucRbId; stTtfMntnWrlcReset.enResetType = enResetType; stTtfMntnWrlcReset.usResetCnt = 1; /* 生成Reset事件 */ TTF_MNTN_ErrlogBufPut(WUEPS_PID_RLC, (VOS_CHAR *)&stTtfMntnWrlcReset, sizeof(TTF_MNTN_ERR_LOG_WRLC_RESET_STRU)); }
VOS_VOID GTTF_MNTN_ErrlogMdlErrEvt(VOS_UINT32 ulPid, VOS_VOID *pMdlErr) { TTF_MNTN_ERR_LOG_GDL_MDL_ERR_STRU stMdlErrEvt; VOS_UINT8 ucAlmLev; MODEM_ID_ENUM_UINT16 enModemId; if (VOS_NULL_PTR == pMdlErr) { return; } ucAlmLev = TTF_ERR_LOG_GET_ALM_LEV(TTF_ERR_LOG_ALM_ID_GSM_MDL_ERR); enModemId = VOS_GetModemIDFromPid(ulPid); if (!TTF_ERR_LOG_NEED_RPT_LEV(enModemId, ucAlmLev)) { return; } TTF_ERR_LOG_FILL_HEADER( &stMdlErrEvt.stHeader, enModemId, TTF_ERR_LOG_ALM_ID_GSM_MDL_ERR, ucAlmLev, (sizeof(TTF_MNTN_ERR_LOG_GDL_MDL_ERR_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU))); PS_MEM_CPY(&stMdlErrEvt.stDlMdlErrInfo, pMdlErr, sizeof(TTF_MNTN_GDL_MDL_ERR_INFO_STRU)); TTF_MNTN_ErrlogBufPut(ulPid, (VOS_CHAR *)&stMdlErrEvt, sizeof(TTF_MNTN_ERR_LOG_GDL_MDL_ERR_STRU)); }
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; }
VOS_VOID WTTF_MNTN_ErrlogRlcLiErrEvt(VOS_UINT8 ucRbId, TTF_MNTN_ERR_LOG_LI_ERR_TYPE_ENUM8 enLiErrType) { VOS_UINT8 ucAlmLev; MODEM_ID_ENUM_UINT16 enModemId; if (ucRbId > UTRAN_MAX_RB_ID) { PS_LOG1(WUEPS_PID_RLC, 0, PS_PRINT_WARNING, "WTTF_MNTN_ErrlogRlcLiErrEvt, ucRbId exceed the range.", ucRbId); return; } /* check need th record the Li error number */ ucAlmLev = TTF_ERR_LOG_GET_ALM_LEV(TTF_ERR_LOG_ALM_ID_WRLC_LI_ERR); enModemId = VOS_GetModemIDFromPid(WUEPS_PID_RLC); if (!TTF_ERR_LOG_NEED_RPT_LEV(enModemId, ucAlmLev)) { return; } if (0 == g_stErrLogLiErrCtx.ucLiErrRbCnt) { /* register the Li error callback function */ TTF_MNTN_ErrlogCbReg(WUEPS_PID_RLC, WTTF_MNTN_ErrlogFlushRlcErrEvt); } if (0 == g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.ulLiErrCnt) { /* if ucLiErrRbCnt is full,but the rb is avaible, the g_stErrLogLiErrCtx is fail */ if (g_stErrLogLiErrCtx.ucLiErrRbCnt >= UTRAN_MAX_RB_NUM) { PS_MEM_SET(&g_stErrLogLiErrCtx, 0 ,sizeof(TTF_MNTN_ERR_LOG_WRLC_LI_ERR_CTX_STRU)); PS_LOG1(WUEPS_PID_RLC, 0, PS_PRINT_WARNING, "WTTF_MNTN_ErrlogRlcLiErrEvt, g_stErrLogLiErrCtx.ucLiErrRbCnt exceed the range.", g_stErrLogLiErrCtx.ucLiErrRbCnt); return; } g_stErrLogLiErrCtx.aucLiErrRbs[g_stErrLogLiErrCtx.ucLiErrRbCnt] = ucRbId; g_stErrLogLiErrCtx.ucLiErrRbCnt ++; TTF_ERR_LOG_FILL_HEADER( &g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stHeader, enModemId, TTF_ERR_LOG_ALM_ID_WRLC_LI_ERR, ucAlmLev, (sizeof(TTF_MNTN_ERR_LOG_WRLC_LI_ERR_STRU) - sizeof(OM_ERR_LOG_HEADER_STRU))); g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.ulLstUpdtTs = 0; g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.ulLiErrCnt = 1; g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.ucRbId = ucRbId; TTF_ERR_LOG_ENT_UPDT_BUF_RSV_LEN(VOS_GetModemIDFromPid(WUEPS_PID_RLC), sizeof(TTF_MNTN_ERR_LOG_WRLC_LI_ERR_STRU)); } else { g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.ulLstUpdtTs = VOS_GetSlice(); g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.ulLiErrCnt ++; } g_stErrLogLiErrCtx.astWrlcLiErrInfo[ucRbId].stLiErrInfo.enType = enLiErrType; return; }