VOS_UINT32 NAS_EMM_MsRegInitSsWtCnAttCnfMsgCnAttachReject( VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru ) { NAS_EMM_CN_ATTACH_REJ_STRU *pRcvEmmMsg; LNAS_STK_UPDATE_TYPE_ENUM_UINT8 uAttachType; (VOS_VOID)ulMsgId; pRcvEmmMsg = (NAS_EMM_CN_ATTACH_REJ_STRU *) pMsgStru; /*打印进入该函数*/ NAS_EMM_ATTACH_LOG_NORM("NAS_EMM_MsRegInitSsWtCnAttCnfMsgCnAttachReject is entered"); /*检查状态是否匹配,若不匹配,退出*/ if (NAS_EMM_AD_CHK_STAT_INVALID(EMM_MS_REG_INIT,EMM_SS_ATTACH_WAIT_CN_ATTACH_CNF)) { /*打印出错信息*/ NAS_EMM_ATTACH_LOG_WARN("NAS_EMM_MsRegInitSsWtCnAttCnfMsgCnAttachReject: STATE ERR!"); return NAS_LMM_MSG_DISCARD; } /*消息内容检查*/ if (NAS_EMM_PARA_INVALID == NAS_EMM_CnAttachRejMsgChk(pRcvEmmMsg)) { NAS_EMM_ATTACH_LOG_ERR("NAS_EMM_MsRegInitSsWtCnAttCnfMsgCnAttachReject: NAS_EMM_CN_ATTACH_REJ_STRU para err!"); return NAS_LMM_ERR_CODE_PARA_INVALID; } /*停止定时器T3410*/ NAS_LMM_StopStateTimer( TI_NAS_EMM_T3410); /*保存ATTACH拒绝原因*/ NAS_EMM_GLO_AD_GetAttRejCau() = pRcvEmmMsg->ucCause; NAS_EMM_GLO_AD_GetAttRejEsmCau() = pRcvEmmMsg->ucEsmCause; /* xiongxianghui00253310 modify for ftmerrlog begin */ #if (FEATURE_PTM == FEATURE_ON) NAS_LMM_ErrlogInfoProc(pRcvEmmMsg->ucCause); #endif /* xiongxianghui00253310 modify for ftmerrlog end */ /* 根据当前场景考虑是否修改原因值 */ NAS_LMM_AdaptRegRejCau(&NAS_EMM_GLO_AD_GetAttRejCau()); if(pRcvEmmMsg->ucBitOpMsgCon == NAS_EMM_AD_BIT_SLCT) { /*向ESM发送消息*/ NAS_EMM_EsmSendDataInd( &(pRcvEmmMsg->stMsgCon)); } switch(NAS_EMM_GLO_GetCnAttReqType()) { case MMC_LMM_ATT_TYPE_EPS_ONLY: uAttachType = LNAS_STK_UPDATE_TYPE_EPS_ATTACH; break; case MMC_LMM_ATT_TYPE_COMBINED_EPS_IMSI: uAttachType = LNAS_STK_UPDATE_TYPE_COMBINED_ATTACH; break; default: uAttachType = LNAS_STK_UPDATE_TYPE_EPS_ATTACH; break; } /*在ATTACH过程中出现rej,将rej事件报告给STK*/ NAS_EMM_SendRejEventToSTK(NAS_EMM_GLO_AD_GetAttRejCau(), uAttachType); /*判断拒绝原因值,根据不同原因值进行处理*/ NAS_EMM_RejCauseValProc(NAS_EMM_GLO_AD_GetAttRejCau()); return NAS_LMM_MSG_HANDLED; }
VOS_UINT32 NAS_EMM_MsTauInitSsWaitCNCnfMsgTAURej(VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru ) { VOS_UINT32 ulRslt = NAS_EMM_FAIL; NAS_EMM_CN_TAU_REJ_STRU *pstTAURej = NAS_EMM_NULL_PTR; /*lifuxin00253982 clear the pclint error*/ LNAS_STK_UPDATE_TYPE_ENUM_UINT8 uTauType = LNAS_STK_UPDATE_TYPE_BUTT; VOS_UINT32 ulTimerLen = NAS_EMM_NULL; (VOS_VOID)ulMsgId; /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_TAU_LOG_NORM( "Nas_Emm_MsTauInitSsWaitCNCnfMsgTAURej is entered."); /* 函数输入指针参数检查, 状态匹配检查,若不匹配,退出*/ ulRslt = NAS_EMM_TAU_CHKFSMStateMsgp(EMM_MS_TAU_INIT,EMM_SS_TAU_WAIT_CN_TAU_CNF,pMsgStru); if ( NAS_EMM_SUCC != ulRslt ) { NAS_EMM_TAU_LOG_WARN("NAS_EMM_TAUSER_CHKFSMStateMsgp ERROR !!"); return ulRslt; } /*停止T3416,删除RAND,RES*/ NAS_LMM_StopPtlTimer( TI_NAS_EMM_PTL_T3416); NAS_EMM_SecuClearRandRes(); /*调用消息处理函数*/ pstTAURej = (NAS_EMM_CN_TAU_REJ_STRU*) pMsgStru; /*保存TAU拒绝原因*/ NAS_EMM_TAU_GetEmmTauCnRejCause() = pstTAURej->ucEMMCause; /* 保存T3346定时器时长 */ if (NAS_EMM_BIT_SLCT == pstTAURej->ucBitOpT3346) { /* 此次修改仅针对GCF 9.2.3.1.20a用例修改,并未做完善,所以目前仅考虑TAU REJ是完整性保护 的场景 */ ulTimerLen = NAS_EMM_TimerValTransfer(pstTAURej->stT3346.ucUnit, pstTAURej->stT3346.ucTimerVal); NAS_LMM_ModifyPtlTimer(TI_NAS_EMM_PTL_T3346,ulTimerLen); } /* xiongxianghui00253310 modify for ftmerrlog begin */ #if (FEATURE_PTM == FEATURE_ON) NAS_EMM_TAUErrRecord(pMsgStru, EMM_OM_ERRLOG_TYPE_CN_REJ); #endif /* xiongxianghui00253310 modify for ftmerrlog end */ /* 根据当前场景考虑是否需要修改原因值 */ NAS_LMM_AdaptRegRejCau(&NAS_EMM_TAU_GetEmmTauCnRejCause()); switch(NAS_EMM_TAU_GetTAUtype()) { case NAS_EMM_CN_TAU_TYPE_TA_UPDATING: uTauType = LNAS_STK_UPDATE_TYPE_TA_UPDATEING; break; case NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_UPDATING: uTauType = LNAS_STK_UPDATE_TYPE_COMBINED_TALA_UPDATING ; break; case NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_WITH_IMSI: uTauType = LNAS_STK_UPDATE_TYPE_COMBINED_TALA_UPDATING_WITH_IMSI_ATTACH; break; case NAS_EMM_CN_TAU_TYPE_PERIODIC_UPDATING: uTauType = LNAS_STK_UPDATE_TYPE_PERIODIC_UPDATING; break; default: NAS_EMM_TAU_LOG_ERR("NAS_EMM_SendRejEventToSTK: TAU Type error!"); break; } /*当TAU rej时,将rej事件发送给STK*/ NAS_EMM_SendRejEventToSTK(NAS_EMM_TAU_GetEmmTauCnRejCause(), uTauType); NAS_EMM_TAU_RcvTAURej(NAS_EMM_TAU_GetEmmTauCnRejCause(), pstTAURej); return NAS_LMM_MSG_HANDLED; }