VOS_VOID NAS_ESM_SndOmRegCidInfo(VOS_UINT32 ulRegCid) { NAS_ESM_OM_LOG_REG_CID_INFO_STRU *pstRegCidInfo = VOS_NULL_PTR; /* 分配空间并检验分配是否成功 */ pstRegCidInfo = (NAS_ESM_OM_LOG_REG_CID_INFO_STRU*)NAS_ESM_MEM_ALLOC( \ sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU)); if (VOS_NULL_PTR == pstRegCidInfo) { return; } NAS_ESM_MEM_SET_S( pstRegCidInfo, sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU), 0, sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU)); pstRegCidInfo->stMsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstRegCidInfo->stMsgHeader.ulSenderPid = PS_PID_ESM; pstRegCidInfo->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstRegCidInfo->stMsgHeader.ulReceiverPid = PS_PID_ESM; pstRegCidInfo->stMsgHeader.ulLength = sizeof(NAS_ESM_OM_LOG_REG_CID_INFO_STRU) - NAS_EMM_LEN_VOS_MSG_HEADER; pstRegCidInfo->stMsgHeader.ulMsgName = NAS_ESM_OM_LOG_REG_CID_INFO; pstRegCidInfo->ulRegCid = ulRegCid; /* 消息上报HIDS */ (VOS_VOID)LTE_MsgHook((VOS_VOID*)pstRegCidInfo); NAS_ESM_MEM_FREE(pstRegCidInfo); return; }
VOS_VOID NAS_ERABM_SndOmErabmTimerStatus( NAS_ERABM_TIMER_RUN_STA_ENUM_UINT32 enTimerStatus, NAS_ERABM_TIMER_NAME_ENUM_UINT8 enTimerId, VOS_UINT32 ulTimerRemainLen ) { NAS_ERABM_TIMER_INFO_STRU *pstMsg = VOS_NULL_PTR; pstMsg = (NAS_ERABM_TIMER_INFO_STRU*)NAS_ERABM_MEM_ALLOC(sizeof(NAS_ERABM_TIMER_INFO_STRU)); if (VOS_NULL_PTR == pstMsg) { NAS_ERABM_ERR_LOG("NAS_ERABM_SndOmErabmTimerStatus: mem alloc fail!."); return; } pstMsg->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->stMsgHeader.ulSenderPid = PS_PID_RABM; pstMsg->stMsgHeader.ulReceiverPid = PS_PID_RABM; pstMsg->stMsgHeader.ulLength = sizeof(NAS_ERABM_TIMER_INFO_STRU) - 20; pstMsg->stMsgHeader.ulMsgName = enTimerId + PS_MSG_ID_ERABM_TO_ERABM_OM_BASE; pstMsg->enTimerStatus = enTimerStatus; pstMsg->enTimerId = enTimerId; pstMsg->ulTimerRemainLen = ulTimerRemainLen; (VOS_VOID)LTE_MsgHook((VOS_VOID*)pstMsg); NAS_ERABM_MEM_FREE(pstMsg); }
/***************************************************************************** Function Name : IMSA_IntraMsgProcess() Description : IMSA内部消息处理函数 Input : VOS_VOID Output : VOS_VOID Return Value : VOS_VOID History : 1.sunbing 49683 2013-06-20 Draft Enact *****************************************************************************/ VOS_VOID IMSA_IntraMsgProcess(VOS_VOID) { VOS_UINT8 *pucMsg = VOS_NULL_PTR; /* 获取一条内部消息 */ pucMsg = IMSA_GetNextIntraMsg(); while(VOS_NULL_PTR != pucMsg) { /*勾取消息,便于HSO显示*/ (VOS_VOID)LTE_MsgHook(pucMsg); /*消息处理*/ IMSA_MsgHandle((VOS_VOID *)pucMsg); /* 寻找下一条内部消息 */ pucMsg = IMSA_GetNextIntraMsg(); } }
VOS_VOID NAS_ESM_OmMsgDistr ( VOS_VOID *pRcvMsg ) { PS_MSG_HEADER_STRU *pOmMsg = VOS_NULL_PTR; /*打印进入该函数*/ NAS_ESM_INFO_LOG("NAS_ESM_SmMsgDistr is entered."); TLPS_PRINT2LAYER_INFO(NAS_ESM_OmMsgDistr_ENUM, LNAS_ENTRY); pOmMsg = (PS_MSG_HEADER_STRU*)pRcvMsg; /*根据消息名,调用相应的消息处理函数*/ switch(pOmMsg->ulMsgName) { /*如果收到的是ID_SM_ESM_PDP_CONTEXT_INFO_IND消息*/ case ID_OM_ESM_INFO_REPORT_REQ: (VOS_VOID)LTE_MsgHook((VOS_VOID*)pRcvMsg); NAS_ESM_OmInfoIndMsgProc(pRcvMsg ); break; case ID_APP_ESM_DT_INQ_PDP_INFO_REQ: NAS_ESM_AppQueryActPdpInfoMsgProc(pRcvMsg); break; #if (FEATURE_PTM == FEATURE_ON) case ID_OM_FTM_CTRL_IND: (VOS_VOID)NAS_ESM_RevOmFtmCtrlMsg((MsgBlock *)pRcvMsg); break; #endif default: /*打印异常信息*/ NAS_ESM_WARN_LOG("NAS_ESM_OmMsgDistr:WARNING:OM->ESM Message name non-existent!"); TLPS_PRINT2LAYER_WARNING(NAS_ESM_OmMsgDistr_ENUM, 1); break; } }
VOS_VOID NAS_ESM_ReportActPdpInfo( VOS_VOID) { APP_ESM_INQ_PDP_INFO_IND_STRU *pAppIndMsg; NAS_OM_ACT_PDP_INFO_STRU *pstActPdpInfo = (VOS_VOID*)NAS_ESM_MEM_ALLOC(sizeof(NAS_OM_ACT_PDP_INFO_STRU)); if (VOS_NULL_PTR == pstActPdpInfo) { NAS_ESM_ERR_LOG("NAS_ESM_ReportActPdpInfo: mem alloc fail!."); TLPS_PRINT2LAYER_ERROR(NAS_ESM_ReportActPdpInfo_ENUM, LNAS_EMM_ALLOC_FAIL); return; } if (APP_ESM_DT_REPORT_STATUS_CLOSE == g_ulRptPdpStatus) { NAS_ESM_MEM_FREE(pstActPdpInfo); return; } /*分配空间并检验分配是否成功*/ pAppIndMsg = (VOS_VOID*)NAS_ESM_ALLOC_MSG(sizeof(APP_ESM_INQ_PDP_INFO_IND_STRU)); /*检测是否分配成功*/ if (VOS_NULL_PTR == pAppIndMsg) { /*打印异常信息*/ NAS_ESM_ERR_LOG("NAS_ESM_AppReportActPdpInfo:ERROR:ESM->APP ,Memory Alloc FAIL!"); TLPS_PRINT2LAYER_ERROR(NAS_ESM_ReportActPdpInfo_ENUM, 1); NAS_ESM_MEM_FREE(pstActPdpInfo); return; } /*清空*/ NAS_ESM_MEM_SET_S( pstActPdpInfo, sizeof(NAS_OM_ACT_PDP_INFO_STRU), 0, sizeof(NAS_OM_ACT_PDP_INFO_STRU)); /*填写消息头*/ NAS_ESM_WRITE_APP_DT_IND_MSG_HEAD(pAppIndMsg,ID_APP_ESM_DT_INQ_PDP_INFO_IND,\ NAS_ESM_NULL,\ NAS_ESM_NULL,\ NAS_ESM_NULL); pAppIndMsg->ulOpId = DIAG_CMD_EMM_APP_PDP_INFO_IND; /*获取激活承载的信息 */ NAS_ESM_GetActPdpInfo(pstActPdpInfo); NAS_ESM_MEM_CPY_S( &pAppIndMsg->stActPdpInfo, sizeof(NAS_OM_ACT_PDP_INFO_STRU), pstActPdpInfo, sizeof(NAS_OM_ACT_PDP_INFO_STRU)); NAS_ESM_MEM_CPY_S( &g_stEsmDtInfo.stActPdpInfo, sizeof(NAS_OM_ACT_PDP_INFO_STRU), pstActPdpInfo, sizeof(NAS_OM_ACT_PDP_INFO_STRU)); #if (VOS_OS_VER != VOS_WIN32) if (1 == g_ulNasEsmOmMsgHookFlag) { (VOS_VOID)LTE_MsgHook((VOS_VOID *)pAppIndMsg); } #endif /*调用消息发送函数 */ NAS_ESM_SND_MSG(pAppIndMsg); NAS_ESM_MEM_FREE(pstActPdpInfo); }
VOS_VOID NAS_ESM_TaskEntry(MsgBlock * pMsg) { /* 定义消息头指针*/ PS_MSG_HEADER_STRU *pHeader = VOS_NULL_PTR; /* 判断入口参数是否合法*/ if( VOS_NULL_PTR == pMsg) { NAS_ESM_WARN_LOG("NAS_ESM_TaskEntry:ERROR: No Msg!"); return; } /* 获取消息头指针*/ pHeader = (PS_MSG_HEADER_STRU *) pMsg; NAS_ESM_PrintEsmRevMsg(pHeader,NAS_COMM_GET_ESM_PRINT_BUF()); switch(pHeader->ulSenderPid) { /*如果是EMM消息,调用EMM处理函数*/ case PS_PID_MM: NAS_ESM_EmmMsgDistr(pMsg); break; /*如果是RABM消息,调用RABM处理函数*/ case PS_PID_RABM: NAS_ESM_RabmMsgDistr(pMsg); break; /*如果是APP消息,调用APP处理函数*/ case PS_PID_APP: NAS_ESM_AppMsgDistr(pMsg); break; case WUEPS_PID_TAF: NAS_ESM_SmMsgDistr(pMsg); break; case MSP_PID_DIAG_APP_AGENT: (VOS_VOID)LTE_MsgHook((VOS_VOID*)pMsg); NAS_ESM_OmMsgDistr(pMsg); break; /*如果是Timer消息,调用Timer溢出处理函数*/ case VOS_PID_TIMER: NAS_ESM_TimerMsgDistr(pMsg); break; /* xiongxianghui00253310 add fot errlog 20131212 begin */ /*如果是OM消息,调用OM处理函数*/ #if (FEATURE_PTM == FEATURE_ON) case ACPU_PID_OM: NAS_ESM_OmMsgDistrForAcpuPidOm(pMsg); break; #endif /* xiongxianghui00253310 add fot errlog 20131212 end */ /*发送对象错误,报警*/ default: NAS_ESM_WARN_LOG("NAS_ESM_TaskEntry:NORM: Error SenderPid!"); break; } if (OM_ESM_REPORT_INFO_OPEN == g_NasEsmOmInfoIndFlag) { if (NAS_ESM_FAILURE == NAS_ESM_CompareEsmInfo()) { /* 通过DIAG上报 */ #if (VOS_WIN32 != VOS_OS_VER) (VOS_VOID)DIAG_ReportCommand(DIAG_CMD_ESM_APP_ESM_INFO_IND, (sizeof(OM_ESM_STATE_INFO_STRU))*OM_ESM_MAX_EPSB_NUM, (VOS_VOID*)g_stEsmOmInfo); #endif } } NAS_ESM_DtJudgeifNeedRpt(); /* xiongxianghui00253310 modify for ftmerrlog begin */ #if (FEATURE_PTM == FEATURE_ON) NAS_ESM_OmInfoIndProc(); #endif /* xiongxianghui00253310 modify for ftmerrlog end */ }