VOS_UINT32 NAS_MMC_RcvLmmResumeInd_InterSysHo_WaitAsResumeInd( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { RRMM_RESUME_IND_ST stResumeIndMsg; /* 停止TI_NAS_MMC_WAIT_AS_RESUME_IND */ NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_AS_RESUME_IND); /* 设置当前网络为LTE */ NAS_MML_SetCurrNetRatType(NAS_MML_NET_RAT_TYPE_LTE); /* 由于L的RESUME_IND消息不包含CS,PSresume结果,此时按照恢复成功生成RESUME消息 */ NAS_MMC_BulidResumeMsg(NAS_MML_NET_RAT_TYPE_LTE ,&stResumeIndMsg); /* 将resume 的结果包含在GMM_MMC_RESUME_INd 消息中,并向GMM发送 */ NAS_MMC_SndGmmResumeInd_Handover(&stResumeIndMsg, VOS_FALSE); NAS_MMC_SetResumeRspFlag_InterSysHo(NAS_MMC_GMM_RESUME_RSP_FLG); NAS_MMC_SetPsSigExistFlag_InterSysHo(VOS_FALSE); /* 将resume 的结果包含在MM_MMC_RESUME_IND消息中,并向MM发送:NAS_MMC_SndMmResumeInd */ NAS_MMC_SndMmResumeInd_Handover(&stResumeIndMsg, VOS_FALSE); NAS_MMC_SetResumeRspFlag_InterSysHo(NAS_MMC_MM_RESUME_RSP_FLG); NAS_MMC_SetCsSigExistFlag_InterSysHo(VOS_FALSE); /* 迁入到NAS_MMC_INTER_SYS_HO_STA_WAIT_MM_RESUME_RSP状态 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_INTER_SYS_HO_STA_WAIT_MM_RESUME_RSP); /* 启动定时器TI_NAS_MMC_WAIT_MM_RESUME_RSP */ NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_MM_RESUME_RSP, TI_NAS_MMC_WAIT_MM_RESUME_RSP_LEN); return VOS_TRUE; }
VOS_UINT32 NAS_MMC_RcvGasResumeInd_InterSysHo_WaitAsResumeInd( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { RRMM_RESUME_IND_ST *pstResumeIndMsg = VOS_NULL_PTR; NAS_MML_NET_RAT_TYPE_ENUM_UINT8 enOldNtType; /* 停止MMC_WAIT_AS_RESUME_IND_TIMER */ NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_AS_RESUME_IND); if ( NAS_MML_NET_RAT_TYPE_GSM != NAS_MML_GetCurrNetRatType()) { /* 清除小区信息以及信号量 */ NAS_MML_InitRssiValue(NAS_MML_GetCampCellInfo()); } NAS_MML_SetCurrNetRatType(NAS_MML_NET_RAT_TYPE_GSM); /* 生成RESUME消息 */ pstResumeIndMsg = (RRMM_RESUME_IND_ST *)pstMsg; enOldNtType = NAS_MMC_GetSuspendOrigenRatType(NAS_MMC_GetCurrEntryMsg()); /* GU之间的切换,CS信令连接存在 */ if (NAS_MML_NET_RAT_TYPE_WCDMA == enOldNtType) { NAS_MMC_SetCsSigExistFlag_InterSysHo(VOS_TRUE); } /* 将resume 的结果包含在GMM_MMC_RESUME_INd 消息中,并向GMM发送 */ NAS_MMC_SndMmResumeInd_Handover(pstResumeIndMsg, NAS_MMC_GetCsSigExistFlag_InterSysHo()); NAS_MMC_SetResumeRspFlag_InterSysHo(NAS_MMC_GMM_RESUME_RSP_FLG); NAS_MMC_SetCsSigExistFlag_InterSysHo(VOS_FALSE); /* 将resume 的结果包含在MM_MMC_RESUME_IND消息中,并向MM发送 */ NAS_MMC_SndGmmResumeInd_Handover(pstResumeIndMsg, NAS_MMC_GetPsSigExistFlag_InterSysHo()); NAS_MMC_SetResumeRspFlag_InterSysHo(NAS_MMC_MM_RESUME_RSP_FLG); NAS_MMC_SetPsSigExistFlag_InterSysHo(VOS_FALSE); /* 迁入到NAS_MMC_INTER_SYS_HO_STA_WAIT_MM_RESUME_RSP状态 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_INTER_SYS_HO_STA_WAIT_MM_RESUME_RSP); NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_MM_RESUME_RSP, TI_NAS_MMC_WAIT_MM_RESUME_RSP_LEN); return VOS_TRUE; }
VOS_UINT32 NAS_MMC_RcvRrMmRelInd_InterSysHo_WaitAsResumeInd( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { RRMM_REL_IND_STRU *pstRelInd = VOS_NULL_PTR; RRMM_RESUME_IND_ST stResumeIndMsg; pstRelInd = (RRMM_REL_IND_STRU*)pstMsg; /* 释放原因为Utran release时,需要继续HO流程,继续等待resume ind, 其它认为流程结束,代表WAS恢复,即等同WAS发送了resume ind,但连接已不存在 */ if (RRC_REL_CAUSE_UTRAN_RELEASE == pstRelInd->ulRelCause) { return VOS_TRUE; } if ( NAS_MML_NET_RAT_TYPE_WCDMA != NAS_MML_GetCurrNetRatType()) { /* 清除小区信息以及信号量 */ NAS_MML_InitRssiValue(NAS_MML_GetCampCellInfo()); } NAS_MML_SetCurrNetRatType(NAS_MML_NET_RAT_TYPE_WCDMA); /* 停止MMC_WAIT_AS_RESUME_IND_TIMER */ NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_AS_RESUME_IND); /* 将resume 的结果包含在GMM_MMC_RESUME_INd 消息中,并向GMM发送 */ PS_MEM_SET(&stResumeIndMsg, 0x0, sizeof(stResumeIndMsg)); NAS_MMC_SndMmResumeInd_Handover(&stResumeIndMsg, NAS_MMC_GetCsSigExistFlag_InterSysHo()); NAS_MMC_SetResumeRspFlag_InterSysHo(NAS_MMC_GMM_RESUME_RSP_FLG); NAS_MMC_SetCsSigExistFlag_InterSysHo(VOS_FALSE); /* 将resume 的结果包含在MM_MMC_RESUME_IND消息中,并向MM发送 */ NAS_MMC_SndGmmResumeInd_Handover(&stResumeIndMsg, NAS_MMC_GetPsSigExistFlag_InterSysHo()); NAS_MMC_SetResumeRspFlag_InterSysHo(NAS_MMC_MM_RESUME_RSP_FLG); NAS_MMC_SetPsSigExistFlag_InterSysHo(VOS_FALSE); /* 迁入到NAS_MMC_INTER_SYS_HO_STA_WAIT_MM_RESUME_RSP状态 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_INTER_SYS_HO_STA_WAIT_MM_RESUME_RSP); NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_MM_RESUME_RSP, TI_NAS_MMC_WAIT_MM_RESUME_RSP_LEN); return VOS_TRUE; }
VOS_UINT32 NAS_MMC_RcvWasResumeInd_InterSysOos_WaitWasSuspendRelCnf( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { /* 对冲场景的处理:刚给接入层发过RRMM_SUSPEND_REL_REQ就收到接入层的RRMM_RESUME_IND 按照收到RRMM_RESUME_IND消息处理,后续收到RRMM_SUSPEND_REL_CNF丢弃 */ RRMM_RESUME_IND_ST *pstResumeIndMsg = VOS_NULL_PTR; /* 停止MMC_WAIT_AS_RESUME_IND_TIMER */ NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_AS_RESUME_IND); if ( NAS_MML_NET_RAT_TYPE_WCDMA != NAS_MML_GetCurrNetRatType()) { /* 清除小区信息以及信号量 */ NAS_MML_InitRssiValue(NAS_MML_GetCampCellInfo()); } NAS_MML_SetCurrNetRatType(NAS_MML_NET_RAT_TYPE_WCDMA); /* 生成RESUME消息 */ pstResumeIndMsg = (RRMM_RESUME_IND_ST *)pstMsg; /* 将resume 的结果包含在GMM_MMC_RESUME_INd 消息中,并向GMM发送 */ NAS_MMC_SndGmmResumeInd(pstResumeIndMsg); NAS_MMC_SetResumeRspFlag_InterSysOos(NAS_MMC_GMM_RESUME_RSP_FLG); /* 将resume 的结果包含在MM_MMC_RESUME_IND消息中,并向MM发送 */ NAS_MMC_SndMmResumeInd(pstResumeIndMsg); NAS_MMC_SetResumeRspFlag_InterSysOos(NAS_MMC_MM_RESUME_RSP_FLG); /* 迁入到NAS_MMC_INTER_SYS_OOS_STA_WAIT_MM_RESUME_RSP状态 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_INTER_SYS_OOS_STA_WAIT_MM_RESUME_RSP); NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_MM_RESUME_RSP, TI_NAS_MMC_WAIT_MM_RESUME_RSP_LEN); return VOS_TRUE; }
VOS_UINT32 NAS_MMC_RcvRrMmRelInd_InterSysOos_WaitAsResumeInd( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { RRMM_RESUME_IND_ST stResumeIndMsg; /* 无需判断原因值 */ /* 停止TI_NAS_MMC_WAIT_AS_RESUME_IND */ NAS_MMC_StopTimer(TI_NAS_MMC_WAIT_AS_RESUME_IND); if ( NAS_MML_NET_RAT_TYPE_WCDMA != NAS_MML_GetCurrNetRatType()) { /* 清除小区信息以及信号量 */ NAS_MML_InitRssiValue(NAS_MML_GetCampCellInfo()); } NAS_MML_SetCurrNetRatType(NAS_MML_NET_RAT_TYPE_WCDMA); /* 生成RESUME消息 */ NAS_MMC_BulidResumeMsg(NAS_MML_GetCurrNetRatType(), &stResumeIndMsg); /* 将resume 的结果包含在GMM_MMC_RESUME_INd 消息中,并向GMM发送 */ NAS_MMC_SndGmmResumeInd(&stResumeIndMsg); NAS_MMC_SetResumeRspFlag_InterSysOos(NAS_MMC_GMM_RESUME_RSP_FLG); NAS_MMC_SndMmResumeInd(&stResumeIndMsg); NAS_MMC_SetResumeRspFlag_InterSysOos(NAS_MMC_MM_RESUME_RSP_FLG); /* 迁入到NAS_MMC_INTER_SYS_OOS_STA_WAIT_MM_RESUME_RSP状态 */ NAS_MMC_FSM_SetCurrState(NAS_MMC_INTER_SYS_OOS_STA_WAIT_MM_RESUME_RSP); NAS_MMC_StartTimer(TI_NAS_MMC_WAIT_MM_RESUME_RSP, TI_NAS_MMC_WAIT_MM_RESUME_RSP_LEN); return VOS_TRUE; }