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_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_ProcEpsOnlyOtherCause( NAS_EMM_CN_CAUSE_ENUM_UINT8 ucRejCauseVal ) { if((NAS_LMM_CAUSE_ESM_FAILURE == ucRejCauseVal) || (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 { NAS_EMM_GLO_AD_GetAttAtmpCnt() ++; } NAS_EMM_AttProcEpsOnlyRejValueOther(); return; }
VOS_VOID NAS_EMM_ProcEpsOnlyNoCause( VOS_VOID) { NAS_EMM_ProcRejCauseVal161722(); #if 0 /*向ESM发送ATTACH结果*/ NAS_EMM_AttSendEsmResult(EMM_ESM_ATTACH_STATUS_DETACHED); NAS_EMM_GLO_AD_GetAttAtmpCnt() ++; NAS_EMM_AttProcEpsOnlyRejValueOther(); #endif return; }
VOS_VOID NAS_EMM_AttDataUpdate(VOS_UINT32 ulDeleteRplmn) { /*设置 EPS update status为EU3*/ NAS_LMM_GetMmAuxFsmAddr()->ucEmmUpStat = EMM_US_ROAMING_NOT_ALLOWED_EU3; /*删除GUTI*/ NAS_EMM_ClearGuti(); /*删除LVR TAI*/ if (NAS_EMM_DELETE_RPLMN == ulDeleteRplmn) { NAS_EMM_ClearLVRTai(); } else { NAS_EMM_SetLVRTacInvalid(); } /*删除KSIasme*/ /*NAS_EMM_ClearCurSecuCntxt();*/ NAS_EMM_ClearAllSecuCntxt(); if((NAS_LMM_CAUSE_PLMN_NOT_ALLOW == NAS_EMM_GLO_AD_GetAttRejCau()) || (NAS_LMM_CAUSE_TA_NOT_ALLOW == NAS_EMM_GLO_AD_GetAttRejCau()) || (NAS_LMM_CAUSE_ROAM_NOT_ALLOW == NAS_EMM_GLO_AD_GetAttRejCau()) || (NAS_LMM_CAUSE_EPS_SERV_NOT_ALLOW_IN_PLMN == NAS_EMM_GLO_AD_GetAttRejCau()) || (NAS_LMM_CAUSE_NO_SUITABL_CELL == NAS_EMM_GLO_AD_GetAttRejCau())) { /*清除ATTACH ATTEMPTING COUNTER计数器*/ NAS_EMM_GLO_AD_GetAttAtmpCnt() = 0; } /* 将无效的安全上下文直接在函数内部写卡 */ NAS_LMM_WriteEpsSecuContext(NAS_NV_ITEM_UPDATE); /*保存PS LOC信息*/ NAS_LMM_WritePsLoc(NAS_NV_ITEM_UPDATE); return; }