VOS_VOID NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_ENUM_UINT32 ulAppRslt ) { if (VOS_OK == NAS_EMM_CheckAppMsgPara(ID_MMC_LMM_DETACH_REQ)) { NAS_EMM_DETACH_LOG_NORM("NAS_EMM_SendDetRslt: Send LMM_MMC_DETACH_CNF"); NAS_EMM_AppSendDetCnf(ulAppRslt); } else { NAS_EMM_MmcSendDetIndLocal(MMC_LMM_L_LOCAL_DETACH_OTHERS); } }
/*lint -e961*/ VOS_VOID NAS_EMM_DetachInit() { NAS_EMM_DETACH_LOG_NORM("NAS_EMM_DetachInit START INIT..."); /* 初始化 detach全局变量 */ NAS_LMM_MEM_SET(&g_stEmmDetCtrl, 0, sizeof(g_stEmmDetCtrl)); NAS_EMM_GLO_AD_GetDetTypeMo() = MMC_LMM_MO_DET_PS_ONLY; /*初始化 UE 发起 detach 的默认类型*/ NAS_EMM_GLO_AD_GetDetMode() = NAS_EMM_DETACH_MODE_NOT_SWITCH_OFF; return; }
VOS_VOID NAS_EMM_MsDrgInitSsWtCnDetCnfProcMsgRrcRelInd( VOS_UINT32 ulCause) { /*打印进入该函数*/ NAS_EMM_DETACH_LOG_INFO("NAS_EMM_MsDrgInitSsWtCnDetCnfProcMsgRrcRelInd is entered"); (VOS_VOID)( ulCause); /*停止定时器T3421*/ 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()) {/* lihong00150010 emergency tau&service end */ NAS_EMM_DETACH_LOG_NORM("NAS_EMM_MsDrgInitSsWtCnDetCnfProcMsgRrcRelInd: No USIM"); NAS_EMM_ProcLocalNoUsim(); NAS_EMM_SendDetRslt(MMC_LMM_DETACH_RSLT_SUCCESS); /*send INTRA_CONN2IDLE_REQ,更新连接状态*/ NAS_EMM_CommProcConn2Ilde(); return; } /* 有卡,不区分释放原因值,完成本地DETACH*/ /*修改状态:进入主状态DEREG子状态DEREG_NORMAL_SERVICE*/ 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); /* 本地DETACH释放资源:动态内存、赋初值 */ NAS_LMM_DeregReleaseResource(); /*send INTRA_CONN2IDLE_REQ,更新连接状态*/ NAS_EMM_CommProcConn2Ilde(); return; }
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; }