VOS_VOID NAS_RABM_RcvSmBearerModifyInd( SM_RABM_BEARER_MODIFY_IND_STRU *pstSmBearerModifyInd ) { RABM_ENTITY_PS_STRU *pstPsEnt; VOS_UINT8 ucEntId; /* 获取PS域RABM实体索引 */ ucEntId = (VOS_UINT8)(pstSmBearerModifyInd->ulNsapi - RABM_NSAPI_OFFSET); /* 检查PS域RABM实体状态是否正确 */ if (RABM_NULL == NAS_RABM_GetWPsEntState(ucEntId)) { NAS_ERROR_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvSmBearerModifyInd: Wrong state of RABM entity. NSAPI:", pstSmBearerModifyInd->ulNsapi); return; } /* 获取PS域RABM实体指针 */ pstPsEnt = NAS_RABM_GetWPsEntAddr(ucEntId); /* 更新QOS */ pstPsEnt->QoS.ulQosLength = pstSmBearerModifyInd->stQos.ulLength; PS_MEM_CPY(pstPsEnt->QoS.aucQosValue, pstSmBearerModifyInd->stQos.aucQosValue, NAS_RABM_MAX_QOS_LEN); return; }
VOS_VOID NAS_RABM_RcvCdsServiceInd( CDS_RABM_SERVICE_IND_STRU *pstCdsServiceInd ) { /* 检查RABID有效性 */ if (!RAB_MAP_RAB_IS_VALID(pstCdsServiceInd->ucRabId)) { NAS_ERROR_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: Invalid RABID. <RABID>", pstCdsServiceInd->ucRabId); return; } switch (NAS_RABM_GetWPsEntState(pstCdsServiceInd->ucRabId - RABM_NSAPI_OFFSET)) { case RABM_NSAPI_ACTIVE_WITH_RAB: NAS_NORMAL_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: RABID is already active. <RABID>", pstCdsServiceInd->ucRabId); NAS_RABM_SndCdsSendBuffDataInd(pstCdsServiceInd->ucRabId, CDS_RABM_SEND_BUFF_DATA_ALLOWED_TYPE_SERVICE_SUCC); break; case RABM_NSAPI_ACTIVE_NO_RAB: if (VOS_TRUE == NAS_RABM_GetWPsEntRabReestFlg(pstCdsServiceInd->ucRabId - RABM_NSAPI_OFFSET)) { NAS_NORMAL_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: Reestablish is in process. <RABID>", pstCdsServiceInd->ucRabId); } else if (VOS_TRUE == NAS_RABM_IsDataServiceRequestPending()) { NAS_NORMAL_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: Data service request is sent, set reestablish flag. <RABID>", pstCdsServiceInd->ucRabId); NAS_RABM_SetWPsEntRabReestFlg(pstCdsServiceInd->ucRabId - RABM_NSAPI_OFFSET); } else if (VOS_TRUE == NAS_RABM_IsRabReestablishPending()) { NAS_NORMAL_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: Start RB setup protect timer. <RABID>", pstCdsServiceInd->ucRabId); NAS_RABM_SetWPsEntRabReestFlg(pstCdsServiceInd->ucRabId - RABM_NSAPI_OFFSET); NAS_RABM_StartReestRabPendingTmr(pstCdsServiceInd->ucRabId); } else { NAS_NORMAL_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: Send data service request. <RABID>", pstCdsServiceInd->ucRabId); NAS_RABM_SetWPsEntRabReestFlg(pstCdsServiceInd->ucRabId - RABM_NSAPI_OFFSET); NAS_RABM_SetRabRsestTimerFlg(); RABM_TimerStart(RABM_REESTABLISH_REQ_SENT, RABM_RABM_REEST_PROT_TIMER_LEN); RABM_SndRabReestReq(); } break; default: NAS_WARNING_LOG1(WUEPS_PID_RABM, "NAS_RABM_RcvCdsServiceInd: Can't reestablish RAB. <RABID>", pstCdsServiceInd->ucRabId); NAS_RABM_SndCdsFreeBuffDataInd(pstCdsServiceInd->ucRabId); break; } return; }
VOS_UINT32 NAS_RABM_GetDefaultRabId( VOS_UINT8 ucRabId, VOS_UINT8 *pucDeftRabId ) { VOS_UINT8 ucLinkdRabId = RAB_MAP_INVALID_RAB_ID; if (VOS_NULL_PTR == pucDeftRabId) { NAS_ERROR_LOG(WUEPS_PID_RABM, "NAS_RABM_GetDefaultRabId: pucDeftRabId is NULL!"); return PS_FAIL; } if (!RAB_MAP_RAB_IS_VALID(ucRabId)) { NAS_ERROR_LOG1(WUEPS_PID_RABM, "NAS_RABM_GetDefaultRabId: ucRabId is invalid! <ucRabId>", ucRabId); return PS_FAIL; } if (PS_TRUE != g_astRabMap[ucRabId].enucExistInd) { NAS_ERROR_LOG1(WUEPS_PID_RABM, "NAS_RABM_GetDefaultRabId: RAB MAP Not Exist! <ucRabId>", ucRabId); return PS_FAIL; } ucLinkdRabId = g_astRabMap[ucRabId].ucLinkdRabId; if (!RAB_MAP_RAB_IS_VALID(ucLinkdRabId)) { NAS_ERROR_LOG1(WUEPS_PID_RABM, "NAS_RABM_GetDefaultRabId: Linked RABID is invalid! <ucLinkdRabId>", ucLinkdRabId); return PS_FAIL; } *pucDeftRabId = ucLinkdRabId; return PS_SUCC ; }