VOS_VOID NAS_EMM_DetProcEnterForbTA(VOS_VOID) { /* 终止DETACH流程*/ NAS_LMM_StopStateTimer( TI_NAS_EMM_T3421); /*向ESM发送ID_EMM_ESM_STATUS_IND消息*/ NAS_EMM_EsmSendStatResult( EMM_ESM_ATTACH_STATUS_DETACHED); /* lihong00150010 emergency tau&service begin */ if (VOS_TRUE == NAS_EMM_GLO_AD_GetUsimPullOutFlag()) { /*状态转换,通知MMC卡无效*/ NAS_EMM_ProcLocalNoUsim(); }/* lihong00150010 emergency tau&service end */ else { /* 状态迁移:Dereg.Limite_Service*/ NAS_EMM_AdStateConvert( EMM_MS_DEREG, EMM_SS_DEREG_LIMITED_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /* 本地DETACH*/ NAS_LMM_DeregReleaseResource(); } /*向MMC发送LMM_MMC_DETACH_CNF消息*/ NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); return; }
VOS_VOID NAS_EMM_TAU_TAUReqRejectCasue22() { /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_INFO( "NAS_EMM_TAU_TAUReqRejectCasue22 is entered."); /*设置EU2*/ NAS_LMM_GetMmAuxFsmAddr()->ucEmmUpStat = EMM_US_NOT_UPDATED_EU2; /*重置TAU计数器*/ NAS_EMM_TAU_SaveEmmTAUAttemptCnt(NAS_EMM_TAU_ATTEMPT_CNT_ZERO); /* 停止T3346定时器 */ NAS_LMM_StopPtlTimer(TI_NAS_EMM_PTL_T3346); /* 启动T3346定时器 */ NAS_LMM_StartPtlTimer(TI_NAS_EMM_PTL_T3346); /* EMM注册状态没有发生变化,不需要同时ESM注册状态 */ /*发送EMM_ESM_STATUS_IND(去注册)*/ //NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_ATTACHED); NAS_EMM_TAUSER_FSMTranState(EMM_MS_REG, EMM_SS_REG_ATTEMPTING_TO_UPDATE, TI_NAS_EMM_STATE_NO_TIMER); NAS_EMM_TAU_RelIndCollisionProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; }
VOS_VOID NAS_EMM_ProcRejCauseValOther(NAS_EMM_CN_CAUSE_ENUM_UINT8 ucRejCauseVal) { if((NAS_LMM_CAUSE_SEMANTICALLY_INCORRECT_MSG == ucRejCauseVal) || (NAS_LMM_CAUSE_INVALID_MANDATORY_INF == ucRejCauseVal) || (NAS_LMM_CAUSE_MSG_NONEXIST_NOTIMPLEMENTE == ucRejCauseVal) || (NAS_LMM_CAUSE_IE_NONEXIST_NOTIMPLEMENTED == ucRejCauseVal) || (NAS_LMM_CAUSE_PROTOCOL_ERROR == ucRejCauseVal)|| (VOS_TRUE == NAS_MML_IsRoamingRejectNoRetryFlgActived(ucRejCauseVal))) { NAS_EMM_GLO_AD_GetAttAtmpCnt() = 5; } else if(NAS_LMM_CAUSE_ESM_FAILURE == ucRejCauseVal) { /* 美国AT&T定制需求,在AT&T的PLMN上收到#19时,计数需特殊处理 */ if((NAS_EMM_YES == NAS_EMM_IsDamConfitionSatisfied()) ||(NAS_EMM_YES == NAS_EMM_GetEmmInfoRej19AtmptCntFlag())) { NAS_EMM_DamAttachRej19CountProc(); } else if(NAS_LMM_ESM_CAUSE_PDN_CONNECTION_DOES_NOT_EXIST == NAS_EMM_GLO_AD_GetAttRejEsmCau()) { /*CL multimode 当EMM原因值为#19且ESM原因值为#54时attach尝试次数加1 2014-02-14*/ /* 清除之前保存的attach原因值 */ NAS_LMM_ClearEmmInfoMmcAttachReason(); NAS_EMM_GLO_AD_GetAttAtmpCnt() ++; } else { NAS_EMM_GLO_AD_GetAttAtmpCnt() = 5; } } else { NAS_EMM_GLO_AD_GetAttAtmpCnt() ++; } if (EMM_ATTACH_CAUSE_ESM_ATTACH_FOR_INIT_EMC_BERER == NAS_EMM_GLO_AD_GetAttCau()) { /* 通知ESM紧接着EMM还要做紧急注册,ESM不需要清除动态表中的紧急PDN建立记录 */ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { /*向ESM发送ATTACH结果*/ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_DETACHED); } NAS_EMM_ProcRejCauOtherAbnormal(); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); if (EMM_ATTACH_CAUSE_ESM_EMC_ATTACH == NAS_EMM_GLO_AD_GetAttCau()) { /* 通知IMSA再尝试CS域 */ } return; }
VOS_VOID NAS_EMM_AuthCheckFail(VOS_VOID) { NAS_EMM_SECU_LOG_INFO("NAS_EMM_AuthCheckFail entered."); /* 修改状态:进入主状态EMM_MS_AUTH_INIT子状态EMM_SS_AUTH_WAIT_RRC_REL_IND */ /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_BARRED); }
VOS_VOID NAS_EMM_TAU_TAUReqRejectOtherCause ( const NAS_EMM_CN_CAUSE_ENUM_UINT8 ucTAUrejcause ) { /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_INFO( "Nas_Emm_Tau_TAUReqRejectCasueOthers is entered."); if( (NAS_LMM_CAUSE_SEMANTICALLY_INCORRECT_MSG == ucTAUrejcause)|| (NAS_LMM_CAUSE_INVALID_MANDATORY_INF == ucTAUrejcause)|| (NAS_LMM_CAUSE_MSG_NONEXIST_NOTIMPLEMENTE == ucTAUrejcause)|| (NAS_LMM_CAUSE_IE_NONEXIST_NOTIMPLEMENTED == ucTAUrejcause)|| (NAS_LMM_CAUSE_PROTOCOL_ERROR == ucTAUrejcause)|| (VOS_TRUE == NAS_MML_IsRoamingRejectNoRetryFlgActived(ucTAUrejcause))) { NAS_EMM_TAU_SaveEmmTAUAttemptCnt(NAS_EMM_TAU_ATTEMPT_CNT_MAX); } else { NAS_EMM_TAU_GetEmmTAUAttemptCnt()++; } NAS_EMM_TAU_ProcAbnormal(); /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { NAS_EMM_TAU_LOG_INFO("NAS_EMM_TAU_TAUReqRejectOtherCause:CAUSE_ESM_EMC_PDN_REQ"); NAS_EMM_EmcPndReqTauAbnormalCommProc( NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR, EMM_SS_DEREG_NORMAL_SERVICE); } else { NAS_EMM_TAU_RelIndCollisionProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR); } /* lihong00150010 emergency tau&service end */ #if 0 /* 如果启动了3402,清空TAU计数 */ if(NAS_LMM_TIMER_RUNNING == NAS_LMM_IsPtlTimerRunning(TI_NAS_EMM_PTL_T3402)) { NAS_EMM_TAU_SaveEmmTAUAttemptCnt(NAS_EMM_TAU_ATTEMPT_CNT_ZERO); } #endif /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; }
VOS_UINT32 NAS_EMM_MsDrgInitSsWtCnDetCnfMsgT3421Exp( VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru ) { /*打印进入该函数*/ NAS_EMM_DETACH_LOG2_INFO("NAS_EMM_MsDrgInitSsWtCnDetCnfMsgT3421Exp", ulMsgId, pMsgStru); /*检查状态是否匹配,若不匹配,退出*/ if (NAS_EMM_AD_CHK_STAT_INVALID(EMM_MS_DEREG_INIT,EMM_SS_DETACH_WAIT_CN_DETACH_CNF)) { /*打印出错信息*/ NAS_EMM_DETACH_LOG_WARN("NAS_EMM_MsDrgInitSsWtCnDetCnfMsgT3421Exp: STATE ERR!"); return NAS_LMM_MSG_DISCARD; } /*Detach attempt counter加1*/ NAS_EMM_GLO_AD_GetDetAtmpCnt()++; /*判断Detach attempt counter,分为小于5和大于等于5处理*/ if (NAS_EMM_GLO_AD_GetDetAtmpCnt() < 5) { /*发送DETACH REQUEST消息*/ NAS_EMM_SendDetachReqMo(); } else { NAS_EMM_DETACH_LOG_INFO("NAS_EMM_MsDrgInitSsWtCnDetCnfMsgT3421Exp 5 times"); /*向ESM发送ID_EMM_ESM_STATUS_IND消息*/ NAS_EMM_EsmSendStatResult( EMM_ESM_ATTACH_STATUS_DETACHED); /* lihong00150010 emergency tau&service begin */ if (VOS_TRUE == NAS_EMM_GLO_AD_GetUsimPullOutFlag()) { /*状态转换,通知MMC卡无效*/ NAS_EMM_ProcLocalNoUsim(); }/* lihong00150010 emergency tau&service end */ else { NAS_EMM_AdStateConvert( EMM_MS_DEREG, EMM_SS_DEREG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); } NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); } return NAS_LMM_MSG_HANDLED; }
VOS_VOID NAS_EMM_ProcRejCauseValOther(NAS_EMM_CN_CAUSE_ENUM_UINT8 ucRejCauseVal) { if((NAS_LMM_CAUSE_SEMANTICALLY_INCORRECT_MSG == ucRejCauseVal) || (NAS_LMM_CAUSE_INVALID_MANDATORY_INF == ucRejCauseVal) || (NAS_LMM_CAUSE_MSG_NONEXIST_NOTIMPLEMENTE == ucRejCauseVal) || (NAS_LMM_CAUSE_IE_NONEXIST_NOTIMPLEMENTED == ucRejCauseVal) || (NAS_LMM_CAUSE_PROTOCOL_ERROR == ucRejCauseVal)) { NAS_EMM_GLO_AD_GetAttAtmpCnt() = 5; } else if(NAS_LMM_CAUSE_ESM_FAILURE == ucRejCauseVal) { /*CL multimode 当EMM原因值为#19且ESM原因值为#54时attach尝试次数加1 2014-02-14*/ if(NAS_LMM_ESM_CAUSE_PDN_CONNECTION_DOES_NOT_EXIST == NAS_EMM_GLO_AD_GetAttRejEsmCau()) { /* 清除之前保存的attach原因值 */ NAS_LMM_ClearEmmInfoMmcAttachReason(); NAS_EMM_GLO_AD_GetAttAtmpCnt() ++; } else { NAS_EMM_GLO_AD_GetAttAtmpCnt() = 5; } } else { NAS_EMM_GLO_AD_GetAttAtmpCnt() ++; } if (EMM_ATTACH_CAUSE_ESM_ATTACH_FOR_INIT_EMC_BERER == NAS_EMM_GLO_AD_GetAttCau()) { /* 通知ESM紧接着EMM还要做紧急注册,ESM不需要清除动态表中的紧急PDN建立记录 */ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { /*向ESM发送ATTACH结果*/ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_DETACHED); } NAS_EMM_ProcRejCauOtherAbnormal(); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); if (EMM_ATTACH_CAUSE_ESM_EMC_ATTACH == NAS_EMM_GLO_AD_GetAttCau()) { /* 通知IMSA再尝试CS域 */ } return; }
VOS_VOID NAS_EMM_TAU_TAUReqRejectCasue367( ) { /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_INFO( "Nas_Emm_Tau_TAUReqRejectCasue367 is entered."); /* 删除GUTI后会自动保存EPS_LOC,所以需要先设置STATUS */ /*设置EU3 ROAMING NOT ALLOWED,并设置到NVIM中*/ NAS_LMM_GetMmAuxFsmAddr()->ucEmmUpStat = EMM_US_ROAMING_NOT_ALLOWED_EU3; /*删除GUTI,KSIasme,TAI list,GUTI*/ NAS_EMM_ClearRegInfo(NAS_EMM_DELETE_RPLMN); NAS_LMM_SetPsSimValidity(NAS_LMM_SIM_INVALID); /*USIM无效,直到关机或拔卡*/ /*暂不处理*/ /*删除equivalent PLMNs由MMC模块完成*/ /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { /* 记录ATTACH触发原因值 */ NAS_EMM_GLO_AD_GetAttCau() = EMM_ATTACH_CAUSE_ESM_ATTACH_FOR_INIT_EMC_BERER; NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_DETACHED); } /* lihong00150010 emergency tau&service end */ /*转换EMM状态机MS_DEREG+SS_DEREG_LIMITED_SERVICE*/ NAS_EMM_TAUSER_FSMTranState(EMM_MS_DEREG, EMM_SS_DEREG_NO_IMSI, TI_NAS_EMM_STATE_NO_TIMER); /****检查冲突标志并做相应的处理********************************************/ /* 上报TAU结果在冲突中处理 */ NAS_EMM_TAU_SpecialRelCauseCollisionProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR); /*向LRRC发送LRRC_LMM_NAS_INFO_CHANGE_REQ携带USIM卡状态*/ NAS_EMM_SendUsimStatusToRrc(LRRC_LNAS_USIM_PRESENT_INVALID); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; }
VOS_VOID NAS_EMM_ProcRejCauseVal3678() { NAS_EMM_AttDataUpdate(NAS_EMM_DELETE_RPLMN); NAS_LMM_SetPsSimValidity(NAS_LMM_SIM_INVALID); if (EMM_ATTACH_CAUSE_ESM_ATTACH_FOR_INIT_EMC_BERER == NAS_EMM_GLO_AD_GetAttCau()) { /* 通知ESM紧接着EMM还要做紧急注册,ESM不需要清除动态表中的紧急PDN建立记录 */ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { /*向ESM发送ATTACH结果*/ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_DETACHED); } /*修改状态:进入主状态DEREG子状态DEREG_LIMITED_SERVICE*/ NAS_EMM_AdStateConvert( EMM_MS_DEREG, EMM_SS_DEREG_NO_IMSI, TI_NAS_EMM_STATE_NO_TIMER); /* 向MMC发送结果 */ NAS_EMM_AppSendAttRej(); /*向LRRC发送LRRC_LMM_NAS_INFO_CHANGE_REQ携带USIM卡状态*/ NAS_EMM_SendUsimStatusToRrc(LRRC_LNAS_USIM_PRESENT_INVALID); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); if (EMM_ATTACH_CAUSE_ESM_EMC_ATTACH == NAS_EMM_GLO_AD_GetAttCau()) { /* 通知IMSA再尝试CS域 */ } /* 清除之前记录的attach原因值 */ NAS_LMM_ClearEmmInfoMmcAttachReason(); return; }
VOS_VOID NAS_EMM_ProcRejCauseVal5() { /*向ESM发送ATTACH结果*/ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_DETACHED); /*修改状态:进入主状态DEREG子状态DEREG_LIMITED_SERVICE*/ NAS_EMM_AdStateConvert( EMM_MS_DEREG, EMM_SS_DEREG_NO_IMSI, TI_NAS_EMM_STATE_NO_TIMER); /* 向MMC发送结果 */ NAS_EMM_AppSendAttRej(); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); /* 通知IMSA不再尝试CS域 */ return; }
/***************************************************************************** Function Name : NAS_EMM_ImsiDetProcEnterForbTA Description : REG.IMSI_DETACH_INIT状态下收到SYS_INFO,且携带禁止信息,终止DETACH 流程,释放链路 Input : None Output : None Return : VOS_UINT32 History : 1.lihong00150010 2011-10-18 Draft Enact 2.lihong00150010 2012-12-19 Modify:Emergency *****************************************************************************/ VOS_VOID NAS_EMM_ImsiDetProcEnterForbTA( VOS_VOID ) { /* 终止DETACH流程*/ NAS_LMM_StopStateTimer( TI_NAS_EMM_T3421); /* 设置注册域为PS */ NAS_LMM_SetEmmInfoRegDomain(NAS_LMM_REG_DOMAIN_PS); NAS_EMM_AdStateConvert( EMM_MS_REG, EMM_SS_REG_LIMITED_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /*向MMC发送LMM_MMC_DETACH_CNF消息*/ NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /* IMSI DETACH后释放资源 */ NAS_LMM_ImsiDetachReleaseResource(); NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); return; }
VOS_UINT32 NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgRabmRelReq ( VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru ) { NAS_EMM_DETACH_LOG2_INFO("NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgRabmRelReq", ulMsgId, pMsgStru); /*检查状态是否匹配,若不匹配,退出*/ if (NAS_EMM_AD_CHK_STAT_INVALID(EMM_MS_REG,EMM_SS_REG_IMSI_DETACH_WATI_CN_DETACH_CNF)) { /*打印出错信息*/ NAS_EMM_DETACH_LOG_WARN("NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgRabmRelReq: STATE ERR!"); return NAS_LMM_MSG_DISCARD; } /*停止定时器T3421*/ NAS_LMM_StopStateTimer( TI_NAS_EMM_T3421); /* 设置注册域为PS */ NAS_LMM_SetEmmInfoRegDomain(NAS_LMM_REG_DOMAIN_PS); NAS_EMM_AdStateConvert( EMM_MS_REG, EMM_SS_REG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /*向MMC发送LMM_MMC_DETACH_CNF消息*/ NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /* IMSI DETACH后释放资源 */ NAS_LMM_ImsiDetachReleaseResource(); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return NAS_LMM_MSG_HANDLED; }
VOS_UINT32 NAS_EMM_MsDrgInitSsWtCnDetCnfMsgAppAttachReq( VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru ) { MMC_LMM_ATTACH_REQ_STRU *pRcvEmmMsg; (VOS_VOID)(ulMsgId); pRcvEmmMsg = (MMC_LMM_ATTACH_REQ_STRU *) pMsgStru; /* 打印,*/ NAS_EMM_ATTACH_LOG_WARN("NAS_EMM_MsDrgInitSsWtCnDetCnfMsgAppAttachReq: Receive Message APP ATTACH."); /*消息内容检查,若有错,打印并退出*/ if (NAS_EMM_PARA_INVALID == NAS_EMM_AppAttachReqMsgChk(pRcvEmmMsg)) { NAS_EMM_ATTACH_LOG_ERR("NAS_EMM_MsDrgInitSsWtCnDetCnfMsgAppAttachReq: NAS_EMM_CN_ATTACH_REQ_STRU PARA ERR!"); return NAS_LMM_ERR_CODE_PARA_INVALID; } /*停止定时器T3421*/ NAS_LMM_StopStateTimer( TI_NAS_EMM_T3421); /*向ESM发送ID_EMM_ESM_STATUS_IND消息*/ NAS_EMM_EsmSendStatResult( EMM_ESM_ATTACH_STATUS_DETACHED); /*给MMC回复Detach Cnf */ NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /* lihong00150010 emergency tau&service begin */ if (VOS_TRUE == NAS_EMM_GLO_AD_GetUsimPullOutFlag()) {/* lihong00150010 emergency tau&service end */ NAS_EMM_DETACH_LOG_NORM("NAS_EMM_MsDrgInitSsWtCnDetCnfMsgAppAttachReq: No USIM"); NAS_EMM_ProcLocalNoUsim(); } else { /* 本地DETACH释放资源:动态内存、赋初值 */ NAS_LMM_DeregReleaseResource(); NAS_EMM_AdStateConvert( EMM_MS_DEREG, EMM_SS_DEREG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); } /*保存APP参数*/ NAS_EMM_SaveAppMsgPara(pRcvEmmMsg->ulMsgId,pRcvEmmMsg->ulOpId); /*重新保存用户发起ATTACH的请求类型*/ NAS_EMM_GLO_SetAttReqType(pRcvEmmMsg->ulAttachType); /*CS域的attach请求直接返回失败 */ if (MMC_LMM_ATT_REQ_TYPE_CS_ONLY == pRcvEmmMsg->ulAttachType) { NAS_EMM_MmcSendAttCnf(MMC_LMM_ATT_RSLT_FAILURE); } /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); return NAS_LMM_MSG_HANDLED; }
VOS_UINT32 NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgT3421Exp ( VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru ) { /*打印进入该函数*/ NAS_EMM_DETACH_LOG2_INFO("NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgT3421Exp", ulMsgId, pMsgStru); /*检查状态是否匹配,若不匹配,退出*/ if (NAS_EMM_AD_CHK_STAT_INVALID(EMM_MS_REG,EMM_SS_REG_IMSI_DETACH_WATI_CN_DETACH_CNF)) { /*打印出错信息*/ NAS_EMM_DETACH_LOG_WARN("NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgT3421Exp: STATE ERR!"); return NAS_LMM_MSG_DISCARD; } /*Detach attempt counter加1*/ NAS_EMM_GLO_AD_GetDetAtmpCnt()++; /*判断Detach attempt counter,分为小于5和大于等于5处理*/ if (NAS_EMM_GLO_AD_GetDetAtmpCnt() < 5) { /*发送DETACH REQUEST消息*/ NAS_EMM_SendImsiDetachReqMo(); return NAS_LMM_MSG_HANDLED; } NAS_EMM_DETACH_LOG_INFO("NAS_EMM_MsRegImsiDetachWtCnDetCnfMsgT3421Exp 5 times"); NAS_EMM_GLO_AD_GetDetAtmpCnt() = 0; /* 设置注册域为PS */ NAS_LMM_SetEmmInfoRegDomain(NAS_LMM_REG_DOMAIN_PS); /* 如果当前是数据连接态,则直接转到REG+NORMAL_SERVIC态,否则待释放RRC链路 后再转到REG+NORMAL_SERVIC态 */ if (NAS_EMM_CONN_DATA == NAS_EMM_GetConnState()) { NAS_EMM_AdStateConvert( EMM_MS_REG, EMM_SS_REG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /*向MMC发送本地LMM_MMC_DETACH_IND消息*/ NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /* IMSI DETACH后释放资源 */ NAS_LMM_ImsiDetachReleaseResource(); return NAS_LMM_MSG_HANDLED; } NAS_EMM_AdStateConvert( EMM_MS_REG, EMM_SS_REG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); return NAS_LMM_MSG_HANDLED; }
VOS_VOID NAS_EMM_MsTauInitSsWaitCnTauCnfProcMsgAuthRej( VOS_UINT32 ulCause) { MMC_LMM_TAU_RSLT_ENUM_UINT32 enTauRslt = MMC_LMM_TAU_RSLT_AUTH_REJ; (VOS_VOID)ulCause; NAS_EMM_TAU_LOG_INFO( "NAS_EMM_MsTauInitSsWaitCnTauCnfProcMsgAuthRej is entered."); /*停止定时器*/ NAS_LMM_StopStateTimer( TI_NAS_EMM_STATE_TAU_T3430); NAS_LMM_StopPtlTimer( TI_NAS_EMM_PTL_T3416); NAS_EMM_SecuClearRandRes(); /* 删除GUTI后会自动保存EPS_LOC,所以需要先设置STATUS */ /*设置EU3 ROAMING NOT ALLOWED,并设置到NVIM中*/ NAS_LMM_GetMmAuxFsmAddr()->ucEmmUpStat = EMM_US_ROAMING_NOT_ALLOWED_EU3; /*删除GUTI,KSIasme,TAI list,GUTI*/ NAS_EMM_ClearRegInfo(NAS_EMM_DELETE_RPLMN); NAS_LMM_SetPsSimValidity(NAS_LMM_SIM_INVALID); /*USIM无效,直到关机或拔卡*/ /*暂不处理*/ /*删除equivalent PLMNs由MMC模块完成*/ /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { /* 记录ATTACH触发原因值 */ NAS_EMM_GLO_AD_GetAttCau() = EMM_ATTACH_CAUSE_ESM_ATTACH_FOR_INIT_EMC_BERER; NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_DETACHED); } /* lihong00150010 emergency tau&service end */ /*转换EMM状态机MS_DEREG+SS_DEREG_LIMITED_SERVICE*/ NAS_EMM_TAUSER_FSMTranState(EMM_MS_DEREG, EMM_SS_DEREG_NO_IMSI, TI_NAS_EMM_STATE_NO_TIMER); /* 上报TAU结果在冲突处理中执行 */ /****检查冲突标志并做相应的处理********************************************/ switch(NAS_EMM_TAU_GetEmmCollisionCtrl()) { case NAS_EMM_COLLISION_DETACH : NAS_EMM_MmcSendTauActionResultIndOthertype((VOS_VOID*)&enTauRslt); NAS_EMM_TAU_CollisionDetachProc(); break; case NAS_EMM_COLLISION_SERVICE : NAS_EMM_TAU_CollisionServiceProc(NAS_EMM_MmcSendTauActionResultIndOthertype, (VOS_VOID*)&enTauRslt, NAS_EMM_TRANSFER_RAT_NOT_ALLOW); break; default : NAS_EMM_TAU_LOG_INFO( "NAS_EMM_MsTauInitSsWaitCnTauCnfProcMsgAuthRej : NO Emm Collision."); NAS_EMM_MmcSendTauActionResultIndOthertype((VOS_VOID*)&enTauRslt); break; } /*向LRRC发送LRRC_LMM_NAS_INFO_CHANGE_REQ携带USIM卡状态*/ NAS_EMM_SendUsimStatusToRrc(LRRC_LNAS_USIM_PRESENT_INVALID); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; }
VOS_VOID NAS_EMM_TAU_TAUReqRejectCasue8( ) { MMC_LMM_TAU_TYPE_ENUM_UINT32 enEmmTauType = MMC_LMM_TAU_TYPE_BUTT; /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_INFO("Nas_Emm_Tau_TAUReqRejectCasue8 is entered."); enEmmTauType = NAS_EMM_TAU_GetTAUtype(); if ((NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_UPDATING != enEmmTauType) && (NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_WITH_IMSI != enEmmTauType)) { /* 非联合TAU的处理分支 */ NAS_EMM_TAU_ProcAbnormal(); /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { NAS_EMM_TAU_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue8:CAUSE_ESM_EMC_PDN_REQ"); NAS_EMM_EmcPndReqTauAbnormalCommProc( NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR, EMM_SS_DEREG_NORMAL_SERVICE); } else { /* 上报TAU结果在冲突处理中执行 */ NAS_EMM_TAU_RelIndCollisionProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR); } /* lihong00150010 emergency tau&service end */ #if 0 /*如果启动了T3402定时器,清零TAU计数*/ if(NAS_LMM_TIMER_RUNNING == NAS_LMM_IsPtlTimerRunning(TI_NAS_EMM_PTL_T3402)) { NAS_EMM_TAU_SaveEmmTAUAttemptCnt(NAS_EMM_TAU_ATTEMPT_CNT_ZERO); } #endif /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return ; } /* 联合TAU的处理分支 */ /*设置EU3 ROAMING NOT ALLOWED,并设置到NVIM中*/ NAS_LMM_GetMmAuxFsmAddr()->ucEmmUpStat = EMM_US_ROAMING_NOT_ALLOWED_EU3; /*删除GUTI,KSIasme,TAI list,GUTI*/ NAS_EMM_ClearRegInfo(NAS_EMM_DELETE_RPLMN); NAS_LMM_SetPsSimValidity(NAS_LMM_SIM_INVALID); /*USIM无效,直到关机或拔卡*/ /*暂不处理*/ /*删除equivalent PLMNs由MMC模块完成*/ /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { /* 记录ATTACH触发原因值 */ NAS_EMM_GLO_AD_GetAttCau() = EMM_ATTACH_CAUSE_ESM_ATTACH_FOR_INIT_EMC_BERER; NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_DETACHED); } /* lihong00150010 emergency tau&service end */ /*转换EMM状态机MS_DEREG+SS_DEREG_NO_IMSI*/ NAS_EMM_TAUSER_FSMTranState(EMM_MS_DEREG, EMM_SS_DEREG_NO_IMSI, TI_NAS_EMM_STATE_NO_TIMER); /****检查冲突标志并做相应的处理********************************************/ /* 上报TAU结果在冲突中处理 */ NAS_EMM_TAU_SpecialRelCauseCollisionProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR); /*向LRRC发送LRRC_LMM_NAS_INFO_CHANGE_REQ携带USIM卡状态*/ NAS_EMM_SendUsimStatusToRrc(LRRC_LNAS_USIM_PRESENT_INVALID); /*向MRRC发送NAS_EMM_MRRC_REL_REQ消息*/ NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; }
VOS_VOID NAS_EMM_TAU_TAUReqRejectCasue40() { VOS_UINT32 ulAttachFlag = VOS_TRUE; NAS_EMM_ESM_MSG_BUFF_STRU *pstEsmMsg = NAS_EMM_NULL_PTR; NAS_EMM_TAU_LOG_INFO( "NAS_EMM_TAU_TAUReqRejectCasue40 is entered."); /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_DETACHED); } /* lihong00150010 emergency tau&service end */ /*转换EMM状态机MS_REG+SS_REG_LIMITED_SERVICE*/ NAS_EMM_TAUSER_FSMTranState(EMM_MS_DEREG, EMM_SS_DEREG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /* 上报TAU结果在冲突处理中执行 */ /****检查冲突标志并做相应的处理********************************************/ switch(NAS_EMM_TAU_GetEmmCollisionCtrl()) { case NAS_EMM_COLLISION_DETACH : NAS_EMM_MmcSendTauActionResultIndRej((VOS_VOID*)NAS_EMM_NULL_PTR); if (MMC_LMM_MO_DET_CS_ONLY != NAS_EMM_GLO_AD_GetDetTypeMo()) { NAS_EMM_DETACH_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue40:Process EPS Detach or EPS/IMSI Detach"); NAS_EMM_TAU_CollisionDetachProc(); /* 本地DETACH*/ NAS_LMM_DeregReleaseResource(); NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; } else { NAS_EMM_DETACH_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue40:Process IMSI Detach"); NAS_EMM_TAU_CollisionDetachProc(); /* IMSI DETACH后释放资源 */ NAS_LMM_ImsiDetachReleaseResource(); } break; case NAS_EMM_COLLISION_SERVICE : /* 如果是紧急CSFB,则标识不发内部ATTACH */ if(VOS_FALSE == NAS_EMM_SER_IsNotEmergencyCsfb()) { ulAttachFlag = VOS_FALSE; } NAS_EMM_TAU_CollisionServiceProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR, NAS_EMM_TRANSFER_RAT_NOT_ALLOW); break; default : NAS_EMM_TAU_LOG_INFO( "NAS_EMM_TAU_TAUReqRejectCasue40 : NO Emm Collision."); NAS_EMM_MmcSendTauActionResultIndRej((VOS_VOID*)NAS_EMM_NULL_PTR); break; } /* lihong00150010 emergency tau&service begin */ pstEsmMsg = (NAS_EMM_ESM_MSG_BUFF_STRU*)(VOS_VOID*)NAS_LMM_GetEmmInfoEsmBuffAddr(); if ((NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) && (NAS_EMM_NULL_PTR != pstEsmMsg)) { NAS_EMM_TAU_LOG_INFO("NAS_EMM_TAU_RrcRelCause_TAUREJ9: CAUSE_ESM_EMC_PDN_REQ"); /*保存ESM消息*/ /*lint -e960*/ NAS_LMM_MEM_CPY( (VOS_VOID*)NAS_EMM_GLO_AD_GetEsmMsgAddr(), &(pstEsmMsg->stEsmMsg), (pstEsmMsg->stEsmMsg.ulEsmMsgSize)+4); /*lint +e960*/ NAS_EMM_StartEmergencyAttach(); } else if (VOS_TRUE == ulAttachFlag) {/* lihong00150010 emergency tau&service end */ /* 延时发送attach请求 */ NAS_EMM_ReattachDelay(); } else { NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); } /* 清空TAU流程所有资源*/ NAS_EMM_TAU_ClearResouce(); NAS_EMM_ClearAppMsgPara(); return; }
VOS_VOID NAS_EMM_TAU_TAUReqRejectCasue9( ) { VOS_UINT32 ulAttachFlag = VOS_TRUE; NAS_EMM_ESM_MSG_BUFF_STRU *pstEsmMsg = NAS_EMM_NULL_PTR; /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_INFO("Nas_Emm_Tau_TAUReqRejectCasue9 is entered."); /* 删除GUTI后会自动保存EPS_LOC,所以需要先设置STATUS */ /*设置设置EU2 NOT UPDATED*/ NAS_LMM_GetMmAuxFsmAddr()->ucEmmUpStat = EMM_US_NOT_UPDATED_EU2; /*删除GUTI,KSIasme,TAI list,GUTI*/ NAS_EMM_ClearRegInfo(NAS_EMM_NOT_DELETE_RPLMN); /*删除equivalent PLMNs由MMC模块完成*/ /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_DETACHED); } /* lihong00150010 emergency tau&service end */ /*转换EMM状态机MS_DEREG+SS_DEREG_NORMAL_SERVICE*/ NAS_EMM_TAUSER_FSMTranState(EMM_MS_DEREG, EMM_SS_DEREG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /****检查冲突标志并做相应的处理********************************************/ switch(NAS_EMM_TAU_GetEmmCollisionCtrl()) { case NAS_EMM_COLLISION_DETACH : NAS_EMM_MmcSendTauActionResultIndRej((VOS_VOID*)NAS_EMM_NULL_PTR); NAS_EMM_TAU_CollisionDetachProc(); if (MMC_LMM_MO_DET_CS_ONLY != NAS_EMM_GLO_AD_GetDetTypeMo()) { NAS_EMM_DETACH_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue9:Process EPS/Combined Detach"); /* 本地DETACH*/ NAS_LMM_DeregReleaseResource(); NAS_EMM_RelReq( NAS_LMM_NOT_BARRED); return; } NAS_EMM_DETACH_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue9:Process IMSI Detach"); /* IMSI DETACH后释放资源 */ NAS_LMM_ImsiDetachReleaseResource(); break; case NAS_EMM_COLLISION_SERVICE : /* 如果是紧急CSFB,则标识不发内部ATTACH */ if(VOS_FALSE == NAS_EMM_SER_IsNotEmergencyCsfb()) { ulAttachFlag = VOS_FALSE; } NAS_EMM_TAU_CollisionServiceProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR, NAS_EMM_TRANSFER_RAT_NOT_ALLOW); break; default : NAS_EMM_TAU_LOG_INFO( "NAS_EMM_TAU_RrcRelCause_TAUREJ9 : NO Emm Collision."); NAS_EMM_MmcSendTauActionResultIndRej((VOS_VOID*)NAS_EMM_NULL_PTR); break; } /* lihong00150010 emergency tau&service begin */ pstEsmMsg = (NAS_EMM_ESM_MSG_BUFF_STRU*)(VOS_VOID*)NAS_LMM_GetEmmInfoEsmBuffAddr(); if ((NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) && (NAS_EMM_NULL_PTR != pstEsmMsg)) { NAS_EMM_TAU_LOG_INFO("NAS_EMM_TAU_RrcRelCause_TAUREJ9: CAUSE_ESM_EMC_PDN_REQ"); /*保存ESM消息*/ /*lint -e960*/ NAS_LMM_MEM_CPY( (VOS_VOID*)NAS_EMM_GLO_AD_GetEsmMsgAddr(), &(pstEsmMsg->stEsmMsg), (pstEsmMsg->stEsmMsg.ulEsmMsgSize)+4); /*lint +e960*/ NAS_EMM_StartEmergencyAttach(); } else if(VOS_TRUE == ulAttachFlag) {/* lihong00150010 emergency tau&service end */ /* 延时发送attach请求 */ NAS_EMM_ReattachDelay(); } else { NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); } /* 清空TAU流程所有资源*/ NAS_EMM_TAU_ClearResouce(); NAS_EMM_ClearAppMsgPara(); return; }
VOS_VOID NAS_EMM_TAU_TAUReqRejectCasue10(VOS_VOID) { VOS_UINT32 ulAttachFlag = VOS_TRUE; NAS_EMM_ESM_MSG_BUFF_STRU *pstEsmMsg = NAS_EMM_NULL_PTR; /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_INFO( "Nas_Emm_Tau_TAUReqRejectCasue10 is entered."); /* lihong00150010 emergency tau&service begin */ if (NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_EMC_ATTACHING); } else { NAS_EMM_TAU_SendEsmStatusInd(EMM_ESM_ATTACH_STATUS_DETACHED); } /* lihong00150010 emergency tau&service end */ /* 状态迁移Dereg.Normal_Service,发送INTRA_ATTACH_REQ消息*/ NAS_EMM_TAUSER_FSMTranState(EMM_MS_DEREG, EMM_SS_DEREG_NORMAL_SERVICE, TI_NAS_EMM_STATE_NO_TIMER); /* 进入DEREG态不再写统一写安全上下文,参照标杆,在TAU被#10拒绝,将安全上下文写卡 */ NAS_LMM_WriteEpsSecuContext(NAS_NV_ITEM_UPDATE); switch(NAS_EMM_TAU_GetEmmCollisionCtrl()) { case NAS_EMM_COLLISION_DETACH: /* 向MMC报TAU结果需在DETACH结果上报前 */ NAS_EMM_MmcSendTauActionResultIndRej((VOS_VOID*)NAS_EMM_NULL_PTR); NAS_EMM_TAU_CollisionDetachProc(); if (MMC_LMM_MO_DET_CS_ONLY != NAS_EMM_GLO_AD_GetDetTypeMo()) { NAS_EMM_DETACH_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue10:Process EPS Detach or EPS/IMSI Detach"); /* 本地DETACH*/ NAS_LMM_DeregReleaseResource(); NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); return; } NAS_EMM_DETACH_LOG_INFO("NAS_EMM_TAU_TAUReqRejectCasue10:Process IMSI Detach"); /* IMSI DETACH后释放资源 */ NAS_LMM_ImsiDetachReleaseResource(); break; case NAS_EMM_COLLISION_SERVICE: /* 如果是紧急CSFB,则标识不发内部ATTACH */ if(VOS_FALSE == NAS_EMM_SER_IsNotEmergencyCsfb()) { ulAttachFlag = VOS_FALSE; } /* 上报TAU结果在SER冲突处理中执行 */ NAS_EMM_TAU_CollisionServiceProc(NAS_EMM_MmcSendTauActionResultIndRej, (VOS_VOID*)NAS_EMM_NULL_PTR, NAS_EMM_TRANSFER_RAT_NOT_ALLOW); break; default: NAS_EMM_MmcSendTauActionResultIndRej((VOS_VOID*)NAS_EMM_NULL_PTR); break; } /* lihong00150010 emergency tau&service begin */ pstEsmMsg = (NAS_EMM_ESM_MSG_BUFF_STRU*)(VOS_VOID*)NAS_LMM_GetEmmInfoEsmBuffAddr(); if ((NAS_EMM_TAU_START_CAUSE_ESM_EMC_PDN_REQ == NAS_EMM_TAU_GetEmmTAUStartCause()) && (NAS_EMM_NULL_PTR != pstEsmMsg)) { NAS_EMM_TAU_LOG_INFO("NAS_EMM_TAU_RrcRelCause_TAUREJ9: CAUSE_ESM_EMC_PDN_REQ"); /*保存ESM消息*/ /*lint -e960*/ NAS_LMM_MEM_CPY( (VOS_VOID*)NAS_EMM_GLO_AD_GetEsmMsgAddr(), &(pstEsmMsg->stEsmMsg), (pstEsmMsg->stEsmMsg.ulEsmMsgSize)+4); /*lint +e960*/ NAS_EMM_StartEmergencyAttach(); } else if(VOS_TRUE == ulAttachFlag) {/* lihong00150010 emergency tau&service end */ /* 延时发送attach请求 */ NAS_EMM_ReattachDelay(); } else { NAS_EMM_RelReq(NAS_LMM_NOT_BARRED); } /* 清空TAU和APP资源*/ NAS_EMM_TAU_ClearResouce(); NAS_EMM_ClearAppMsgPara(); return; }