VOS_VOID NAS_EMM_MmcSendSerResultIndRej ( NAS_EMM_CN_CAUSE_ENUM_UINT8 ucCnCause ) { LMM_MMC_SERVICE_RESULT_IND_STRU *pstRsltInd = NAS_EMM_NULL_PTR; /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_SER_LOG_INFO( "NAS_EMM_MmcSendSerResultIndRej is entered."); /* 申请MMC内部消息 */ pstRsltInd = (VOS_VOID *)NAS_LMM_GetLmmMmcMsgBuf(sizeof(LMM_MMC_SERVICE_RESULT_IND_STRU)); if(NAS_EMM_NULL_PTR == pstRsltInd) { NAS_EMM_SER_LOG_ERR( "NAS_EMM_SER_SendMmcActionResultReq: MSG ALLOC ERR !!"); return; } NAS_LMM_MEM_SET(pstRsltInd, 0, sizeof(LMM_MMC_SERVICE_RESULT_IND_STRU)); /* 填充给RRC的DOPRA头 */ EMM_PUBU_COMP_MMC_MSG_HEADER( pstRsltInd, sizeof(LMM_MMC_SERVICE_RESULT_IND_STRU) - EMM_LEN_VOS_MSG_HEADER); /*填充OPID*/ /* 填充消息ID */ pstRsltInd->ulMsgId = ID_LMM_MMC_SERVICE_RESULT_IND; /* 填充消息内容----SERVCIE结果 */ pstRsltInd->ulServiceRst = MMC_LMM_SERVICE_RSLT_CN_REJ; /*填充消息内容----拒绝原因值*/ pstRsltInd->bitOpCnCause = NAS_EMM_BIT_SLCT; pstRsltInd->ucCnCause = ucCnCause; /*填充消息内容----请求类型*/ /* 如果ARBOT标识无效,则是CSFB流程,则填写请求类型 */ if (NAS_EMM_CSFB_ABORT_FLAG_VALID != NAS_EMM_SER_GetEmmSerCsfbAbortFlag()) { if (NAS_EMM_SER_START_CAUSE_MO_CSFB_REQ == NAS_EMM_SER_GetEmmSERStartCause()) { pstRsltInd->bitOpReqType = NAS_EMM_BIT_SLCT; pstRsltInd->ulReqType = MMC_LMM_SERVICE_MO_CSFB_1XCSFB; } else if (NAS_EMM_SER_START_CAUSE_MT_CSFB_REQ == NAS_EMM_SER_GetEmmSERStartCause()) { pstRsltInd->bitOpReqType = NAS_EMM_BIT_SLCT; pstRsltInd->ulReqType = MMC_LMM_SERVICR_MT_CSFB_1XCSFB; } else if (NAS_EMM_SER_START_CAUSE_MO_EMERGENCY_CSFB_REQ == NAS_EMM_SER_GetEmmSERStartCause()) { pstRsltInd->bitOpReqType = NAS_EMM_BIT_SLCT; pstRsltInd->ulReqType = MMC_LMM_SERVICR_MO_CSFB_1XCSFB_EMERGENCY; } else { /* 非CSFB类型不填写ulReqType */ } } /* 发送LMM_MMC_SERVICE_RESULT_IND消息 */ NAS_LMM_SendLmmMmcMsg( pstRsltInd); return; }
VOS_VOID NAS_EMM_MmcSendSerResultIndOtherType ( MMC_LMM_SERVICE_RSLT_ENUM_UINT32 ulSerRslt ) { LMM_MMC_SERVICE_RESULT_IND_STRU *pstRsltInd = NAS_EMM_NULL_PTR; /* 打印进入该函数*/ NAS_EMM_SER_LOG_INFO("NAS_EMM_MmcSendSerResultIndOtherType is entered."); /* 申请MMC内部消息*/ pstRsltInd = (VOS_VOID *)NAS_LMM_GetLmmMmcMsgBuf(sizeof(LMM_MMC_SERVICE_RESULT_IND_STRU)); if(NAS_EMM_NULL_PTR == pstRsltInd) { NAS_EMM_SER_LOG_ERR("NAS_EMM_MmcSendSerResultIndOtherType: MSG ALLOC ERR !!"); return; } NAS_LMM_MEM_SET(pstRsltInd, 0, sizeof(LMM_MMC_SERVICE_RESULT_IND_STRU)); /* 填充给RRC的DOPRA头 */ EMM_PUBU_COMP_MMC_MSG_HEADER( pstRsltInd, sizeof(LMM_MMC_SERVICE_RESULT_IND_STRU) - EMM_LEN_VOS_MSG_HEADER); /*填充OPID*/ /* 填充消息ID */ pstRsltInd->ulMsgId = ID_LMM_MMC_SERVICE_RESULT_IND; /* 填充消息内容----SERVCIE结果 */ if ((MMC_LMM_SERVICE_RSLT_FAILURE== ulSerRslt) || (MMC_LMM_SERVICE_RSLT_ACCESS_BARED == ulSerRslt) || (MMC_LMM_SERVICE_RSLT_AUTH_REJ == ulSerRslt)) { NAS_EMM_SER_LOG1_NORM("NAS_EMM_MmcSendSerResultIndOtherType: ulSerRslt = ", ulSerRslt); pstRsltInd->ulServiceRst = ulSerRslt; } else { NAS_EMM_SER_LOG_WARN("NAS_EMM_MmcSendSerResultIndOtherType: ulSerRslt is err! "); } /*填充消息内容----请求类型*/ /* 如果ARBOT标识无效,则是CSFB流程,则填写请求类型 */ if (NAS_EMM_CSFB_ABORT_FLAG_VALID != NAS_EMM_SER_GetEmmSerCsfbAbortFlag()) { if (NAS_EMM_SER_START_CAUSE_MO_CSFB_REQ == NAS_EMM_SER_GetEmmSERStartCause()) { pstRsltInd->bitOpReqType = NAS_EMM_BIT_SLCT; pstRsltInd->ulReqType = MMC_LMM_SERVICE_MO_CSFB_1XCSFB; } else if (NAS_EMM_SER_START_CAUSE_MT_CSFB_REQ == NAS_EMM_SER_GetEmmSERStartCause()) { pstRsltInd->bitOpReqType = NAS_EMM_BIT_SLCT; pstRsltInd->ulReqType = MMC_LMM_SERVICR_MT_CSFB_1XCSFB; } else if (NAS_EMM_SER_START_CAUSE_MO_EMERGENCY_CSFB_REQ == NAS_EMM_SER_GetEmmSERStartCause()) { pstRsltInd->bitOpReqType = NAS_EMM_BIT_SLCT; pstRsltInd->ulReqType = MMC_LMM_SERVICR_MO_CSFB_1XCSFB_EMERGENCY; } else { /* 非CSFB类型不填写ulReqType */ } } /* 发送LMM_MMC_SERVICE_RESULT_IND消息 */ NAS_LMM_SendLmmMmcMsg( pstRsltInd); return; }
VOS_VOID NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_ENUM_UINT16 enSimAuthFailValue) { LMM_MMC_SIM_AUTH_FAIL_IND_STRU *pstSimAuthFailInd = NAS_EMM_NULL_PTR; VOS_UINT32 ulCompStaOfStackBase; /*栈底状态*/ NAS_LMM_MAIN_STATE_ENUM_UINT16 enMainState; /*主状态*/ /* 打印进入该函数, INFO_LEVEL */ NAS_EMM_SECU_LOG_INFO( "NAS_EMM_SndMmcSimAuthFailInd is entered."); /* 申请DOPRA消息 */ pstSimAuthFailInd = (VOS_VOID *)NAS_LMM_GetLmmMmcMsgBuf(sizeof(LMM_MMC_SIM_AUTH_FAIL_IND_STRU)); if(NAS_EMM_NULL_PTR == pstSimAuthFailInd) { NAS_EMM_SECU_LOG_ERR( "NAS_EMM_SndMmcSimAuthFailInd: MSG ALLOC ERR !!"); return; } /* 填写DOPRA消息头 */ /*EMM_PUBU_COMP_MMC_MSG_HEADER(pstSimAuthFailInd, sizeof(LMM_MMC_SIM_AUTH_FAIL_IND_STRU) - EMM_LEN_VOS_MSG_HEADER);*/ EMM_PUBU_COMP_MMC_MSG_HEADER(pstSimAuthFailInd, NAS_EMM_GET_MSG_LENGTH_NO_HEADER(LMM_MMC_SIM_AUTH_FAIL_IND_STRU)); /* 填写消息ID标识 */ pstSimAuthFailInd->ulMsgId = ID_LMM_MMC_SIM_AUTH_FAIL_IND; pstSimAuthFailInd->enSimAuthFailValue = enSimAuthFailValue; pstSimAuthFailInd->enSrvDomain = LMM_MMC_SRV_DOMAIN_PS; enMainState = NAS_LMM_GetEmmCurFsmMS(); /*卡鉴权失败时所处service domain默认为PS,下列情况下为CS_PS*/ if ((EMM_MS_REG_INIT == enMainState && MMC_LMM_ATT_REQ_TYPE_CS_PS == NAS_EMM_GLO_GetAttReqType()) || (EMM_MS_TAU_INIT == enMainState && NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_UPDATING == NAS_EMM_TAU_GetTAUtype()) || (EMM_MS_TAU_INIT == enMainState && NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_WITH_IMSI == NAS_EMM_TAU_GetTAUtype())) { pstSimAuthFailInd->enSrvDomain = LMM_MMC_SRV_DOMAIN_CS_PS; NAS_EMM_SECU_LOG_INFO( "attach or tau state send mmc msg"); NAS_LMM_SendLmmMmcMsg((VOS_VOID*)pstSimAuthFailInd); /*NAS_LMM_SEND_MSG(pstSimAuthFailInd);*/ return; } /*如果是鉴权压栈的情况,栈底状态为attach或tau时*/ ulCompStaOfStackBase = NAS_LMM_FSM_GetStaAtStackBase(NAS_LMM_PARALLEL_FSM_EMM); if ((EMM_MS_REG_INIT == ulCompStaOfStackBase && MMC_LMM_ATT_REQ_TYPE_CS_PS == NAS_EMM_GLO_GetAttReqType()) || (EMM_MS_TAU_INIT == ulCompStaOfStackBase && NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_UPDATING == NAS_EMM_TAU_GetTAUtype()) || (EMM_MS_TAU_INIT == ulCompStaOfStackBase && NAS_EMM_CN_TAU_TYPE_COMBINED_TA_LA_WITH_IMSI == NAS_EMM_TAU_GetTAUtype())) { pstSimAuthFailInd->enSrvDomain = LMM_MMC_SRV_DOMAIN_CS_PS; NAS_EMM_SECU_LOG_INFO( "stack bottom attach or tau state send mmc msg"); NAS_LMM_SendLmmMmcMsg((VOS_VOID*)pstSimAuthFailInd); /*NAS_LMM_SEND_MSG(pstSimAuthFailInd);*/ return; } }