コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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 ;
}