/***************************************************************************** Function Name : NAS_LMM_FSM_PopStackCombine() Discription : 出栈综合操作,包括3个操作: 状态出栈, 定时器出栈, 全局变量出栈, 目前只有启动MRRC的RRC连接建立和释放两个过程涉及此操作, 后续鉴权过程会涉及到; Input : 并行状态机ID, UE1.0中固定填NAS_LMM_PARALLEL_FSM_EMM Output : None Return : None History: 1. hanlufeng 41410 Draft Enact *****************************************************************************/ VOS_VOID NAS_LMM_FSM_PopStackCombine( NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId) { /* 入口检查 */ if ( NAS_LMM_PARA_FSM_ID_INVALID(enParalFsmId)) { NAS_LMM_PUBM_LOG1_ERR("RRC_FSM_BeginProcess, FsmId error, FsmId", enParalFsmId); return; } /***************出栈前环境打印操作***************/ #if 0 /* 打印出栈前的状态 */ NAS_LMM_PrintFsmState(enParalFsmId); /* 打印当前状态涉及到的定时器状态 */ NAS_LMM_PrintFsmTimer(enParalFsmId); #endif /* 打印当前状态涉及到的全局变量的值 */ /***************出栈操作***************/ /* 状态机出栈操作 */ NAS_LMM_FSM_PopState(enParalFsmId); /* 定时器状态出栈*/ NAS_LMM_FSM_PopTimer(enParalFsmId); /* 相关全局变量出栈*/ NAS_LMM_FSM_PopGlobPar(); /***************出栈后环境打印操作***************/ NAS_LMM_PUBM_LOG_NORM("======================================================================================"); NAS_LMM_PUBM_LOG_NORM("======NAS_EMM Pop State To:======"); /* 打印当前状态 */ NAS_LMM_PrintFsmState(enParalFsmId); NAS_LMM_PUBM_LOG_NORM("======================================================================================"); /* 打印当前状态涉及到的定时器状态 */ /* NAS_LMM_PrintFsmTimer(enParalFsmId); */ /* 打印当前状态涉及到的全局变量的值 */ return; }
VOS_VOID NAS_LMM_FSM_ClearStackCombine( NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId) { /* 入口检查 */ if ( NAS_LMM_PARA_FSM_ID_INVALID(enParalFsmId)) { NAS_LMM_PUBM_LOG1_ERR("RRC_FSM_BeginProcess, FsmId error, FsmId", enParalFsmId); return; } /***************出栈前环境打印操作***************/ /* 打印出栈前的状态 */ NAS_LMM_PrintFsmState(enParalFsmId); /* 打印当前状态涉及到的定时器状态 */ NAS_LMM_PrintFsmTimer(enParalFsmId); /* 打印当前状态涉及到的全局变量的值 */ /***************出栈操作***************/ /* 状态机出栈操作 */ NAS_LMM_FSM_ClearState(enParalFsmId); /* 定时器状态出栈*/ NAS_LMM_FSM_ClearTimer(enParalFsmId); /* 相关全局变量出栈*/ NAS_LMM_FSM_ClearGlobPar(); /***************出栈后环境打印操作***************/ /* 打印当前状态 */ NAS_LMM_PrintFsmState(enParalFsmId); /* 打印当前状态涉及到的定时器状态 */ NAS_LMM_PrintFsmTimer(enParalFsmId); /* 打印当前状态涉及到的全局变量的值 */ return; }
VOS_UINT32 NAS_EMM_MsAnyStateSsAnyStateMsgUsimAuthCnf( VOS_UINT32 ulMsgId, VOS_VOID *pMsg ) { USIMM_AUTH_CNF_STRU *pstUsimAuthCnf = VOS_NULL_PTR; (VOS_VOID)ulMsgId; NAS_EMM_SECU_LOG_INFO("NAS_EMM_MsAnyStateSsAnyStateMsgUsimAuthCnf entered!"); NAS_LMM_PrintFsmState(NAS_LMM_PARALLEL_FSM_EMM); pstUsimAuthCnf = (USIMM_AUTH_CNF_STRU *)pMsg; /* 如果OpId不同,说明在这个鉴权CNF之前又收到了网侧的鉴权请求 ,继续等待USIM回复*/ if(pstUsimAuthCnf->ucOpId != NAS_EMM_GetSecuAuthOpId()) { return NAS_LMM_MSG_HANDLED; } /* 鉴权成功,清空OpId */ NAS_EMM_GetSecuAuthOpId() = 0; /*根据 USIM_AUTH_CNF中的结果进行不同处理*/ switch(pstUsimAuthCnf->enResult) { /*USIM鉴权成功*/ case USIMM_AUTH_UMTS_SUCCESS: NAS_EMM_UsimAuthSucc(pstUsimAuthCnf); break; /*USIM鉴权失败:MAC FAIL*/ case USIMM_AUTH_MAC_FAILURE: NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_MAC_FAILURE); NAS_EMM_UsimAuthFail(NAS_EMM_AUTH_MAC_FAILURE); break; /*USIM鉴权失败:SYNCFAIL*/ case USIMM_AUTH_SYNC_FAILURE: NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_SYNC_FAILURE); /*获取USIM_AUTH_CNF携带的AUTS:pstUsimAuthCnf->u.aucAuts第一个字节为Auts的长度*/ NAS_LMM_MEM_CPY( NAS_EMM_GetSecuAuthAutsAddr(), &(pstUsimAuthCnf->cnfdata.stTELECnf.aucAuts[NAS_EMM_USIM_CNF_AUTS_V_POS]), pstUsimAuthCnf->cnfdata.stTELECnf.aucAuts[NAS_EMM_USIM_CNF_AUTS_L_POS]); /*调用失败处理函数*/ NAS_EMM_UsimAuthFail(NAS_EMM_AUTH_SYNC_FAILURE); break; default: NAS_EMM_SECU_LOG_ERR("NAS_EMM_MsAnyStateSsAnyStateMsgUsimAuthCnf: USIM CNF RSLT ERR."); NAS_EMM_SndMmcSimAuthFailInd(LMM_MMC_SIM_AUTH_FAIL_OTHER); break; } return NAS_LMM_MSG_HANDLED; }
/*lint -e961*/ VOS_VOID NAS_LMM_FSM_PushStackCombine(NAS_LMM_PARALLEL_FSM_ENUM_UINT16 enParalFsmId) { /* 入口检查 */ if ( enParalFsmId >= NAS_LMM_PARALLEL_FSM_BUTT ) { NAS_LMM_PUBM_LOG1_ERR("NAS_LMM_FSM_PushStackCombine, FsmId error, FsmId", enParalFsmId); return; } /***************入栈前环境打印操作***************/ #if 0 /* 打印入栈前的状态 */ NAS_LMM_PrintFsmState(enParalFsmId); /* 打印当前状态涉及到的定时器状态 */ NAS_LMM_PrintFsmTimer(enParalFsmId); /* 打印当前状态涉及到的全局变量的值 */ #endif /***************入栈操作***************/ /* 状态机压栈操作 */ NAS_LMM_FSM_PushState(enParalFsmId); /* 定时器状态入栈 */ NAS_LMM_FSM_PushTimer(enParalFsmId); /* 相关全局变量入栈 */ NAS_LMM_FSM_PushGlobPar(enParalFsmId); return; }