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;

}
Пример #2
0
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;
}