VOS_VOID TAF_APS_GetPdpIdListWithEsmSmEpsBearerInfoInd( struct MsgCB *pstMsg, TAF_APS_PDPID_LIST_STRU *pstPdpIdList ) { TAF_APS_EPS_BEARER_INFO_IND_STRU *pstBearerInfo; VOS_UINT8 ucCid; pstBearerInfo = (TAF_APS_EPS_BEARER_INFO_IND_STRU*)pstMsg; /* 前面预处理已经处理,这里不可能出现CID是不可能是异常的 */ ucCid = TAF_APS_GetCidFromLteBitCid(pstBearerInfo->ulBitCid); /* 从消息中 中所带的Cid来查找对应的PDP ID,预处理中已经检查, ucCid一定有值 */ pstPdpIdList->aucPdpId[0] = TAF_APS_GetPdpIdByCid(ucCid); pstPdpIdList->ucPdpNum = 1; }
VOS_VOID MN_APS_ProcEsmBearerInfoIndOptActivate( APS_PDP_CONTEXT_ENTITY_ST *pstPdpEntity, SM_ESM_EPS_BEARER_INFO_IND_STRU *pstEpsBearerInfoInd ) { /* 保存网侧下发的TI */ if (VOS_TRUE == pstEpsBearerInfoInd->bitOpTransId) { pstPdpEntity->bitOpTransId = VOS_TRUE; pstPdpEntity->stTransId.ucTiFlag = pstEpsBearerInfoInd->stTransId.ucTiFlag; pstPdpEntity->stTransId.ucTiValue = pstEpsBearerInfoInd->stTransId.ucTiValue; } /* 更新 NSAPI */ pstPdpEntity->PdpNsapiFlag = VOS_TRUE; pstPdpEntity->ucNsapi = (VOS_UINT8)pstEpsBearerInfoInd->ulEpsbId; /* 更新 Linked NSAPI */ MN_APS_UpdatePdpActTypeFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 PDP ADDR */ MN_APS_UpdatePdpAddrFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 APN */ MN_APS_UpdatePdpApnFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 PCO IPV4 */ MN_APS_UpdatePdpPcoIpv4ItemFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); #if (FEATURE_ON == FEATURE_IPV6) /* 更新 PCO IPV6 */ MN_APS_UpdatePdpPcoIpv6ItemFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); #endif /* 更新 QOS */ MN_APS_UpdatePdpQosFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 EPS QOS */ MN_APS_UpdateEpsQosFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 PACKET FILTER */ MN_APS_UpdatePdpPfFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 GPRS PARA */ MN_APS_UpdatePdpGprsParaFromEpsBearer(pstPdpEntity, pstEpsBearerInfoInd); /* 更新 Emergency */ if (VOS_TRUE == pstEpsBearerInfoInd->bitOpEmcInd) { pstPdpEntity->enEmergencyFlg = (TAF_PDP_EMC_IND_ENUM_UINT8)pstEpsBearerInfoInd->enEmergencyInd; } else { pstPdpEntity->enEmergencyFlg = TAF_PDP_NOT_FOR_EMC; } /* 更新 IM CN SIGAL FLAG */ if (VOS_TRUE == pstEpsBearerInfoInd->bitOpImCnSigalFlag) { pstPdpEntity->bitOpImCnSigalFlag= VOS_TRUE; pstPdpEntity->enImCnSignalFlg = (VOS_UINT8)pstEpsBearerInfoInd->enImCnSignalFlag; } if ( (TAF_APS_DEFAULT_CID == TAF_APS_GetCidFromLteBitCid(pstEpsBearerInfoInd->ulBitCid)) && (VOS_TRUE == pstEpsBearerInfoInd->bitOpErrorCode) ) { pstPdpEntity->bitOpCause = VOS_TRUE; pstPdpEntity->enCause = TAF_APS_MapL4aCause(pstEpsBearerInfoInd->ulErrorCode); } if (VOS_TRUE == pstPdpEntity->bitOpTransId) { /* 向SM发送ID_MN_SM_BEARER_ACTIVATE_IND消息, 同步PDP信息 */ MN_APS_SndSmBearerActivateInd(pstPdpEntity); } }
VOS_UINT32 TAF_APS_RcvEsmSmEpsBearerInfoInd_Inactive( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { TAF_APS_EPS_BEARER_INFO_IND_STRU *pstBearerInfo; APS_PDP_CONTEXT_ENTITY_ST *pstPdpEntity; #if (FEATURE_ON == FEATURE_IPV6) MMC_APS_RAT_TYPE_ENUM_UINT32 enCurrRatType; #endif VOS_UINT8 ucPdpId; pstBearerInfo = (TAF_APS_EPS_BEARER_INFO_IND_STRU*)pstMsg; #if (FEATURE_ON == FEATURE_IPV6) /* 获取当前网络模式*/ enCurrRatType = TAF_APS_GetCurrPdpEntityRatType(); #endif ucPdpId = TAF_APS_GetCurrFsmEntityPdpId(); /* 获取该PDPID的PDP实体内容地址 */ pstPdpEntity = TAF_APS_GetPdpEntInfoAddr(ucPdpId); /* 根据EPS承载的操作类型(Activate, Deactivate, Modify), 调用相应的处理函数 */ if (SM_ESM_PDP_OPT_ACTIVATE == pstBearerInfo->enPdpOption) { MN_APS_ProcEsmBearerInfoIndOptActivate(pstPdpEntity, pstBearerInfo); if (TAF_APS_DEFAULT_CID == TAF_APS_GetCidFromLteBitCid(pstBearerInfo->ulBitCid)) { TAF_APS_SndInterAttachBearerActivateInd(); } #if (FEATURE_ON == FEATURE_IMS) /* 处理IMS专有承载 */ TAF_APS_ProcImsBearerInfoIndOptActivate(pstPdpEntity, pstBearerInfo); #endif #if (FEATURE_ON == FEATURE_IPV6) /* 如果地址类型是IPv6, 需要同步给ND Client */ if ( (MMC_APS_RAT_TYPE_NULL != enCurrRatType) && (TAF_APS_CheckPrimaryPdp(ucPdpId)) && (TAF_APS_CheckPdpAddrTypeIpv6(ucPdpId)) ) { TAF_APS_SndNdPdpActInd(pstPdpEntity->ucNsapi, pstPdpEntity->PdpAddr.aucIpV6Addr); pstPdpEntity->ulNdClientActiveFlg = VOS_TRUE; } #endif } else { TAF_WARNING_LOG(WUEPS_PID_TAF,"TAF_APS_RcvEsmSmEpsBearerInfoInd_Inactive: Wrong option."); } /* 主状态迁移至TAF_APS_STA_ACTIVE */ TAF_APS_SetCurrPdpEntityMainFsmState(TAF_APS_STA_ACTIVE); return VOS_TRUE; }