VOS_UINT32 NAS_MMC_RcvLmmSysCfgCnfExpired_SysCfg_WaitLmmSysCfgCnf( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { NAS_MML_PLMN_RAT_PRIO_STRU *pstPrePrioRatList; /* 打印定时器超时异常LOG */ NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_RcvLmmSysCfgCnfExpired_SysCfg_WaitLmmSysCfgCnf():TI_NAS_MMC_WAIT_LMM_SYSCFG_CNF timeout"); /* 向MMA回复SYSCFG设置失败 */ NAS_MMC_SndMmaSysCfgCnf(MMA_MMC_SYS_CFG_SET_FAILURE_OTHER); /* syscfg设置失败需要恢复之前的接入技术和优先级 */ pstPrePrioRatList = NAS_MMC_GetPrePrioRatList_SysCfg(); NAS_MML_SetMsSysCfgPrioRatList(pstPrePrioRatList); /* 通知上层状态机SYSCFG状态机运行结果,syscfg设置失败 */ NAS_MMC_SndSysCfgRslt(VOS_FALSE, VOS_FALSE); /* 退出SYSCFG状态机 */ NAS_MMC_FSM_QuitFsmL2(); return VOS_TRUE; }
VOS_VOID NAS_MMC_SndMmCoverageLostInd(VOS_VOID) { MMCMM_COVERAGE_LOST_IND_STRU *pstSndMsg = VOS_NULL_PTR; /* 从内部消息队列中获取一个还没有使用的空间 */ pstSndMsg = (MMCMM_COVERAGE_LOST_IND_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMCMM_COVERAGE_LOST_IND_STRU)); if ( VOS_NULL_PTR == pstSndMsg) { NAS_ERROR_LOG(WUEPS_PID_MMC,"NAS_MMC_SndMmCoverageLostInd:ERROR: Memory Alloc Error for pMsg"); return; } pstSndMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstSndMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMC; pstSndMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstSndMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MM; pstSndMsg->MsgHeader.ulLength = sizeof(MMCMM_COVERAGE_LOST_IND_STRU) - VOS_MSG_HEAD_LENGTH; /* 填写消息类别 */ pstSndMsg->MsgHeader.ulMsgName = MMCMM_COVERAGE_LOST_IND; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstSndMsg); return; }
VOS_VOID NAS_MMC_SndMmPlmnSchInit(VOS_VOID) { /*向MM发送挂起指示,定义原语类型指针 */ MMCMM_PLMN_SEARCH_INITIATED_STRU *pstSndMsg = VOS_NULL_PTR; /* 从内部消息队列中获取一个还没有使用的空间 */ pstSndMsg = (MMCMM_PLMN_SEARCH_INITIATED_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMCMM_PLMN_SEARCH_INITIATED_STRU)); if ( VOS_NULL_PTR == pstSndMsg) { NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_SndMmPlmnSchInit:ALLOC MEM ERROR!"); return; } pstSndMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstSndMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMC; pstSndMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstSndMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MM; pstSndMsg->MsgHeader.ulLength = sizeof(MMCMM_PLMN_SEARCH_INITIATED_STRU) - VOS_MSG_HEAD_LENGTH; /* 填写消息类别 */ pstSndMsg->MsgHeader.ulMsgName = MMCMM_PLMN_SEARCH_INITIATED; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstSndMsg); return; }
VOS_VOID NAS_MMC_SndMmLmmTimerStateNotify( LMM_MMC_TIMER_STATE_NOTIFY_STRU *pstTimerStatusNotify ) { MMCMM_LMM_TIMER_STATE_NOTIFY_STRU *pstMsg = VOS_NULL_PTR; /* 申请消息内存分配 */ pstMsg = (MMCMM_LMM_TIMER_STATE_NOTIFY_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMCMM_LMM_TIMER_STATE_NOTIFY_STRU)); if ( VOS_NULL_PTR == pstMsg) { NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_SndMmLmmTimerStatusNotify,ERROR:ALLOC BUFFER WRONG!"); return; } /* 消息IE项赋值 */ PS_MEM_CPY(pstMsg, pstTimerStatusNotify, sizeof(MMCMM_LMM_TIMER_STATE_NOTIFY_STRU)); /* 修改消息头 */ pstMsg->ulLength = sizeof(MMCMM_LMM_TIMER_STATE_NOTIFY_STRU) -VOS_MSG_HEAD_LENGTH; pstMsg->ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->ulSenderPid = WUEPS_PID_MMC; pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->ulReceiverPid = WUEPS_PID_MM; pstMsg->ulMsgId = MMCMM_LMM_TIMER_STATE_NOTIFY; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstMsg); return; }
VOS_VOID NAS_MMC_SndMmRelReq(VOS_VOID) { /* 向MM发送CS信令链接释放消息 */ MMCMM_REL_REQ_STRU *pstSndMmRelMsg = VOS_NULL_PTR; pstSndMmRelMsg = (MMCMM_REL_REQ_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMCMM_REL_REQ_STRU)); if ( VOS_NULL_PTR == pstSndMmRelMsg) { NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_SndMmRelReq,ERROR:ALLOC BUFFER WRONG!"); return; } pstSndMmRelMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstSndMmRelMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMC; pstSndMmRelMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstSndMmRelMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MM; /* 填写消息类别 */ pstSndMmRelMsg->MsgHeader.ulMsgName = MMCMM_REL_REQ; pstSndMmRelMsg->MsgHeader.ulLength = sizeof(MMCMM_REL_REQ_STRU) - VOS_MSG_HEAD_LENGTH; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstSndMmRelMsg); return; }
VOS_VOID NAS_MMC_SndGmmLteSysinfoInd( LMM_MMC_SYS_INFO_IND_STRU *pstLmmSysInfoMsg ) { /* 定义原语类型指针 */ MMC_GMM_LTE_SYS_INFO_IND_STRU *pstMsg = VOS_NULL_PTR; pstMsg = (MMC_GMM_LTE_SYS_INFO_IND_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMC_GMM_LTE_SYS_INFO_IND_STRU)); if ( VOS_NULL_PTR == pstMsg) { NAS_ERROR_LOG(WUEPS_PID_MMC,"NAS_MMC_SndGmmLteSysinfoInd:Alloc Mem Failed"); return; } /* 消息IE项赋值 */ PS_MEM_CPY(pstMsg, pstLmmSysInfoMsg, sizeof(MMC_GMM_LTE_SYS_INFO_IND_STRU)); pstMsg->ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->ulSenderPid = WUEPS_PID_MMC; pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->ulReceiverPid = WUEPS_PID_GMM; pstMsg->ulMsgId = MMCGMM_LTE_SYS_INFO_IND; pstMsg->ulLength = sizeof(MMC_GMM_LTE_SYS_INFO_IND_STRU) - VOS_MSG_HEAD_LENGTH; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstMsg); return ; }
VOS_VOID NAS_MMC_SndGmmRelReq(VOS_VOID) { /* 向GMM发送PS信令链接释放消息 */ MMCGMM_REL_REQ_STRU *pstSndGmmRelMsg = VOS_NULL_PTR; /* 从内部消息队列中获取一个还没有使用的空间 */ pstSndGmmRelMsg = (MMCGMM_REL_REQ_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMCGMM_REL_REQ_STRU)); if ( VOS_NULL_PTR == pstSndGmmRelMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_SndGmmRelReq:ALLOC MEM ERROR!"); return; } pstSndGmmRelMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstSndGmmRelMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMC; pstSndGmmRelMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstSndGmmRelMsg->MsgHeader.ulReceiverPid = WUEPS_PID_GMM; /* 填写消息类别 */ pstSndGmmRelMsg->MsgHeader.ulMsgName = MMCGMM_REL_REQ; pstSndGmmRelMsg->MsgHeader.ulLength = sizeof(MMCGMM_REL_REQ_STRU) - VOS_MSG_HEAD_LENGTH; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstSndGmmRelMsg); return; }
VOS_VOID NAS_MMC_SndGmmLmmAttachInd( LMM_MMC_ATTACH_IND_STRU *pstAttachInd ) { MMCGMM_LMM_ATTACH_IND_STRU *pstMsg = VOS_NULL_PTR; pstMsg = (MMCGMM_LMM_ATTACH_IND_STRU *)NAS_MML_GetIntMsgSendBuf(sizeof(MMCGMM_LMM_ATTACH_IND_STRU)); if ( VOS_NULL_PTR == pstMsg) { NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_SndGmmLmmAttachInd,ERROR:ALLOC BUFFER WRONG!"); return; } /* 消息IE项赋值 */ PS_MEM_CPY(pstMsg, pstAttachInd, sizeof(MMCGMM_LMM_ATTACH_IND_STRU)); /* 修改消息头 */ pstMsg->ulLength = sizeof(MMCGMM_LMM_ATTACH_IND_STRU) -VOS_MSG_HEAD_LENGTH; pstMsg->ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->ulSenderPid = WUEPS_PID_MMC; pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->ulReceiverPid = WUEPS_PID_GMM; pstMsg->ulMsgId = MMCGMM_LMM_ATTACH_IND; /* 内部消息的发送 */ NAS_MML_SndInternalMsg(pstMsg); return; }
NAS_MML_INTERNAL_MSG_BUF_STRU *NAS_MML_GetIntMsgSendBuf( VOS_UINT32 ulLen ) { NAS_MML_INTERNAL_MSG_BUF_STRU *pstNasMmlMsg = VOS_NULL_PTR; NAS_MML_INTERNAL_MSG_QUEUE_STRU *pstInternalMsgQueue = VOS_NULL_PTR; pstInternalMsgQueue = &(NAS_MML_GetMmlCtx()->stInternalMsgQueue); /* 从上下文中获取消息缓冲区指针 */ pstNasMmlMsg = ( NAS_MML_INTERNAL_MSG_BUF_STRU *)&(pstInternalMsgQueue->stSendMsgBuf); if ( ulLen > NAS_MML_MAX_INTERNAL_MSG_LEN ) { NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MML_GetIntMsgSendBuf: Buffer full" ); NAS_MMC_SndOmInternalMsgQueueInfo(VOS_FALSE, VOS_TRUE); return VOS_NULL_PTR; } /* 清空这个消息缓冲单元 */ PS_MEM_SET(pstNasMmlMsg, 0x00, sizeof(NAS_MML_INTERNAL_MSG_BUF_STRU)); /* 返回缓冲区指针 */ return pstNasMmlMsg; }
VOS_VOID NAS_SMS_SndOmInquireCnfMsg( ID_NAS_OM_INQUIRE_STRU *pstOmInquireMsg ) { ID_NAS_OM_CNF_STRU *pstSmsOmCnf ; pstSmsOmCnf = VOS_NULL_PTR; pstSmsOmCnf = (ID_NAS_OM_CNF_STRU *)PS_MEM_ALLOC(WUEPS_PID_SMS, (sizeof(ID_NAS_OM_CNF_STRU) + sizeof(NAS_OM_SMS_CONFIRM_STRU)) - NAS_OM_DATA_PTR_LEN); /* 申请内存 */ if (VOS_NULL_PTR == pstSmsOmCnf) { NAS_ERROR_LOG(WUEPS_PID_SMS, "NAS_MMC_SndOmInquireCnfMsg:Memory Allocate fail!"); return; } PS_MEM_SET((VOS_INT8*)pstSmsOmCnf, 0 ,sizeof(ID_NAS_OM_CNF_STRU)); pstSmsOmCnf->ucFuncType = 4; pstSmsOmCnf->ucReserve = 0; pstSmsOmCnf->usLength = NAS_OM_DATA_OFFSET + sizeof(NAS_OM_SMS_CONFIRM_STRU); pstSmsOmCnf->ulSn = 0; pstSmsOmCnf->ulTimeStamp = OM_GetSlice(); pstSmsOmCnf->usPrimId = ID_NAS_OM_SMS_CONFIRM; pstSmsOmCnf->usToolsId = pstOmInquireMsg->usToolsId; NAS_SMS_BuildSmsOmInfo((NAS_OM_SMS_CONFIRM_STRU*)(pstSmsOmCnf->aucData)); OM_SendData( (OM_RSP_PACKET_STRU*)pstSmsOmCnf, (sizeof(ID_NAS_OM_CNF_STRU) + sizeof(NAS_OM_SMS_CONFIRM_STRU)) - NAS_OM_DATA_PTR_LEN ); /* 原语发送 */ PS_MEM_FREE(WUEPS_PID_SMS, pstSmsOmCnf); }
VOS_UINT32 NAS_SM_SndRabmBearerModifyInd( VOS_UINT8 ucNsapi, NAS_SM_PDP_CONTEXT_INFO_STRU *pstPdpCtxInfo ) { SM_RABM_BEARER_MODIFY_IND_STRU *pstBearerModifyInd; /* 构造消息 */ pstBearerModifyInd = (SM_RABM_BEARER_MODIFY_IND_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( WUEPS_PID_SM, sizeof(SM_RABM_BEARER_MODIFY_IND_STRU)); if (VOS_NULL_PTR == pstBearerModifyInd) { NAS_ERROR_LOG(WUEPS_PID_SM, "NAS_SM_SndRabmBearerModifyInd: Memory alloc failed."); return VOS_ERR; } /* 初始化消息 */ PS_MEM_SET((VOS_CHAR*)pstBearerModifyInd + VOS_MSG_HEAD_LENGTH, 0x00, sizeof(SM_RABM_BEARER_MODIFY_IND_STRU) - VOS_MSG_HEAD_LENGTH); /* 填写消息头 */ pstBearerModifyInd->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstBearerModifyInd->stMsgHeader.ulReceiverPid = WUEPS_PID_RABM; pstBearerModifyInd->stMsgHeader.ulMsgName = ID_SM_RABM_BEARER_MODIFY_IND; /* 填写消息内容 */ pstBearerModifyInd->ulNsapi = ucNsapi; pstBearerModifyInd->stQos.ulLength = pstPdpCtxInfo->QoS.ulQosLength; PS_MEM_CPY(pstBearerModifyInd->stQos.aucQosValue, pstPdpCtxInfo->QoS.aucQosValue, pstPdpCtxInfo->QoS.ulQosLength); /* 发送消息 */ if (VOS_OK != PS_SEND_MSG(WUEPS_PID_SM, pstBearerModifyInd)) { NAS_ERROR_LOG(WUEPS_PID_SM, "NAS_SM_SndRabmBearerModifyInd: Send message failed."); return VOS_ERR; } return VOS_OK; }
VOS_VOID MN_CALL_CsMtCallFailRecord( NAS_ERR_LOG_CS_MT_CALL_CAUSE_ENUM_U32 enCause ) { NAS_ERR_LOG_CS_MT_CALL_FAIL_EVENT_STRU stCsMtCallFailEvt; VOS_UINT32 ulLength; VOS_UINT16 usLevel; VOS_UINT32 ulIsLogRecord; VOS_UINT32 ulResult; /* 查询对应Alarm Id是否需要记录异常信息 */ usLevel = NAS_GetErrLogAlmLevel(NAS_ERR_LOG_ALM_CS_MT_CALL_FAIL); ulIsLogRecord = TAF_SDC_IsErrLogNeedRecord(usLevel); /* 模块异常不需要记录或异常原因值不需要记录时,不保存异常信息 */ if (VOS_FALSE == ulIsLogRecord) { return; } ulLength = sizeof(NAS_ERR_LOG_CS_MT_CALL_FAIL_EVENT_STRU); /* 填充CS PAGING失败异常信息 */ PS_MEM_SET(&stCsMtCallFailEvt, 0x00, ulLength); NAS_COMM_BULID_ERRLOG_HEADER_INFO(&stCsMtCallFailEvt.stHeader, VOS_GetModemIDFromPid(WUEPS_PID_TAF), NAS_ERR_LOG_ALM_CS_MT_CALL_FAIL, usLevel, VOS_GetSlice(), (ulLength - sizeof(OM_ERR_LOG_HEADER_STRU))); /* 获取当前位置信息 */ NAS_MNTN_OutputPositionInfo(&stCsMtCallFailEvt.stPositionInfo); /* 填写错误原因值 */ stCsMtCallFailEvt.enCause = enCause; /* 将CS MT CALL失败信息发送给ACPU OM模块 */ TAF_SndAcpuOmFaultErrLogInd(&stCsMtCallFailEvt, ulLength); /* 将异常信息写入Buffer中 实际写入的字符数与需要写入的不等则打印异常 */ ulResult = TAF_SDC_PutErrLogRingBuf((VOS_CHAR *)&stCsMtCallFailEvt, ulLength); if (ulResult != ulLength) { NAS_ERROR_LOG(WUEPS_PID_TAF, "MN_CALL_SndAcpuOmCsMtCallFailInd(): Push buffer error."); } /* 可维可测勾包 */ NAS_COM_MntnPutRingbuf(NAS_ERR_LOG_ALM_CS_MT_CALL_FAIL, WUEPS_PID_TAF, (VOS_UINT8 *)&stCsMtCallFailEvt, sizeof(stCsMtCallFailEvt)); return; }
VOS_VOID NAS_SM_RcvTafBearerModifyInd( SMREG_BEARER_MODIFY_IND_STRU *pstBearerModifyInd ) { NAS_SM_PDP_CONTEXT_INFO_STRU *pstPdpCtxInfo; VOS_UINT8 ucPdpCtxIndex; VOS_UINT8 ucTi; VOS_UINT8 ucNsapi; /*---------------------------------------------------------------- 提取TI: 根据TiFlag决定TI的取值范围, 以网侧下发TI为准 若TiFlag为TRUE(SM_TI_MS_ORG), TI取值区间[128, 254] 若TiFlag为FALSE(SM_TI_NET_ORG), TI取值区间[0, 127] ----------------------------------------------------------------*/ ucTi = (VOS_FALSE == pstBearerModifyInd->stTransId.ucTiFlag) ? (pstBearerModifyInd->stTransId.ucTiValue) : (pstBearerModifyInd->stTransId.ucTiValue + 0x80); /* 获取TI对应的PDP CONTEXT索引 */ ucPdpCtxIndex = NAS_SM_GetNsapiFromTiMap(ucTi); /* 检查是否存在和TI和CR对应的PDP CONTEXT */ if (0xFF == ucPdpCtxIndex) { NAS_ERROR_LOG(WUEPS_PID_SM, "NAS_SM_RcvTafBearerModifyInd: NSAPI is not used."); return; } /* 获取PDP CONTEXT索引对应的NSAPI: NSAPI = PDP_INDEX - NSAPI_OFFSET(5) */ ucNsapi = ucPdpCtxIndex + SM_NSAPI_OFFSET; /* 获取当前PDP CONTEXT内容地址 */ pstPdpCtxInfo = NAS_SM_GetPdpCtxInfoAddr(ucPdpCtxIndex); /* 更新RADIO PRIORITY */ if (VOS_TRUE == pstBearerModifyInd->bitOpRadioPriority) { pstPdpCtxInfo->ucRadioPri = pstBearerModifyInd->ucRadioPriority; } /* 更新QOS信息 */ if (VOS_TRUE == pstBearerModifyInd->bitOpPdpQos) { pstPdpCtxInfo->QoS.ulQosLength = pstBearerModifyInd->stNegQos.ulQosLen; PS_MEM_CPY(pstPdpCtxInfo->QoS.aucQosValue, pstBearerModifyInd->stNegQos.aucQos, NAS_SM_MAX_QOS_LEN); } /* 通知RABM更新状态 */ NAS_SM_SndRabmBearerModifyInd(ucNsapi, pstPdpCtxInfo); /* 通知GMM pdp上下文发生修改,GMM根据此消息需判断是否要去激活ISR */ NAS_SM_SndGmmPdpModifyInd(ucNsapi); }
VOS_UINT32 TAF_MMA_SndMmcSignalReportReq( VOS_UINT8 ucActionType, VOS_UINT8 ucRrcMsgType, VOS_UINT8 ucSignThreshold, VOS_UINT8 ucMinRptTimerInterval ) { VOS_UINT32 ulRet; MMA_MMC_SIGN_REPORT_REQ_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_SIGN_REPORT_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_SIGN_REPORT_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcSignalReportReq:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_SIGN_REPORT_REQ_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_SIGN_REPORT_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_SIGN_REPORT_REQ; pstMsg->ucActionType = ucActionType; pstMsg->ucRrcMsgType = ucRrcMsgType; pstMsg->ucSignThreshold = ucSignThreshold; pstMsg->ucMinRptTimerInterval = ucMinRptTimerInterval; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcSignalReportReq:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_VOID NAS_MMC_SetRatModeSysCfgReq_SysCfg( NAS_MML_NET_RAT_TYPE_ENUM_UINT8 enCurrRat, MMA_MMC_SYS_CFG_SET_REQ_STRU *pstSysCfgMsg ) { /* 根据接入模式,进行SYSCFG的设置 */ switch ( enCurrRat ) { #if (FEATURE_ON == FEATURE_LTE) case NAS_MML_NET_RAT_TYPE_LTE: /* 向L模下发SYSCFG设置请求 */ NAS_MMC_SndLmmSyscfgReq(pstSysCfgMsg); NAS_MMC_AddSysCfgIndex_SysCfg(); /* 进行SYSCFG状态机的子状态的迁移 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_SYSCFG_STA_WAIT_LMM_SYSCFG_CNF); /* 启动等待回复定时器 */ NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_LMM_SYSCFG_CNF, TI_NAS_MMC_WAIT_LMM_SYSCFG_CNF_LEN); break; #endif case NAS_MML_NET_RAT_TYPE_WCDMA: /* 向W模下发SYSCFG设置请求 */ NAS_MMC_SndAsSyscfgReq(pstSysCfgMsg, WUEPS_PID_WRR); NAS_MMC_AddSysCfgIndex_SysCfg(); /* 进行SYSCFG状态机的子状态的迁移 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_SYSCFG_STA_WAIT_WAS_SYSCFG_CNF); /* 启动等待回复定时器 */ NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_WAS_SYSCFG_CNF, TI_NAS_MMC_WAIT_WAS_SYSCFG_CNF_LEN); break; case NAS_MML_NET_RAT_TYPE_GSM: /* 向G模下发SYSCFG设置请求 */ NAS_MMC_SndAsSyscfgReq(pstSysCfgMsg, UEPS_PID_GAS); NAS_MMC_AddSysCfgIndex_SysCfg(); /* 进行SYSCFG状态机的子状态的迁移 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_SYSCFG_STA_WAIT_GAS_SYSCFG_CNF); /* 启动等待回复定时器 */ NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_GAS_SYSCFG_CNF, TI_NAS_MMC_WAIT_GAS_SYSCFG_CNF_LEN); break; default: NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_MMC_SetRatModeSysCfgReq_SysCfg():Invalid net rat type"); break; } return; }
VOS_UINT32 TAF_MMA_SndMmcDetachReq( VOS_UINT32 ulOpID, MMA_MMC_DETACH_TYPE_ENUM_UINT32 enDetachType, TAF_MMA_DETACH_CAUSE_ENUM_UINT8 enDetachCause ) { VOS_UINT32 ulRet; MMA_MMC_DETACH_REQ_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_DETACH_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_DETACH_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcDetachReq:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_DETACH_REQ_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_DETACH_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_DETACH_REQ; pstMsg->ulOpID = ulOpID; pstMsg->enDetachType = enDetachType; pstMsg->enDetachReason = enDetachCause; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcDetachReq:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_VOID MN_CALL_CsCallDiscInfoRecord( MN_CALL_ID_T ucCallId, NAS_ERR_LOG_CS_MT_CALL_CAUSE_ENUM_U32 enCause ) { NAS_ERR_LOG_PROCESS_INFO_IND_EVENT_STRU stProcInfoEvent; VOS_UINT32 ulLength; VOS_UINT16 usLevel; VOS_UINT32 ulIsLogRecord; VOS_UINT32 ulResult; /* 查询对应Alarm Id是否需要记录异常信息 */ usLevel = NAS_GetErrLogAlmLevel(NAS_ERR_LOG_ALM_PORCESS_INFO_IND); ulIsLogRecord = TAF_SDC_IsErrLogNeedRecord(usLevel); /* 模块异常不需要记录或异常原因值不需要记录时,不保存异常信息 */ if (VOS_FALSE == ulIsLogRecord) { return; } ulLength = sizeof(NAS_ERR_LOG_PROCESS_INFO_IND_EVENT_STRU); /* 填充过程信息 */ PS_MEM_SET(&stProcInfoEvent, 0x00, ulLength); NAS_COMM_BULID_ERRLOG_HEADER_INFO(&stProcInfoEvent.stHeader, VOS_GetModemIDFromPid(WUEPS_PID_TAF), NAS_ERR_LOG_ALM_PORCESS_INFO_IND, usLevel, VOS_GetSlice(), (ulLength - sizeof(OM_ERR_LOG_HEADER_STRU))); stProcInfoEvent.enInfoType = NAS_ERR_LOG_PROCESS_INFO_TYPE_CS_CALL_DISC; stProcInfoEvent.stDiscInfo.ucCallId = ucCallId; stProcInfoEvent.stDiscInfo.ulCause = enCause; /* 将异常信息写入Buffer中 实际写入的字符数与需要写入的不等则打印异常 */ ulResult = TAF_SDC_PutErrLogRingBuf((VOS_CHAR *)&stProcInfoEvent, ulLength); if (ulResult != ulLength) { NAS_ERROR_LOG(WUEPS_PID_TAF, "MN_CALL_CsCallDiscInfoRecord(): Push buffer error."); } /* 可维可测勾包 */ NAS_COM_MntnPutRingbuf(NAS_ERR_LOG_ALM_PORCESS_INFO_IND, WUEPS_PID_TAF, (VOS_UINT8 *)&stProcInfoEvent, sizeof(stProcInfoEvent)); return; }
VOS_UINT32 TAF_MMA_SndMmcPsTransferInd( struct MsgCB *pstMsg ) { VOS_UINT32 ulRet; MMA_MMC_PS_TRANSFER_IND_STRU *pstMmaSndMmcMsg = VOS_NULL_PTR; MTC_MMA_PS_TRANSFER_IND_STRU *pstMtcMmaPsTransferInd = VOS_NULL_PTR; pstMtcMmaPsTransferInd = (MTC_MMA_PS_TRANSFER_IND_STRU *)pstMsg; /* 申请内存 */ pstMmaSndMmcMsg = (MMA_MMC_PS_TRANSFER_IND_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_PS_TRANSFER_IND_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMmaSndMmcMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcPsTransferInd:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMmaSndMmcMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_PS_TRANSFER_IND_STRU) - VOS_MSG_HEAD_LENGTH); pstMmaSndMmcMsg->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMmaSndMmcMsg->stMsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMmaSndMmcMsg->stMsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMmaSndMmcMsg->stMsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMmaSndMmcMsg->stMsgHeader.ulLength = sizeof(MMA_MMC_PS_TRANSFER_IND_STRU) - VOS_MSG_HEAD_LENGTH; pstMmaSndMmcMsg->stMsgHeader.ulMsgName = ID_MMA_MMC_PS_TRANSFER_IND; pstMmaSndMmcMsg->enSolutionCfg = pstMtcMmaPsTransferInd->enSolutionCfg; pstMmaSndMmcMsg->ucCause = pstMtcMmaPsTransferInd->ucCause; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMmaSndMmcMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcPsTransferInd:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 TAF_MMA_SndMmcOmMaintainInfoInd( VOS_UINT8 ucOmConnectFlg, VOS_UINT8 ucOmPcRecurEnableFlg ) { VOS_UINT32 ulRet; MMA_MMC_OM_MAINTAIN_INFO_IND_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_OM_MAINTAIN_INFO_IND_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_OM_MAINTAIN_INFO_IND_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcOmMaintainInfoInd:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_OM_MAINTAIN_INFO_IND_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_OM_MAINTAIN_INFO_IND_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_OM_MAINTAIN_INFO_IND; pstMsg->ucOmConnectFlg = ucOmConnectFlg; pstMsg->ucOmPcRecurEnableFlg = ucOmPcRecurEnableFlg; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcOmMaintainInfoInd:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 TAF_MMA_SndMmcPlmnSpecialReq( MMA_MMC_PLMN_ID_STRU *pstPlmnId, MMA_MMC_NET_RAT_TYPE_ENUM_UINT8 enAccessMode ) { VOS_UINT32 ulRet; MMA_MMC_PLMN_SPECIAL_REQ_STRU *pstMsg = VOS_NULL_PTR; pstMsg = (MMA_MMC_PLMN_SPECIAL_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_PLMN_SPECIAL_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcPlmnSpecialReq:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_PLMN_SPECIAL_REQ_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_PLMN_SPECIAL_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_PLMN_SPECIAL_REQ; pstMsg->stPlmnId = *pstPlmnId; pstMsg->enAccessMode = enAccessMode; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcPlmnSpecialReq:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 TAF_MMA_SndMmcPowerOffReq( MMA_MMC_POWER_OFF_CAUSE_ENUM_UINT32 enCause ) { VOS_UINT32 ulRet; MMA_MMC_POWER_OFF_REQ_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_POWER_OFF_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_POWER_OFF_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcPowerOffReq:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_POWER_OFF_REQ_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_POWER_OFF_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_POWER_OFF_REQ; pstMsg->enCause = enCause; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcPowerOffReq:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } NAS_TRACE_HIGH("Send Msg!"); return VOS_OK; }
VOS_VOID NAS_RABM_RcvGmmReestablishCnf( GMMRABM_REESTABLISH_CNF_STRU *pstGmmReestablishCnf ) { NAS_RABM_PROC_FUNC_TBL_STRU *pstProcFuncTbl; GMM_RABM_NET_RAT_ENUM_UINT32 enCurrentSysMode; /* 判断当前的系统模式是否有效 */ enCurrentSysMode = NAS_RABM_GetCurrentSysMode(); if (NAS_MML_NET_RAT_TYPE_BUTT == enCurrentSysMode) { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvGmmReestablishCnf: Invalid System Mode."); return; } /* 根据当前系统模式获取对应的处理函数表的指针 */ pstProcFuncTbl = NAS_RABM_GetProFuncTblAddr(enCurrentSysMode); /* 确认函数处理表已经注册 */ if (VOS_NULL_PTR != pstProcFuncTbl) { if (VOS_NULL_PTR != pstProcFuncTbl->pGmmReestablishCnfProcFunc) { /* 调用对应模式的处理函数 */ pstProcFuncTbl->pGmmReestablishCnfProcFunc(pstGmmReestablishCnf); } else { NAS_WARNING_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvGmmReestablishCnf: pGmmReestablishCnfProcFunc is not registered."); } } else { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvGmmReestablishCnf: Message is received in wrong system mode."); } }
VOS_UINT32 TAF_MMA_SndMmcAcqReq( TAF_MMA_ACQ_PARA_STRU *pstMmaAcqPara ) { VOS_UINT32 ulRet; MMA_MMC_ACQ_REQ_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_ACQ_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_ACQ_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if (VOS_NULL_PTR == pstMsg) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcAcqReq:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_ACQ_REQ_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->stMsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->stMsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->stMsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->stMsgHeader.ulLength = sizeof(MMA_MMC_ACQ_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->stMsgHeader.ulMsgName = ID_MMA_MMC_ACQ_REQ; pstMsg->enAcqReason = pstMmaAcqPara->enAcqReason; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG(WUEPS_PID_MMA, pstMsg); if (VOS_OK != ulRet) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcAcqReq:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_VOID NAS_RABM_RcvDataResumeInd( VOS_UINT8 ucRebuildRabFlag ) { NAS_RABM_PROC_FUNC_TBL_STRU *pstProcFuncTbl; GMM_RABM_NET_RAT_ENUM_UINT32 enCurrentSysMode; /* 判断当前的系统模式是否有效 */ enCurrentSysMode = NAS_RABM_GetCurrentSysMode(); if (NAS_MML_NET_RAT_TYPE_BUTT == enCurrentSysMode) { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvDataResumeInd: Invalid System Mode."); return; } /* 根据当前系统模式获取对应的处理函数表的指针 */ pstProcFuncTbl = NAS_RABM_GetProFuncTblAddr(enCurrentSysMode); /* 确认函数处理表已经注册 */ if (VOS_NULL_PTR != pstProcFuncTbl) { if (VOS_NULL_PTR != pstProcFuncTbl->pDataResumeIndProcFunc) { /* 调用对应模式的处理函数 */ pstProcFuncTbl->pDataResumeIndProcFunc(ucRebuildRabFlag); } else { NAS_WARNING_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvDataResumeInd: pDataResumeIndProcFunc is not registered."); } } else { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvDataResumeInd: Message is received in wrong system mode."); } }
VOS_VOID NAS_RABM_RcvSmDeactivateInd( RABMSM_DEACTIVATE_IND_STRU *pstSmDeactivateInd ) { NAS_RABM_PROC_FUNC_TBL_STRU *pstProcFuncTbl; GMM_RABM_NET_RAT_ENUM_UINT32 enCurrentSysMode; /* 判断当前的系统模式是否有效 */ enCurrentSysMode = NAS_RABM_GetCurrentSysMode(); if (NAS_MML_NET_RAT_TYPE_BUTT == enCurrentSysMode) { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvSmDeactivateInd: Invalid System Mode."); return; } /* 根据当前系统模式获取对应的处理函数表的指针 */ pstProcFuncTbl = NAS_RABM_GetProFuncTblAddr(enCurrentSysMode); /* 确认函数处理表已经注册 */ if (VOS_NULL_PTR != pstProcFuncTbl) { if (VOS_NULL_PTR != pstProcFuncTbl->pSmDeactivateIndProcFunc) { /* 调用对应模式的处理函数 */ pstProcFuncTbl->pSmDeactivateIndProcFunc(pstSmDeactivateInd); } else { NAS_WARNING_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvSmDeactivateInd: pSmDeactivateIndProcFunc is not registered."); } } else { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_RcvSmDeactivateInd: Msg is received in wrong system mode."); } }
VOS_UINT32 TAF_MMA_SndMmcModeChangeReq( MMA_MMC_MS_MODE_ENUM_UINT32 enMsMode ) { VOS_UINT32 ulRet; MMA_MMC_MODE_CHANGE_REQ_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_MODE_CHANGE_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_MODE_CHANGE_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcModeChangeReq:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_MODE_CHANGE_REQ_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_MODE_CHANGE_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_MODE_CHANGE_REQ; pstMsg->enMsMode = enMsMode; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcModeChangeReq:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 NAS_UTRANCTRL_RcvTiWaitTdSuspendCnfExpired_PlmnSelection_WaitTdSuspendCnf( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { /* 异常打印 */ NAS_ERROR_LOG(WUEPS_PID_MMC, "NAS_UTRANCTRL_RcvTiWaitTdSuspendCnfExpired_PlmnSelection_WaitTdSuspendCnf: ENTERED"); /* 复位 */ NAS_MML_SoftReBoot(); /* 消息处理完成不需继续处理 */ return VOS_TRUE; }
VOS_VOID NAS_RABM_RcvCommMsg( struct MsgCB *pMsg ) { NAS_RABM_PROC_FUNC_TBL_STRU *pstProcFuncTbl; GMM_RABM_NET_RAT_ENUM_UINT32 enCurrentSysMode; /* 判断当前的系统模式是否有效 */ enCurrentSysMode = NAS_RABM_GetCurrentSysMode(); if (NAS_MML_NET_RAT_TYPE_BUTT == enCurrentSysMode) { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_ProcSysSrvChgInd: Invalid System Mode."); return; } /* 根据当前系统模式获取对应的处理函数表的指针 */ pstProcFuncTbl = NAS_RABM_GetProFuncTblAddr(enCurrentSysMode); if (VOS_NULL_PTR != pstProcFuncTbl) { if (VOS_NULL_PTR != pstProcFuncTbl->pTaskEntry) { /* 调用对应模式的处理函数 */ pstProcFuncTbl->pTaskEntry(pMsg); } else { NAS_WARNING_LOG(WUEPS_PID_RABM, "NAS_RABM_ProcessCommMsg: TaskEntry is not registered."); } } else { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_ProcessCommMsg: Msg is received in wrong system mode."); } }
VOS_UINT32 TAF_MMA_SndMmcUpdateUplmnNtf( VOS_VOID ) { VOS_UINT32 ulRet; MMA_MMC_UPDATE_UPLMN_NTF_STRU *pstMsg = VOS_NULL_PTR; /* 申请内存 */ pstMsg = (MMA_MMC_UPDATE_UPLMN_NTF_STRU *)PS_ALLOC_MSG(WUEPS_PID_MMA, sizeof(MMA_MMC_UPDATE_UPLMN_NTF_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstMsg ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcUpdateUplmnNtf:ERROR: Memory Alloc Error for pMsg"); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0, sizeof(MMA_MMC_UPDATE_UPLMN_NTF_STRU) - VOS_MSG_HEAD_LENGTH); pstMsg->MsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulReceiverPid = WUEPS_PID_MMC; pstMsg->MsgHeader.ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->MsgHeader.ulSenderPid = WUEPS_PID_MMA; pstMsg->MsgHeader.ulLength = sizeof(MMA_MMC_UPDATE_UPLMN_NTF_STRU) - VOS_MSG_HEAD_LENGTH; pstMsg->MsgHeader.ulMsgName = ID_MMA_MMC_UPDATE_UPLMN_NTF; /* 调用VOS发送原语 */ ulRet = PS_SEND_MSG( WUEPS_PID_MMA, pstMsg ); if ( VOS_OK != ulRet ) { NAS_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_SndMmcUpdateUplmnNtf:ERROR:PS_SEND_MSG FAILURE"); return VOS_ERR; } return VOS_OK; }
VOS_VOID NAS_SMS_SndOmInquireCnfMsg( ID_NAS_OM_INQUIRE_STRU *pstOmInquireMsg ) { VOS_UINT32 ulMsgLen; NAS_OM_SMS_CONFIRM_STRU *pstNasOmSmsCnf; VOS_UINT32 ulRet; VOS_UINT32 ulSndOmRet; /* 1. 向OM发送IND消息 */ ulSndOmRet = NAS_MMC_SndOmSmsIndMsg(); /* 2. 向工具侧回复CNF消息 */ /* 申请消息 */ ulMsgLen = sizeof(NAS_OM_SMS_CONFIRM_STRU) - VOS_MSG_HEAD_LENGTH; pstNasOmSmsCnf = (NAS_OM_SMS_CONFIRM_STRU*)PS_ALLOC_MSG(WUEPS_PID_SMS, ulMsgLen); if (VOS_NULL_PTR == pstNasOmSmsCnf) { NAS_ERROR_LOG(WUEPS_PID_SMS, "NAS_MMC_SndOmInquireCnfMsg:Memory Allocate fail!"); return; } /* 初始化 */ PS_MEM_SET((VOS_UINT8*)pstNasOmSmsCnf + VOS_MSG_HEAD_LENGTH, 0x00, ulMsgLen); /* 填写消息内容 */ pstNasOmSmsCnf->ulReceiverPid = MSP_PID_DIAG_APP_AGENT; pstNasOmSmsCnf->ulMsgId = ID_NAS_OM_SMS_CONFIRM; pstNasOmSmsCnf->usOriginalId = pstOmInquireMsg->usOriginalId; pstNasOmSmsCnf->usTerminalId = pstOmInquireMsg->usTerminalId; pstNasOmSmsCnf->ulTimeStamp = pstOmInquireMsg->ulTimeStamp; pstNasOmSmsCnf->ulSN = pstOmInquireMsg->ulSN; pstNasOmSmsCnf->enResult = (NAS_OM_RESULT_ENUM_UINT32)ulSndOmRet; /* 发送消息 */ ulRet = PS_SEND_MSG(WUEPS_PID_SMS, pstNasOmSmsCnf); if (VOS_OK != ulRet) { MN_WARN_LOG("NAS_MMC_SndOmOtaCnf:WARNING: Send msg fail."); } return; }