VOS_UINT32 NAS_EMM_AnyStateMsgGtReCmd(VOS_UINT32 ulMsgId, VOS_VOID *pMsgStru) { NAS_EMM_GUTI_REALLOCATION_CMD_STRU *pstGutiCmdMsg = NAS_EMM_NULL_PTR; NAS_EMM_GUTI_STRU *pstGuti; VOS_UINT32 ulRst; (VOS_VOID)ulMsgId; /*解析消息,获取网侧发来的GUTI*/ pstGutiCmdMsg = (NAS_EMM_GUTI_REALLOCATION_CMD_STRU *)pMsgStru; pstGuti = (NAS_EMM_GUTI_STRU *) &pstGutiCmdMsg->stGuti; /*更新全局变量GUTI*/ NAS_LMM_MEM_CPY_S( NAS_LMM_GetEmmInfoUeidGutiAddr(), sizeof(NAS_LMM_GUTI_STRU), pstGuti, sizeof(NAS_LMM_GUTI_STRU)); NAS_LMM_GetEmmInfoUeidAddr()->bitOpGuti = NAS_EMM_BIT_SLCT; /*如果更新了Tai List,存储最新Tai List */ if(VOS_TRUE == pstGutiCmdMsg->ucBitOpTaiList) { if(NAS_LMM_SUCC == NAS_EMM_TaiListSet(&pstGutiCmdMsg->stTaiList)) { NAS_EMM_GUTI_NORMAL_LOG("NAS_EMM_AnyStateMsgGtReCmd: TaiList update is success!"); TLPS_PRINT2LAYER_INFO(NAS_EMM_AnyStateMsgGtReCmd_ENUM,LNAS_SUCC); /*保存新的TAI List的同时更新ForbTA for Roaming和ForbTA for RPOS*/ NAS_EMMC_UpdateForbTaList(); } else { NAS_EMM_GUTI_ERROR_LOG("NAS_EMM_AnyStateMsgGtReCmd: TaiList update is fail!"); TLPS_PRINT2LAYER_ERROR(NAS_EMM_AnyStateMsgGtReCmd_ENUM,LNAS_FAIL); } } /* 判断没有放到函数NAS_LMM_WritePsLoc中来做,是由于紧急注册被拒或者尝试 次数达到5次时还是要删除参数 ,协议只规定是紧急注册成功后才不写卡或者 NV项 */ if ((NAS_LMM_REG_STATUS_EMC_REGING != NAS_LMM_GetEmmInfoRegStatus()) && (NAS_LMM_REG_STATUS_EMC_REGED != NAS_LMM_GetEmmInfoRegStatus())) { /*保存PS LOC信息*/ /*存储最新guti,last Ta,update state */ NAS_LMM_WritePsLoc(NAS_NV_ITEM_UPDATE); } /*发出内部消息MRRC_DATA_REQ,携带GUTI REALLOCAITON CMPL*/ ulRst = NAS_EMM_GutiMrrcDataReq(); if(NAS_EMM_OK != ulRst) { NAS_EMM_GUTI_ERROR_LOG("NAS_EMM_AnyStateMsgGtReCmd: NAS_EMM_GutiMrrcDataReq err!"); TLPS_PRINT2LAYER_ERROR(NAS_EMM_AnyStateMsgGtReCmd_ENUM,LNAS_ERROR); } return NAS_LMM_MSG_HANDLED; }
/***************************************************************************** Function Name : NAS_EMM_SaveAttachAcpIe Description : 存储ATTACH ACCPET中携带的信元 Input : pMsgStru------------ATTACH ACCEPT消息指针 Output : None Return : VOS_VOID History : 1.lihong00150010 2012-02-27 Draft Enact *****************************************************************************/ VOS_VOID NAS_EMM_SaveAttachAcpIe ( VOS_VOID *pMsgStru ) { NAS_EMM_CN_ATTACH_ACP_STRU *pRcvEmmMsg = VOS_NULL_PTR; VOS_UINT32 ulTimerLen = NAS_EMM_NULL; pRcvEmmMsg = (NAS_EMM_CN_ATTACH_ACP_STRU *)pMsgStru; /*保存ATTACH结果*/ NAS_EMM_GLO_AD_SetAttRslt(pRcvEmmMsg->ucAttachRst); /*保存T3412 VALUE*/ ulTimerLen = NAS_EMM_TimerValTransfer(pRcvEmmMsg->stT3412Value.ucUnit, pRcvEmmMsg->stT3412Value.ucTimerVal); NAS_LMM_ModifyPtlTimer(TI_NAS_EMM_PTL_T3412,ulTimerLen); /*保存TAI LIST*/ NAS_LMM_MEM_CPY( NAS_EMM_GLO_AD_GetTaiListAddr(), &(pRcvEmmMsg->stTaiList), sizeof(NAS_EMM_TA_LIST_STRU)); /*保存新的TAI List的同时更新ForbTA for Roaming和ForbTA for RPOS*/ NAS_EMMC_UpdateForbTaList(); /*向ESM发送ACTIVATE DEFAULT EPS BEARER REQUEST消息*/ NAS_EMM_EsmSendDataInd( &(pRcvEmmMsg->stMsgCon)); /* ATTACH ACP携带GUTI,更新GUTI到EMM的全局变量中*/ if(NAS_EMM_BIT_SLCT == pRcvEmmMsg->ucBitOpGuti) { NAS_EMM_SetGuti(&(pRcvEmmMsg->stGuti)); } /* Location area identification,MS identity,EMM cause,EPLMNS收到ATTACH ACCEPT保存, 发出ATTACH COMPLETE或后续ATTACH失败从本地保存的读取,携带给MMC */ NAS_EMM_AttSetLai(pMsgStru); NAS_EMM_AttSetEplms(pMsgStru); NAS_EMM_AttSetMsId(pMsgStru); if(pRcvEmmMsg->ucBitOpEmmCau == NAS_EMM_AD_BIT_SLCT) { NAS_EMM_GLO_AD_OP_GetEmmCau() = NAS_EMM_AD_BIT_SLCT; NAS_EMM_GLO_AD_GetEmmCau() = pRcvEmmMsg->ucEMMCause; } else { NAS_EMM_GLO_AD_OP_GetEmmCau() = NAS_EMM_AD_BIT_NO_SLCT; NAS_EMM_GLO_AD_GetEmmCau() = 0; } /*ATTACH ACP携带T3402,修改定时器时长*/ if(pRcvEmmMsg->ucBitOpT3402 == NAS_EMM_AD_BIT_SLCT) { ulTimerLen = NAS_EMM_TimerValTransfer(pRcvEmmMsg->stT3402Value.ucUnit, pRcvEmmMsg->stT3402Value.ucTimerVal); NAS_LMM_ModifyPtlTimer(TI_NAS_EMM_PTL_T3402,ulTimerLen); } else { /*如果ATTACH ACP消息中不携带T3402信元,则恢复默认值12min*/ NAS_LMM_ModifyPtlTimer(TI_NAS_EMM_PTL_T3402,NAS_LMM_TIMER_T3402_LEN); } /*leili modify for isr begin*/ /*ATTACH ACP携带T3423,修改定时器时长*/ if(pRcvEmmMsg->ucBitOpT3423 == NAS_EMM_AD_BIT_SLCT) { ulTimerLen = NAS_EMM_TimerValTransfer(pRcvEmmMsg->stT3423Value.ucUnit, pRcvEmmMsg->stT3423Value.ucTimerVal); NAS_LMM_ModifyPtlTimer(TI_NAS_EMM_PTL_T3423,ulTimerLen); } else { /*如果ATTACH ACP消息中不携带T3423信元,则恢复默认值为T3412时长*/ NAS_LMM_GetPtlTimerLen(TI_NAS_EMM_PTL_T3412, &ulTimerLen); NAS_LMM_ModifyPtlTimer(TI_NAS_EMM_PTL_T3423,ulTimerLen); } /*leili modify for isr end*/ /*更新Emergency number list到全局变量中*/ NAS_EMM_SetEmergencyList( pRcvEmmMsg->ucBitOpEmergencyList, &(pRcvEmmMsg->stEmergencyNumList)); /*更新EPS network feature support到全局变量中*/ NAS_EMM_SetEpsNetFeature( pRcvEmmMsg->ucBitOpEpsNetFeature, pRcvEmmMsg->ucEpsNetFeature); /*更新Additional update result到全局变量中*/ if(EMM_ATTACH_RST_PS == pRcvEmmMsg->ucAttachRst) { /* 仅EPS ONLY成功 则ulAdditionUpRslt保存为NAS_LMM_ADDITIONAL_UPDATE_NOT_ATTACHED */ NAS_EMM_SetAddUpdateRslt(NAS_EMM_BIT_SLCT, NAS_LMM_ADDITIONAL_UPDATE_NOT_ATTACHED); } else { NAS_EMM_SetAddUpdateRslt( pRcvEmmMsg->ucBitOpAdditionalUpRslt, pRcvEmmMsg->ulAdditionUpRslt); } /* lihong00150010 ims begin */ /* 通知MMC紧急呼号码列表,网侧是否支持IMS VOICE和紧急呼,以及LTE的CS域能力 */ /* NAS_EMM_SendGmmInfoChangeNotify(); */ NAS_EMM_SendMmcInfoChangeNotify(); /*NAS_EMM_SendMmInfoChangeNotify();*/ /* lihong00150010 ims end */ }