VOS_UINT32 OM_AcpuWriteNv(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { APP_OM_WRITE_NV_STRU *pstAppOmWriteNv; VOS_UINT16 *pusAppToOmPara; VOS_UINT32 ulCount; VOS_UINT32 ulIndex; VOS_UINT16 usNvId; VOS_UINT16 usNvLen; VOS_UINT32 ulResult; pstAppOmWriteNv = (APP_OM_WRITE_NV_STRU*)(pstAppToOmMsg->aucPara); /*Get the number of all NV Id.*/ ulCount = pstAppOmWriteNv->ulCount; pusAppToOmPara = (VOS_UINT16*)(pstAppOmWriteNv->ausNvItemData); /*Write the NV content by NV Id.*/ for (ulIndex = 0; ulIndex < ulCount; ulIndex++) { usNvId = *pusAppToOmPara; pusAppToOmPara++; usNvLen = *pusAppToOmPara; pusAppToOmPara++; /*判断此NV项是否需要进行鉴权*/ if (VOS_YES != OM_IsAcpuAuthNv(usNvId)) { OM_AcpuSendResultChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, OM_NEED_AUTH, usReturnPrimId); PS_LOG1(WUEPS_PID_OM, 0, PS_PRINT_WARNING, "OM_AcpuWriteNv:OM_IsAcpuAuthNv, NV id:", (VOS_INT32)usNvId); return VOS_ERR; } ulResult = NV_WriteEx(OM_GET_FUNCID_MODEMINFO(pstAppToOmMsg->ucFuncType), usNvId, pusAppToOmPara, (VOS_UINT32)usNvLen); if(NV_OK != ulResult) { //ulResult &= 0x0000FFFF; NV_GET_RETURN(ulResult, usNvId); OM_AcpuSendResultChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, ulResult, usReturnPrimId); PS_LOG1(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_AcpuWriteNv:NV_Write, NV id:", (VOS_INT32)usNvId); return VOS_ERR; } /*由于返回的usNvLen以byte为单位,所以需要除以指针指向类型的大小*/ pusAppToOmPara += (usNvLen/sizeof(VOS_UINT16)); } OM_AcpuSendResultChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, NV_OK, usReturnPrimId); return VOS_OK; }
VOS_VOID TTF_MNTN_ErrlogCbReg(VOS_UINT32 ulPid, TTF_MNTN_ERR_LOG_RPT_CB pErrlogCb) { TTF_MODULE_ID_ENUM_UINT8 enModuleId; MODEM_ID_ENUM_UINT16 enModemId; enModuleId = TTF_MNTN_ErrLogGetModuleId(ulPid); if (MODULE_ID_BUTT <= enModuleId) { return; } enModemId = VOS_GetModemIDFromPid(ulPid); if (enModemId >= MODEM_ID_BUTT) { PS_LOG1(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogCbReg: Invalid ModemId ", enModemId); return; } TTF_ERR_LOG_RPT_CB_SET(enModemId, enModuleId, pErrlogCb); }
TTF_NODE_ST* TTF_LinkRemoveTail(VOS_UINT32 ulPid, TTF_LINK_ST * pLink) { TTF_NODE_ST *pNode; if (VOS_NULL_PTR == pLink) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pLink is Null!"); return VOS_NULL_PTR; } if (0 == pLink->ulCnt) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pLink Cnt is 0!"); return VOS_NULL_PTR; } /*异常:链表和链表个数不一致时, 容错处理*/ if ( pLink->stHead.pNext == &pLink->stHead ) { PS_LOG1(ulPid, 0, PS_PRINT_WARNING, "Warning: pLink is null, but Cnt is <1>!", (VOS_INT32)pLink->ulCnt); pLink->ulCnt = 0; return VOS_NULL_PTR; } pNode = pLink->stHead.pPrev; pLink->stHead.pPrev = pNode->pPrev; pNode->pPrev->pNext = &pLink->stHead; pNode->pNext = VOS_NULL_PTR; pNode->pPrev = VOS_NULL_PTR; pLink->ulCnt--; return pNode; } /* TTF_LinkRemoveTail */
/******************************************************************************* Module: SMS_ReportN2MOtaMsg Function: 在trace中勾取SMS的空口消息 Input: NAS_MSG_STRU* pNasMsg SMS空口消息 NOTE: Return: VOS_VOID History: 1. 鲁琳 2009.07.11 新规作成 *******************************************************************************/ VOS_VOID SMS_ReportN2MOtaMsg(NAS_MSG_STRU *pNasMsg) { NAS_OTA_MSG_ID_ENUM_UINT16 usNasOtaMsyId = NAS_OTA_MSG_ID_BUTT; PS_LOG1(WUEPS_PID_SMS, VOS_NULL, PS_PRINT_NORMAL, "SMS_ReportN2MOtaMsg:NORMAL: msg type is ", pNasMsg->aucNasMsg[1]); switch(pNasMsg->aucNasMsg[1]) { case SMC_DATA_TYPE_CP_DATA: usNasOtaMsyId = NAS_OTA_MSG_SMS_DATA_TYPE_CP_DATA_DOWN; break; case SMC_DATA_TYPE_CP_ACK: usNasOtaMsyId = NAS_OTA_MSG_SMS_DATA_TYPE_CP_ACK_DOWN; break; case SMC_DATA_TYPE_CP_ERR: usNasOtaMsyId = NAS_OTA_MSG_SMS_DATA_TYPE_CP_ERROR_DOWN; break; default: PS_LOG(WUEPS_PID_SMS, VOS_NULL, PS_PRINT_WARNING, "SMS_ReportN2MOtaMsg:WARNING: invalid msg id"); /*不属于SMS的空口消息,不在trace中显示*/ return; } NAS_SendAirMsgToOM(WUEPS_PID_SMS, usNasOtaMsyId, NAS_OTA_DIRECTION_DOWN, pNasMsg->ulNasMsgSize + 4, (VOS_UINT8*)pNasMsg); }
/*********************************************************************** * MODULE : Mm_Event_Analy_From_RRCF * FUNCTION : Mm_Event_Analy函数降复杂度: 来自RRCF的消息处理 * INPUT : VOS_VOID * OUTPUT : VOS_VOID * RETURN : VOS_UINT8 ucEventID * NOTE : * HISTORY : 1. 欧阳飞 2009.06.11 新版作成 ************************************************************************/ VOS_UINT8 Mm_Event_Analy_From_RRCF(MSG_HEADER_STRU* pMsgHeader) { VOS_UINT8 ucEventID = MM_EVENT_ID_INVALID; switch ( pMsgHeader->ulMsgName ) { case RRMM_PAGING_IND: ucEventID = NAS_MM_RcvCspagingInd_PreProc((struct MsgCB*)pMsgHeader); break; case RRMM_EST_CNF: ucEventID = 32; break; case RRMM_REL_IND: ucEventID = 33; break; case RRMM_SECURITY_IND: ucEventID = 34; break; case RRMM_SYNC_IND: ucEventID = 35; break; case RRMM_DATA_IND: ucEventID = Mm_ComMsgChkProc((RRMM_DATA_IND_FOR_PCLINT_STRU*)pMsgHeader); break; default: PS_LOG1(WUEPS_PID_MM, VOS_NULL, PS_PRINT_WARNING, "Mm_Event_Analy_From_RRCF:WARNING: Msg name from RRC is Error", (VOS_INT32)pMsgHeader->ulMsgName); break; } return ucEventID; }
VOS_VOID TTF_MNTN_ErrlogBufGet(VOS_UINT32 ulPid, MODEM_ID_ENUM_UINT16 enModemId, VOS_CHAR *pBuffer, VOS_UINT32 ulBytes) { VOS_UINT32 ulRslt; OM_RING_ID pRingId; if (VOS_NULL_PTR == pBuffer) { PS_LOG(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufGet: pBuffer NULL PTR"); return; } if (enModemId >= MODEM_ID_BUTT) { PS_LOG1(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufGet: Invalid ModemId ", enModemId); return; } pRingId = TTF_ERR_LOG_ENT_RINGID_GET(enModemId); if (VOS_NULL_PTR == pRingId) { PS_LOG(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufGet: pRingId NULL PTR"); return; } ulRslt = VOS_SmP(TTF_ERR_LOG_ENT_SEM_GET(enModemId), TTF_ERR_SEM_TIMEOUT_LEN); if(VOS_OK != ulRslt) { PS_LOG2(ulPid, 0, PS_PRINT_WARNING, "TTF_MNTN_ErrlogBufGet: VOS_SmP <1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt); return; } ulRslt = (VOS_UINT32)OM_RingBufferGet(pRingId, pBuffer, (VOS_INT)ulBytes); if (ulRslt != ulBytes) { OM_RingBufferFlush(pRingId); PS_LOG2(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufGet: ERROR OM_RingBufferGet fail!", (VOS_INT32)ulRslt, (VOS_INT32)ulBytes); } VOS_SmV(TTF_ERR_LOG_ENT_SEM_GET(enModemId)); }
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; }
TTF_NODE_ST* TTF_LinkSafeRemoveHead(VOS_UINT32 ulPid, TTF_LINK_ST * pLink, VOS_UINT32 *pulRemainCnt) { TTF_NODE_ST *pNode; VOS_ULONG ulLockLevel = 0UL; VOS_SpinLockIntLock(&g_stTtfLinkSpinLock, ulLockLevel); *pulRemainCnt = 0; if (VOS_NULL_PTR == pLink) { VOS_SpinUnlockIntUnlock(&g_stTtfLinkSpinLock, ulLockLevel); PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pLink is Null!"); return VOS_NULL_PTR; } if (0 == pLink->ulCnt) { VOS_SpinUnlockIntUnlock(&g_stTtfLinkSpinLock, ulLockLevel); PS_LOG(ulPid, 0, PS_PRINT_INFO, "Warning: pLink Cnt is 0!"); return VOS_NULL_PTR; } /*异常:链表和链表个数不一致时, 容错处理*/ if ( pLink->stHead.pNext == &pLink->stHead ) { pLink->ulCnt = 0; VOS_SpinUnlockIntUnlock(&g_stTtfLinkSpinLock, ulLockLevel); PS_LOG1(ulPid, 0, PS_PRINT_WARNING, "Warning: pLink is null, but Cnt is <1>!", (VOS_INT32)pLink->ulCnt); return VOS_NULL_PTR; } pNode = pLink->stHead.pNext; pLink->stHead.pNext = pNode->pNext; pNode->pNext->pPrev = &pLink->stHead; pNode->pNext = VOS_NULL_PTR; pNode->pPrev = VOS_NULL_PTR; pLink->ulCnt--; /* 获取队列里剩余元素个数 */ *pulRemainCnt = pLink->ulCnt; VOS_SpinUnlockIntUnlock(&g_stTtfLinkSpinLock, ulLockLevel); return pNode; } /* TTF_LinkSafeRemoveHead */
VOS_UINT32 TTF_RING_Q_NodeAddrSet(VOS_UINT32 ulPid, TTF_RING_Q_ST *pstRingQ, VOS_VOID **ppNodeAddr,VOS_UINT32 ulNodeCnt) { VOS_UINT32 ulNodeNoLoop; if (VOS_NULL_PTR == pstRingQ ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pstRingQ is Null !"); return PS_FAIL; } if ( VOS_NULL_PTR == pstRingQ->ppNode ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: ppNode is Null !"); return PS_FAIL; } if ( VOS_NULL_PTR == ppNodeAddr ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: ppNodeAddr is Null !"); return PS_FAIL; } if ( 2 > ulNodeCnt) { PS_LOG1(ulPid, 0, PS_PRINT_WARNING, "Warning: ppNodeAddr ulNodeCnt<1> less than 2 !",(VOS_INT32)ulNodeCnt); return PS_FAIL; } if ( ulNodeCnt != pstRingQ->ulMaxSize ) { PS_LOG2(ulPid, 0, PS_PRINT_WARNING, "Warning: RingQ MaxSize<1> is not matched NodeCnt<2>!", (VOS_INT32)pstRingQ->ulMaxSize, (VOS_INT32)ulNodeCnt); return PS_FAIL; } for(ulNodeNoLoop = 0; ulNodeNoLoop < pstRingQ->ulMaxSize; ulNodeNoLoop ++) { pstRingQ->ppNode[ulNodeNoLoop] = ppNodeAddr[ulNodeNoLoop]; } return PS_SUCC; } /* TTF_RING_Q_NodeAddrSet */
VOS_UINT32 TTF_RING_Q_NodeAddrInit(VOS_UINT32 ulPid, TTF_RING_Q_ST *pstRingQ, VOS_VOID **ppNodeAddr,VOS_UINT32 ulNodeCnt,VOS_UINT8 ucSize) { VOS_UINT32 ulNodeLoop; if ( VOS_NULL_PTR == pstRingQ ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pstRingQ is Null !"); return PS_FAIL; } if ( VOS_NULL_PTR == pstRingQ->ppNode ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: ppNode is Null !"); return PS_FAIL; } if ( VOS_NULL_PTR == ppNodeAddr ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: ppNodeAddr is Null !"); return PS_FAIL; } if ( 2 > ulNodeCnt) { PS_LOG1(ulPid, 0, PS_PRINT_WARNING, "Warning: ppNodeAddr ulNodeCnt<1> less than 2 !",(VOS_INT32)ulNodeCnt); return PS_FAIL; } if ( ulNodeCnt != pstRingQ->ulMaxSize ) { PS_LOG2(ulPid, 0, PS_PRINT_WARNING, "Warning: RingQ MaxSize<1> is not matched NodeCnt<2>!", (VOS_INT32)pstRingQ->ulMaxSize, (VOS_INT32)ulNodeCnt); return PS_FAIL; } for (ulNodeLoop = 0; ulNodeLoop < pstRingQ->ulMaxSize; ulNodeLoop++) { /* 核间共享结点的地址 */ /* ppNodeAddr = ppNodeAddr + ulNodeLoop*ucSize; */ pstRingQ->ppNode[ulNodeLoop] = (VOS_VOID *)ppNodeAddr; ppNodeAddr = ppNodeAddr + ucSize; } return PS_SUCC; }
VOS_UINT32 TTF_RING_Q_InitAndNodeAddrSet(VOS_UINT32 ulPid, TTF_RING_Q_ST *pstRingQ, VOS_VOID **ppNode, VOS_VOID *pQueueNode, VOS_UINT32 ulBlkSize, VOS_UINT32 ulBlkCnt ) { VOS_UINT32 ulNodeNoLoop = 0; VOS_UINT8 *pucQueueNodeAddr = VOS_NULL_PTR; if (VOS_NULL_PTR == pstRingQ ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pstRingQ is Null !"); return PS_FAIL; } if ( 2 > ulBlkCnt) { PS_LOG1(ulPid, 0, PS_PRINT_WARNING, "Warning: RingQ ulMaxSize<1> less than 2 !",(VOS_INT32)ulBlkCnt); return PS_FAIL; } if(VOS_NULL_PTR == ppNode ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: RingQ Init Malloc Fail!"); return PS_FAIL; } pstRingQ->ppNode = ppNode; pstRingQ->ulFront = 0; pstRingQ->ulRear = 0; pstRingQ->ulMaxSize = ulBlkCnt; /* TTF_RING_Q_ST的ulMaxSize用来存放数据块数 */ pucQueueNodeAddr = (VOS_UINT8 *)pQueueNode; for(ulNodeNoLoop = 0; ulNodeNoLoop < pstRingQ->ulMaxSize; ulNodeNoLoop ++) { pstRingQ->ppNode[ulNodeNoLoop] = (pucQueueNodeAddr + ulBlkSize * ulNodeNoLoop); } return PS_SUCC; } /* TTF_RING_Q_InitAndNodeAddrSet */
VOS_UINT8 Mm_Event_Analy_From_GAS(MSG_HEADER_STRU* pMsgHeader) { VOS_UINT8 ucEventID = MM_EVENT_ID_INVALID; switch ( pMsgHeader->ulMsgName ) { case GRRMM_PAGING_IND: /* GAS 的呼叫指示,处理与WAS统一 */ ucEventID = NAS_MM_RcvCspagingInd_PreProc((struct MsgCB*)pMsgHeader); break; case RRMM_EST_CNF: ucEventID = 32; break; case GRRMM_EST_SAPI3_CNF: /* 建立 SAPI3 的回应信息 */ ucEventID = 83; break; case RRMM_REL_IND: ucEventID = 33; break; case GAS_RR_SYNC_IND: /* GAS 的加密指示,处理与WAS统一 */ ucEventID = 34; break; case RRMM_DATA_IND: ucEventID = Mm_ComMsgChkProc((RRMM_DATA_IND_FOR_PCLINT_STRU*)pMsgHeader); break; case RRMM_AC_INFO_CHANGE_IND: ucEventID = 74; break; case GAS_RR_CHAN_IND: ucEventID = 86; break; case RRMM_NACK_DATA_IND: NAS_MM_RcvNackMsg((RRMM_NACK_DATA_IND_STRU *)pMsgHeader); break; default: PS_LOG1(WUEPS_PID_MM, VOS_NULL, PS_PRINT_WARNING, "Mm_Event_Analy_From_GAS:WARNING: Msg name from GAS is Error", (VOS_INT32) pMsgHeader->ulMsgName); break; } return ucEventID; }
VOS_UINT32 TTF_RING_Q_Init(VOS_UINT32 ulPid, TTF_RING_Q_ST *pstRingQ, VOS_UINT32 ulMaxSize ) { VOS_VOID **ppNode; if (VOS_NULL_PTR == pstRingQ ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: pstRingQ is Null !"); return PS_FAIL; } if ( 2 > ulMaxSize) { PS_LOG1(ulPid, 0, PS_PRINT_WARNING, "Warning: RingQ ulMaxSize<1> less than 2 !",(VOS_INT32)ulMaxSize); return PS_FAIL; } #if( VOS_OS_VER == VOS_WIN32 ) ppNode = (VOS_VOID **)malloc(sizeof(VOS_VOID *) * ulMaxSize); #else ppNode = (VOS_VOID **)VOS_MemAlloc(ulPid, (STATIC_MEM_PT), (sizeof(VOS_VOID *) * ulMaxSize)); #endif if(VOS_NULL_PTR == ppNode ) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "Warning: RingQ Init Malloc Fail!"); return PS_FAIL; } pstRingQ->ppNode = ppNode; pstRingQ->ulFront = 0; pstRingQ->ulRear = 0; pstRingQ->ulMaxSize = ulMaxSize; return PS_SUCC; } /* TTF_RING_Q_Init */
VOS_VOID Aging_TestProc(VOS_VOID) { MODEM_ID_ENUM_UINT16 enModemID; VOS_UINT16 usBand; VOS_UINT16 usChannel; VOS_UINT16 usNetworkMode; VOS_UINT16 usPower; VOS_UINT16 usBandIndex; VOS_UINT16 usModType; VOS_UINT16 usSlotCnt; /*指示当前的测试项*/ usBandIndex = g_stOmAgingTestCtrl.usBandIndex; /*假如已经到达测试项末尾,则需要从头开始*/ if ((VOS_UINT32)(usBandIndex + 1) == g_pstOmAgingTestNV->ulNumber) { g_stOmAgingTestCtrl.usBandIndex = 0; } else { g_stOmAgingTestCtrl.usBandIndex = usBandIndex + 1; } enModemID = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].enModemID; usBand = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].usBand; usChannel = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].usChannel; usNetworkMode = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].usNetworkMode; usModType = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].usModType; usSlotCnt = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].usSlotCnt; if ((enModemID >= MODEM_ID_BUTT) || (usNetworkMode > VOS_RATMODE_WCDMA)) { PS_LOG2(WUEPS_PID_AGING, 0, PS_PRINT_ERROR, "Aging_TestProc:Para is error.", (VOS_INT32)enModemID, (VOS_INT32)usNetworkMode); return; } /*如果当前测试项的网络模式不同于上次,则需要重新加载物理层*/ if ((enModemID != g_stOmAgingTestCtrl.enModemID) ||(usNetworkMode != g_stOmAgingTestCtrl.usNetworkMode)) { /*停止上一次的RF发射*/ if (VOS_RATMODE_GSM == g_stOmAgingTestCtrl.usNetworkMode) { g_apstGAgingTestMsg[g_stOmAgingTestCtrl.enModemID]->enTxEnable = UPHY_OAM_AGING_TEST_OFF; (VOS_VOID)VOS_SendMsg(WUEPS_PID_AGING, g_apstGAgingTestMsg[g_stOmAgingTestCtrl.enModemID]); /*需要等待物理层的回复,1s为估计值*/ VOS_TaskDelay(1000); } else if (VOS_RATMODE_WCDMA == g_stOmAgingTestCtrl.usNetworkMode) { g_pstWAgingTestMsg->enTxOnOff = UPHY_OAM_AGING_TEST_OFF; (VOS_VOID)VOS_SendMsg(WUEPS_PID_AGING, g_pstWAgingTestMsg); /*需要等待物理层的回复,1s为估计值*/ VOS_TaskDelay(1000); } else { ;/*Just make pclint happy*/ } /*加载物理层*/ if (VOS_TRUE != SHPA_LoadPhy((VOS_RATMODE_ENUM_UINT32)usNetworkMode, enModemID, UPHY_OAM_BUSINESS_TYPE_CT)) { /*停止定时器*/ OM_STOP_AGING_TEST_TIMER(&g_hAgingTestTimer); PS_LOG(WUEPS_PID_AGING, 0, PS_PRINT_ERROR, "Aging_TestProc:SHPA_LoadPhy fail!"); return; } g_stOmAgingTestCtrl.enModemID = enModemID; g_stOmAgingTestCtrl.usNetworkMode = usNetworkMode; } usPower = g_pstOmAgingTestNV->astOmRfConfig[usBandIndex].usPower; /*根据不同的网络模式进行RF配置*/ if (VOS_RATMODE_GSM == usNetworkMode) { g_apstGAgingTestMsg[enModemID]->enTxEnable = UPHY_OAM_AGING_TEST_ON; g_apstGAgingTestMsg[enModemID]->usFreqNum = (VOS_UINT16)(usBand << OM_G_RF_BAND_SHIFT) | usChannel; g_apstGAgingTestMsg[enModemID]->usTxPower = usPower; g_apstGAgingTestMsg[enModemID]->usSlotCnt = usSlotCnt; g_apstGAgingTestMsg[enModemID]->usModType = usModType; (VOS_VOID)VOS_SendMsg(WUEPS_PID_AGING, g_apstGAgingTestMsg[enModemID]); } else if (VOS_RATMODE_WCDMA == usNetworkMode) { g_pstWAgingTestMsg->enTxOnOff = UPHY_OAM_AGING_TEST_ON; g_pstWAgingTestMsg->usTxBand = usBand; g_pstWAgingTestMsg->usTxChannel = usChannel; g_pstWAgingTestMsg->usTxPower = usPower; (VOS_VOID)VOS_SendMsg(WUEPS_PID_AGING, g_pstWAgingTestMsg); } else { PS_LOG1(WUEPS_PID_AGING, 0, PS_PRINT_WARNING, "Aging_TestProc:usNetworkMode isn't corrcet.", usNetworkMode); } return; }
VOS_VOID OM_CallBackMsgProc(MsgBlock* pMsg) { OM_REQ_PACKET_STRU *pstAppMsg; OM_REQUEST_PROCEDURE *pOmFuncProc; if (UEPS_PID_APM == pMsg->ulSenderPid) { #ifdef __LDF_FUNCTION__ if ( VOS_FALSE == pMsg->aucValue[0]) { SHPA_Ldf_Check(); VOS_ProtectionReboot(DSP_REPORT_ERROR, 0, 0, VOS_NULL_PTR, 0); } else { SHPA_Ldf_Hifi_Saving(); VOS_ProtectionReboot(HIFI_REPORT_ERROR, 0, 0, VOS_NULL_PTR, 0); } #endif return; } if ((DSP_PID_WPHY == pMsg->ulSenderPid) || (I0_DSP_PID_GPHY == pMsg->ulSenderPid) || (I1_DSP_PID_GPHY == pMsg->ulSenderPid)) { OM_DspMsgProc(pMsg); return; } if ((I0_WUEPS_PID_MMA == pMsg->ulSenderPid)||(I1_WUEPS_PID_MMA == pMsg->ulSenderPid)) { OM_MmaMsgProc(pMsg); return; } if (WUEPS_PID_OM_CALLBACK == pMsg->ulSenderPid) { OM_HsicInitMsgProc(pMsg); return; } #if(FEATURE_ON == FEATURE_PTM) if (ACPU_PID_OM == pMsg->ulSenderPid) { OM_ErrLogMsgProc(pMsg); return; } #endif if (UEPS_PID_OMRL != pMsg->ulSenderPid) { VOS_UnreserveMsg(WUEPS_PID_OM, pMsg); PS_LOG1(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_OutMsgProc: Unknown Send Pid: %d.\n", (VOS_INT32)(pMsg->ulSenderPid)); return; } pstAppMsg = (OM_REQ_PACKET_STRU*)pMsg->aucValue; /*参数检测*/ /* 高2Bit为操作modem标示 */ if ((OM_FUNCID_PART_NUM >= (pstAppMsg->ucModuleId&OM_FUNCID_VALUE_BITS)) || (OM_FUNCID_MAX_NUM < (pstAppMsg->ucModuleId&OM_FUNCID_VALUE_BITS))) { VOS_UnreserveMsg(WUEPS_PID_OM, pMsg); PS_LOG1(WUEPS_PID_OM, 0, PS_PRINT_WARNING, "OM_CallBackMsgProc:ucModuleId is overflow :", (VOS_INT32)pstAppMsg->ucModuleId); return; } pOmFuncProc = g_astOmFuncIdProcTbl[pstAppMsg->ucModuleId - 1].pOmFuncProc; pOmFuncProc(pstAppMsg, OM_SendData); VOS_UnreserveMsg(WUEPS_PID_OM, pMsg); return; }
VOS_UINT32 OM_AcpuReadNv(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { OM_APP_MSG_EX_STRU *pstOmToAppMsg; APP_OM_READ_NV_STRU *pstAppOmReadNv; OM_APP_READ_NV_STRU *pstOmAppReadNv; VOS_UINT16 *pusOmToAppPara; VOS_UINT32 ulCount; VOS_UINT32 ulIndex; VOS_UINT32 ulTotalSize = 0; VOS_UINT32 ulResult; VOS_UINT16 usNvId; VOS_UINT32 ulNvLen; pstAppOmReadNv = (APP_OM_READ_NV_STRU*)(pstAppToOmMsg->aucPara); ulCount = pstAppOmReadNv->ulCount; /*Get the total length of all NV items.*/ for (ulIndex = 0; ulIndex < ulCount; ulIndex++) { usNvId = pstAppOmReadNv->ausNvItemId[ulIndex]; ulResult = NV_GetLength(usNvId, &ulNvLen); vos_printf("OM_AcpuReadNv NV_GetLength ulResult = %x\r\n", ulResult); if (VOS_OK != ulResult) { //ulResult &= 0x0000FFFF; NV_GET_RETURN(ulResult, usNvId); OM_AcpuSendResultChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, ulResult, usReturnPrimId); PS_LOG1(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_AcpuReadNv:NV_GetLength, NV id: ",(VOS_INT32)usNvId); return ulResult; } ulTotalSize += ulNvLen; } /*Allocate the memory space.*/ ulTotalSize += OM_APP_MSG_EX_LEN + OM_READ_NV_HEAD_SIZE + (ulCount*OM_NV_ITEM_SIZE); pstOmToAppMsg = (OM_APP_MSG_EX_STRU*)VOS_AssistantMemAlloc(WUEPS_PID_OM, DYNAMIC_MEM_PT, ulTotalSize); if (VOS_NULL_PTR == pstOmToAppMsg) { OM_AcpuSendResultChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, VOS_ERR, usReturnPrimId); PS_LOG(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_AcpuReadNv:VOS_MemAlloc.\n"); return VOS_ERR; } /*Assign the return value and the count to struct's fields.*/ pstOmAppReadNv = (OM_APP_READ_NV_STRU*)(pstOmToAppMsg->aucPara); pstOmAppReadNv->ulErrorCode = VOS_OK; pstOmAppReadNv->ulCount = ulCount; pusOmToAppPara = (VOS_UINT16*)(pstOmAppReadNv->ausNVItemData); /*Read the NV content by the NV Id.*/ for(ulIndex = 0; ulIndex < ulCount; ulIndex++) { usNvId = pstAppOmReadNv->ausNvItemId[ulIndex]; NV_GetLength(usNvId, &ulNvLen); *pusOmToAppPara = usNvId; pusOmToAppPara++; *pusOmToAppPara = (VOS_UINT16)ulNvLen; pusOmToAppPara++; ulResult = NV_ReadEx(OM_GET_FUNCID_MODEMINFO(pstAppToOmMsg->ucFuncType), usNvId, pusOmToAppPara, ulNvLen); vos_printf("OM_AcpuReadNv ulResult = %x\r\n", ulResult); if (NV_OK != ulResult) { //ulResult &= 0x0000FFFF; NV_GET_RETURN(ulResult, usNvId); OM_AcpuSendResultChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, ulResult, usReturnPrimId); VOS_MemFree(WUEPS_PID_OM, pstOmToAppMsg); PS_LOG1(WUEPS_PID_OM, 0, PS_PRINT_ERROR, "OM_AcpuReadNv:NV_Read, NV id:", (VOS_INT32)usNvId); return ulResult; } pusOmToAppPara += ulNvLen/sizeof(VOS_UINT16); } pstOmToAppMsg->usLength = (VOS_UINT16)(ulTotalSize - VOS_OM_HEADER_LEN); OM_AcpuSendContentChannel(pstAppToOmMsg->ucCpuId, pstAppToOmMsg->ucFuncType, (OM_RSP_PACKET_STRU *)pstOmToAppMsg, usReturnPrimId); VOS_MemFree(WUEPS_PID_OM, pstOmToAppMsg); return VOS_OK; }
VOS_VOID TTF_MNTN_ErrlogBufPut(VOS_UINT32 ulPid, VOS_CHAR *pBuffer, VOS_UINT32 ulBytes) { MODEM_ID_ENUM_UINT16 enModemId; VOS_UINT32 ulRslt; VOS_UINT32 ulBuffFreeSize; OM_RING_ID pRingId; if (VOS_NULL_PTR == pBuffer) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "TTF_MNTN_ErrlogBufPut: pBuffer NULL PTR"); return; } enModemId = VOS_GetModemIDFromPid(ulPid); if (enModemId >= MODEM_ID_BUTT) { PS_LOG1(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufPut: Invalid ModemId ", enModemId); return; } pRingId = TTF_ERR_LOG_ENT_RINGID_GET(enModemId); if (VOS_NULL_PTR == pRingId) { PS_LOG(ulPid, 0, PS_PRINT_WARNING, "TTF_MNTN_ErrlogBufPut: pRingId NULL PTR"); return; } ulRslt = VOS_SmP(TTF_ERR_LOG_ENT_SEM_GET(enModemId), TTF_ERR_SEM_TIMEOUT_LEN); if(VOS_OK != ulRslt) { PS_LOG2(ulPid, 0, PS_PRINT_WARNING, "TTF_MNTN_ErrlogBufPut: Create TTF_ERR_LOG_ENT_SEM<1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt); return; } ulBuffFreeSize =(VOS_UINT32) OM_RingBufferFreeBytes(pRingId); /* Buffer已经不够了,就不再往里面写数据了 */ if (ulBuffFreeSize >= (ulBytes + TTF_ERR_LOG_ENT_GET_BUF_RSV_LEN(enModemId))) { ulRslt = (VOS_UINT32)OM_RingBufferPut(pRingId, pBuffer, (VOS_INT)ulBytes); if (ulBytes != ulRslt) { OM_RingBufferFlush(pRingId); PS_LOG2(ulPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufGet: ERROR OM_RingBufferPut fail!",(VOS_INT32)ulRslt, (VOS_INT32)ulBytes); } } VOS_SmV(TTF_ERR_LOG_ENT_SEM_GET(enModemId)); }
VOS_VOID TTF_MNTN_ErrlogBufRpt(VOS_UINT32 ulSenderPid, VOS_UINT32 ulReceiverPid, MODEM_ID_ENUM_UINT16 enModemId) { VOS_UINT32 ulRslt; VOS_UINT32 ulBufSize; VOS_UINT32 ulMsgLen; OM_RING_ID pRingId; VOS_UINT32 ulCpuID; OM_ERR_LOG_REPORT_CNF_STRU *pstLogRpt; if (enModemId >= MODEM_ID_BUTT) { PS_LOG1(ulSenderPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufRpt: enModemId Invalid!", enModemId); return; } ulCpuID = VOS_GET_CPU_ID(ulReceiverPid); if ( ulCpuID >= VOS_SUPPORT_CPU_NUM_MAX ) { PS_LOG1(ulSenderPid, 0, PS_PRINT_ERROR, "TTF_MNTN_ErrlogBufRpt: ulReceiverPid Invalid!", (VOS_INT32)ulReceiverPid); return; } pRingId = TTF_ERR_LOG_ENT_RINGID_GET(enModemId); /* Default没有异常 */ ulBufSize = 0; if (VOS_NULL_PTR != pRingId) { /* 保留的长度复位 */ TTF_ERR_LOG_ENT_RST_BUF_RSV_LEN(enModemId); /* 将各模块本地缓存的数据写入Buffer */ TTF_MNTN_ErrlogCbRun(enModemId); ulRslt = VOS_SmP(TTF_ERR_LOG_ENT_SEM_GET(enModemId), TTF_ERR_SEM_TIMEOUT_LEN); if(VOS_OK != ulRslt) { PS_LOG2(ulSenderPid, 0, PS_PRINT_WARNING, "TTF_MNTN_ErrlogBufRpt: VOS_SmP <1>, ulRslt<2> fail!", enModemId, (VOS_INT32)ulRslt); return; } ulBufSize = (VOS_UINT32)OM_RingBufferNBytes(pRingId); if (ulBufSize > TTF_ERR_LOG_BUF_SIZE) { OM_RingBufferFlush(pRingId); PS_LOG1(ulSenderPid, 0, PS_PRINT_WARNING, "TTF_MNTN_ErrlogBufGet: ulBufSize invalid!", (VOS_INT32)ulBufSize); ulBufSize = 0; } VOS_SmV(TTF_ERR_LOG_ENT_SEM_GET(enModemId)); } /*lint -e413*/ ulMsgLen = (TTF_OFFSET_OF(OM_ERR_LOG_REPORT_CNF_STRU, aucContent[0])) + ulBufSize; pstLogRpt = (OM_ERR_LOG_REPORT_CNF_STRU *)PS_ALLOC_MSG_WITH_HEADER_LEN(ulSenderPid, ulMsgLen); if (VOS_NULL_PTR == pstLogRpt) { return; } if (0 != ulBufSize) { TTF_MNTN_ErrlogBufGet(ulSenderPid, enModemId, (VOS_CHAR *)(pstLogRpt->aucContent), ulBufSize); } pstLogRpt->ulReceiverPid = ulReceiverPid; pstLogRpt->ulMsgName = ID_OM_ERR_LOG_REPORT_CNF; pstLogRpt->ulMsgType = OM_ERR_LOG_MSG_ERR_REPORT; pstLogRpt->ulMsgSN = VOS_GetSlice(); pstLogRpt->ulRptlen = ulBufSize; /*lint +e413*/ PS_SEND_MSG(UEPS_PID_SN, pstLogRpt); }
VOS_UINT8 Mm_Timer_Event_Analy(VOS_UINT32 *aulRcvMsg) { VOS_UINT8 ucEventId = MM_EVENT_ID_INVALID; VOS_UINT8 ucTimerId; PS_LOG1(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: TimerExpired: ", (VOS_UINT8)aulRcvMsg[1]); if (MM_TIMER_PROTECT_SUSPEND != aulRcvMsg[1]) { ucTimerId = (VOS_UINT8)aulRcvMsg[1]; if (ucTimerId >= MM_TIMER_NUM) { PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_WARNING, "Mm_Timer_Event_Analy:WARNING: TIMER ID is illegal."); return ucEventId; } if (MM_TIMER_STOP == gstMmTimer[ucTimerId].ucTimerStatus) { PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_WARNING, "Mm_Timer_Event_Analy:WARNING: The TIMER has been stopped."); if( VOS_ERRNO_RELTM_STOP_TIMERINVALID == Mm_StopRelTimer(WUEPS_PID_MM, ucTimerId, &gstMmTimer[ucTimerId].hTimer)) { /* 停止失败:已经停止或Timer不存在 */ PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_WARNING, "Mm_Timer_Event_Analy:WARNING: TIMER STOP FAILURE!"); } return ucEventId; } else { Mm_TimerStop( (VOS_UINT8)aulRcvMsg[1] ); } } NAS_TIMER_EventReport(aulRcvMsg[1], WUEPS_PID_MM, NAS_OM_EVENT_TIMER_OPERATION_EXPIRED); switch ( aulRcvMsg[1] ) { case MM_TIMER_T3210: ucEventId = 51; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3210 TIME OUT"); break; case MM_TIMER_T3211: ucEventId = 52; g_T3211Flag = 0; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3211 TIME OUT"); break; case MM_TIMER_T3212: ucEventId = 53; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3212 TIME OUT"); break; case MM_TIMER_T3213: ucEventId = 54; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3213 TIME OUT"); break; case MM_TIMER_T3214: ucEventId = 55; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3214 TIME OUT"); break; case MM_TIMER_T3216: ucEventId = 56; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3216 TIME OUT"); break; case MM_TIMER_T3218: ucEventId = 57; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3218 TIME OUT"); break; case MM_TIMER_T3220: ucEventId = 58; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3220 TIME OUT"); break; case MM_TIMER_T3230: ucEventId = 59; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3230 TIME OUT"); break; case MM_TIMER_T3240: ucEventId = 60; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM T3240 TIME OUT"); break; case MM_TIMER_PROTECT_AGENT: ucEventId = 75; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM_TIMER_PROTECT_AGENT TIME OUT"); break; case MM_TIMER_PROTECT_DETACH: ucEventId = 76; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM_TIMER_PROTECT_DETACH TIME OUT"); break; case MM_TIMER_PROTECT_SIGNALLING: ucEventId = 77; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM_TIMER_PROTECT_SIGNALLING TIME OUT"); break; case MM_TIMER_PROTECT_CC: ucEventId = 79; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM_TIMER_PROTECT_CC TIME OUT"); break; case MM_TIMER_PROTECT_CCBS: ucEventId = 82; PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_INFO, "Mm_Timer_Event_Analy:INFO: MM_TIMER_PROTECT_CCBS TIME OUT"); break; case MM_TIMER_PROTECT_SUSPEND: /* 调用保护定时器的超时处理 */ MM_SuspendTimeout(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_DELAY_LU_GSM: MM_DelayLuGsmTimeout(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_DELAY_CS_SERVICE_GSM: MM_DelayCsServiceGsmTimeout(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_WAIT_CONNECT_REL: NAS_MM_WaitConnectRelTimeOut(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_NORMAL_CSFB_HO_WAIT_SYSINFO: NAS_MM_NormalCsfbHoWaitSysinfoTimeOut(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_EMERGENCY_CSFB_HO_WAIT_SYSINFO: #if (FEATURE_ON == FEATURE_LTE) NAS_MM_EmergencyCallCsfbWaitHoSysInfoTimeOut(); #endif ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_CS_HO_WAIT_SYSINFO: NAS_MM_CsHoWaitSysinfoTimeOut(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_MODE_I_CS_PS_POWER_OFF_PROTECT: NAS_MM_ModeICsPsPowerOffProtectTimeOut(); break; case MM_TIMER_PROTECT_CS_DETACH: NAS_MM_RcvMmTimerProtectCsDetachExpired(); ucEventId = MM_EVENT_ID_INVALID; break; case MM_TIMER_WAIT_GET_HO_SECU_INFO_CNF: #if (FEATURE_ON == FEATURE_LTE) NAS_MM_RcvMmTimerGetHoSecuInfoCnfExpired(); #endif break; case MM_TIMER_PROTECT_LAU_CSMT_FLG: NAS_MM_RcvProtectingLauCsmtFlgExpired(); break; default: PS_LOG(WUEPS_PID_MM, VOS_NULL, PS_PRINT_WARNING, "Mm_Timer_Event_Analy:WARNING: TimerId is Error"); break; } return ucEventId; }
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; }