VOS_VOID NAS_RABM_VoicePreferActivateJudgeStepOne(VOS_VOID) { VOS_UINT32 ulVpActMatch; VOS_UINT32 ulOldVpStatus; ulVpActMatch = NAS_RABM_IsVpActivateMatchInStepOne(); ulOldVpStatus = NAS_RABM_VoicePreferGetVpStatus(); /* 不满足初步激活条件*/ if (VOS_FALSE == ulVpActMatch) { /* 定时器超时事件可能在队列中,就处理了AP 下发的停止VoicePrefer ,延迟超时处理中需要判断该标志 */ NAS_RABM_VoicePreferSetStopVpFlag(VOS_TRUE); /* 把延迟激活和重试查询GMM定时器停止,函数里面会判断定时器是否启动 */ NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_DELAY); NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_REQRY_GMM_DELAY); /* 当前已经处于激活状态*/ if (VOS_TRUE == ulOldVpStatus) { /* 使VP去激活,并通知其他模块*/ NAS_RABM_VoicePreferSetVpStatus(VOS_FALSE); NAS_RABM_SendVpActIndToOtherModule(VOS_FALSE); } /* 当前不处于激活状态,前面已经处理,这里不再进行任何操作*/ } /* 满足初步激活条件 */ else { /*满足初步激活条件并且已经处于激活态不需要任何操作*/ if(VOS_TRUE == ulOldVpStatus) { NAS_NORMAL_LOG(WUEPS_PID_RABM, "NAS_RABM_VoicePreferActivateJudgeStepOne: VP Already Activated"); } /* 满足初步激活条件但是当前并没有处于激活状态 */ else { /* 如果延迟定时器没有启动,启动延迟定时器*/ if(NAS_RABM_TIMER_STATUS_STOP == NAS_RABM_CheckTimerStatus(RABM_TIMER_NAME_COMMON,RABM_TIMER_VOICEPREFER_DELAY)) { NAS_RabmStartTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_DELAY); /* 延迟激活定时器启动时应停止延迟查询GMM定时器 */ NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_REQRY_GMM_DELAY); NAS_RABM_VoicePreferSetStopVpFlag(VOS_FALSE); } /* 如果延迟定时器已经启动,保持原来定时器不重新启动*/ } } return; }
VOS_VOID NAS_RABM_VoicePreferDelayExpired(VOS_VOID) { /* 停止定时器 */ NAS_RabmStopTimer(RABM_TIMER_NAME_COMMON, RABM_TIMER_VOICEPREFER_DELAY); /* 定时器超时事件可能在队列中,就处理了AP 下发的停止VoicePrefer ,这种 场景不再激活VP */ if (VOS_TRUE == NAS_RABM_VoicePreferGetStopVpFlag()) { NAS_NORMAL_LOG(WUEPS_PID_RABM, "NAS_RABM_VoicePreferDelayExpired: Have Receive AP Stop VoicePrefer,So Donot Send Gmm Qry!"); return; } /* 查询是否存在GMM专有流程 */ NAS_RABM_SndGmmMmlProcStatusQryReq(RABM_VOICEPREFER_ENUM); /* 初次查询清重试查询次数*/ NAS_RABM_VoicePreferClrReQryGmmCnt(); return; }
VOS_VOID NAS_RABM_VoicePreferActivateJudgeStepTwo(VOS_VOID) { VOS_UINT32 ulVpActMatchInStepOne; ulVpActMatchInStepOne = NAS_RABM_IsVpActivateMatchInStepOne(); /* 初步激活条件不再满足不激活VP */ if (VOS_FALSE == ulVpActMatchInStepOne) { NAS_NORMAL_LOG(WUEPS_PID_RABM, "NAS_RABM_VoicePreferActivateJudgeStepTwo: ulVpActStepOne Not Matched,So Cannot Act VP"); } /* 初步激活条件仍然满足需要激活VP */ else { NAS_RABM_VoicePreferSetVpStatus(VOS_TRUE); /*给其他模块发送VP激活指示*/ NAS_RABM_SendVpActIndToOtherModule(VOS_TRUE); } return; }
VOS_UINT32 NAS_MMC_RcvLmmMmcStatusInd_SysCfg_WaitEpsConnRelInd( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { MMA_MMC_SYS_CFG_SET_REQ_STRU *pstSysCfgMsg = VOS_NULL_PTR; NAS_MMC_ENTRY_MSG_STRU *pstEntryMsg = VOS_NULL_PTR; LMM_MMC_STATUS_IND_STRU *pstLmmStatusIndMsg = VOS_NULL_PTR; NAS_MML_NET_RAT_TYPE_ENUM_UINT8 enNextRat; pstLmmStatusIndMsg = (LMM_MMC_STATUS_IND_STRU*)pstMsg; /* 获取SYSCFG状态机的入口消息信息 */ pstEntryMsg = NAS_MMC_GetCurrEntryMsg(); pstSysCfgMsg = (MMA_MMC_SYS_CFG_SET_REQ_STRU*)(pstEntryMsg->aucEntryMsgBuffer); if ( VOS_FALSE == pstLmmStatusIndMsg->bitOpConnState) { NAS_NORMAL_LOG(WUEPS_PID_MMC, "NAS_MMC_RcvLmmMmcStatusInd_SysCfg_WaitEpsConnRelInd:bitOpConnState IS VOS_FALSE"); return VOS_TRUE; } /* 更新LMM的链接状态 */ switch (pstLmmStatusIndMsg->ulConnState) { case MMC_LMM_CONN_ESTING: case MMC_LMM_CONNECTED_SIG: NAS_MML_SetEpsSigConnStatusFlg(VOS_TRUE); NAS_MML_SetEpsServiceConnStatusFlg(VOS_FALSE); break; case MMC_LMM_CONNECTED_DATA: NAS_MML_SetEpsServiceConnStatusFlg(VOS_TRUE); break; case MMC_LMM_CONN_IDLE: NAS_MML_SetEpsSigConnStatusFlg(VOS_FALSE); NAS_MML_SetEpsServiceConnStatusFlg(VOS_FALSE); break; default: break; } /* 如果存在信令连接,则继续等待 */ if (VOS_TRUE == NAS_MML_IsRrcConnExist()) { return VOS_TRUE; } /* 停止等待链接释放定时器 */ NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_EPS_CONN_REL_IND); /* 取得目标模的接入技术,并发送SYSCFG请求 */ enNextRat = NAS_MMC_GetNextSettingRat_SysCfg(); NAS_MMC_SetRatModeSysCfgReq_SysCfg(enNextRat, pstSysCfgMsg); return VOS_TRUE; }