VOS_VOID NAS_ERABM_RcvRabmTcDeactTestMode( VOS_VOID ) { if (NAS_ERABM_L_MODE_STATUS_NORMAL != NAS_ERABM_GetLModeStatus()) { NAS_ERABM_WARN_LOG("NAS_ERABM_RcvRabmTcDeactTestMode:Rabm is already suspended!"); return ; } /* 环回模式B下停止环回缓存定时器 */ if (NAS_ERABM_MODE_TYPE_LB == NAS_ERABM_GetMode()) { NAS_ERABM_TimerStop(NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER); } /* 将模式设为正常模式 */ NAS_ERABM_SetMode(NAS_ERABM_MODE_TYPE_NORMAL); if (0 != NAS_ERABM_GetActiveEpsBearerNum()) { NAS_ERABM_SetUlNdisFilterValidFlag(NAS_ERABM_UL_NDIS_FILTER_VALID); } else { NAS_ERABM_SetUlNdisFilterValidFlag(NAS_ERABM_UL_NDIS_FILTER_INVALID); } if(PS_FAIL == NAS_ERABM_IpfConfigUlFilter()) { NAS_ERABM_ERR_LOG("NAS_ERABM_RcvRabmTcActTestMode: Update IP Filter Failed."); } }
VOS_VOID NAS_ERABM_RcvRabmEmmRrcConRelInd( VOS_VOID ) { VOS_UINT32 ulEpsbId = NAS_ERABM_NULL; /*打印进入该函数*/ NAS_ERABM_INFO_LOG("NAS_ERABM_RcvRabmEmmRrcConRelInd is entered."); NAS_ERABM_TimerStop( NAS_ERABM_WAIT_RB_RESUME_TIMER); NAS_ERABM_TimerStop( NAS_ERABM_WAIT_RB_REEST_TIMER); NAS_ERABM_SetEmmSrState(NAS_ERABM_SERVICE_STATE_TERMIN); /*停止建立等待定时器*/ NAS_ERABM_TimerStop(NAS_ERABM_WAIT_EPSB_ACT_TIMER); /*清除等待承载建立标识 */ NAS_ERABM_SetWaitEpsBActSign(NAS_ERABM_NOT_WAIT_EPSB_ACT_MSG); /* 如果在正常模式下 */ if (NAS_ERABM_MODE_TYPE_NORMAL == NAS_ERABM_GetMode()) { /* 通知L2释放缓存的数据包 */ /*APPITF_FreeAllofRabmBuf();*/ /* 异系统切换成功后,RRC会上报链路释放清DRB,但此场景不能通知CDS清缓存 */ if (NAS_ERABM_L_MODE_STATUS_NORMAL == NAS_ERABM_GetLModeStatus()) { /* (1)如果当前有上行Pending 标识,即有数据缓存,则给CDS发释放缓存 */ /* (2)存在已激活DRB,则给CDS发释放缓存 */ if((EMM_ERABM_UP_DATA_PENDING == NAS_ERABM_GetUpDataPending()) || ((NAS_ERABM_FAILURE == NAS_ERABM_IsAllActtiveBearerWithoutDrb()) && (NAS_ERABM_NULL != NAS_ERABM_GetActiveEpsBearerNum()))) { /* 通知CDS释放缓存的数据包 */ NAS_ERABM_SndErabmCdsFreeBuffDataInd(); /* 清除上行数据阻塞标志 */ NAS_ERABM_SetUpDataPending(EMM_ERABM_NO_UP_DATA_PENDING); } } } else /*环回模式下不清理缓存,保持原上行数据Pending状态*/ { NAS_ERABM_INFO_LOG("NAS_ERABM_RcvRabmEmmRrcConRelInd: Do not release buffer ."); } /* 释放所有RB */ for (ulEpsbId = NAS_ERABM_MIN_EPSB_ID; ulEpsbId<= NAS_ERABM_MAX_EPSB_ID; ulEpsbId++) { NAS_ERABM_RcvRbRelease(ulEpsbId); } return; }
/***************************************************************************** Function Name : NAS_ERABM_RcvRabmTcActTestMode Description : 收到TC模块ACTIVATE TEST MODE消息处理函数 Input : None Output : None Return : VOS_VOID History : 1.lihong00150010 2009-10-16 Draft Enact *****************************************************************************/ VOS_VOID NAS_ERABM_RcvRabmTcActTestMode( VOS_VOID ) { if (NAS_ERABM_L_MODE_STATUS_NORMAL != NAS_ERABM_GetLModeStatus()) { NAS_ERABM_WARN_LOG("NAS_ERABM_RcvRabmTcActTestMode:Rabm is already suspended!"); return ; } /* 将模式设为环回模式 */ NAS_ERABM_SetMode(NAS_ERABM_MODE_TYPE_LB); NAS_ERABM_SetUlNdisFilterValidFlag(NAS_ERABM_UL_NDIS_FILTER_INVALID); if(PS_FAIL == NAS_ERABM_IpfConfigUlFilter()) { NAS_ERABM_ERR_LOG("NAS_ERABM_RcvRabmTcActTestMode: Update IP Filter Failed."); } }
/*lint -e961*/ VOS_VOID NAS_ERABM_RcvRabmEmmReestInd(const EMM_ERABM_REEST_IND_STRU *pRcvMsg ) { if (NAS_ERABM_L_MODE_STATUS_NORMAL != NAS_ERABM_GetLModeStatus()) { NAS_ERABM_WARN_LOG("NAS_ERABM_RcvRabmEmmReestInd:Rabm is already suspended!"); return ; } switch(pRcvMsg->enReEstState) { /*case EMM_ERABM_REEST_STATE_SUCC:*/ case EMM_ERABM_REEST_STATE_FAIL: /*打印进入该函数*/ NAS_ERABM_LOG1("NAS_ERABM_RcvRabmEmmReestInd: receive Emm Reset result: .", pRcvMsg->enReEstState); /*SERVICE流程结束*,停止定时器*/ NAS_ERABM_TimerStop(NAS_ERABM_WAIT_RB_REEST_TIMER); NAS_ERABM_SetEmmSrState(NAS_ERABM_SERVICE_STATE_TERMIN); /* 如果在正常模式下 */ if (NAS_ERABM_MODE_TYPE_NORMAL == NAS_ERABM_GetMode()) { /* 通知L2释放缓存的数据包 */ /*APPITF_FreeAllofRabmBuf();*/ /* 通知CDS释放缓存的数据包 */ NAS_ERABM_SndErabmCdsFreeBuffDataInd(); /* 清除上行数据阻塞标志*/ NAS_ERABM_SetUpDataPending(EMM_ERABM_NO_UP_DATA_PENDING); } else if (NAS_ERABM_TIMER_STATE_STOPED == NAS_ERABM_IsTimerRunning(NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER)) /*环回模式下不清理缓存,保持原上行数据Pending状态*/ { NAS_ERABM_INFO_LOG("NAS_ERABM_RcvRabmEmmReestInd: NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER start."); /* lihong00150010 emergency tau&service begin */ NAS_ERABM_TimerStart( NAS_ERABM_WAIT_TC_FREE_BUFFER_LENGTH, NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER, NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER); } /* lihong00150010 emergency tau&service end */ else { NAS_ERABM_INFO_LOG("NAS_ERABM_RcvRabmEmmReestInd: NAS_ERABM_WAIT_TC_FREE_BUFFER_TIMER is running."); } break; case EMM_ERABM_REEST_STATE_INITIATE: /*打印进入该函数*/ NAS_ERABM_INFO_LOG("NAS_ERABM_RcvRabmEmmReestInd: receive EMM_ERABM_REEST_STATE_INITIATE ."); /*SERVICE流程启动,启动定时器*/ if (NAS_ERABM_SERVICE_STATE_TERMIN == NAS_ERABM_GetEmmSrState()) {/* lihong00150010 emergency tau&service begin */ NAS_ERABM_TimerStart( NAS_ERABM_WAIT_RB_REEST_LENGTH, NAS_ERABM_WAIT_RB_REEST_TIMER, VOS_FALSE); NAS_ERABM_SetEmmSrState(NAS_ERABM_SERVICE_STATE_INIT); }/* lihong00150010 emergency tau&service end */ break; default: NAS_ERABM_WARN_LOG("NAS_ERABM_RcvRabmEmmReestInd:WARNNING: EstState illegal!"); break; } }