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;
}
CDS_ERABM_TRANSFER_RESULT_ENUM_UINT32 CDS_ERABM_GetDrbId
(
    VOS_UINT8                           ucEpsbId,
    VOS_UINT8                          *pucDrbId
)
{
     /* 上行收到数据包增加统计 */
    NAS_ERABM_AddUlReceivePackageNum();

    /* 输入参数合法性检测 */
    if (VOS_NULL_PTR == pucDrbId)
    {
        NAS_ERABM_ERR_LOG("CDS_ERABM_GetDrbId:pucDrbId is NULL!");

        /* 上行丢弃数据包增加统计 */
        NAS_ERABM_AddUlDiscardPackageNum();

        return PS_FAIL;
    }

    if ((ucEpsbId < NAS_ERABM_MIN_EPSB_ID) || (ucEpsbId > NAS_ERABM_MAX_EPSB_ID))
    {
        NAS_ERABM_ERR_LOG("CDS_ERABM_GetDrbId:EpsbId is illegal!");

        /* 上行丢弃数据包增加统计 */
        NAS_ERABM_AddUlDiscardPackageNum();

        return CDS_ERABM_TRANSFER_RESULT_FAIL;
    }

    if (NAS_ERABM_RB_CONNECTED == NAS_ERABM_GetRbStateInfo(ucEpsbId))
    {
        *pucDrbId = (VOS_UINT8)NAS_ERABM_GetEpsbRbIdInfo(ucEpsbId);

        /* 增加上行发送总数据包数 */
        NAS_ERABM_AddUlSendPackageNum();

        /* 增加承载上行发送总数据包数 */
        NAS_ERABM_AddBearerSendPackageNum((VOS_UINT32)ucEpsbId);

        return CDS_ERABM_TRANSFER_RESULT_SUCC;
    }
    else if(NAS_ERABM_RB_SUSPENDED == NAS_ERABM_GetRbStateInfo(ucEpsbId))
    {
        /* 设置上行数据阻塞标志*/
        NAS_ERABM_SetUpDataPending(EMM_ERABM_UP_DATA_PENDING);
        NAS_ERABM_LOG1("CDS_ERABM_GetDrbId:DRB_SUSPENDED, set data pending = ",NAS_ERABM_GetUpDataPending());

        *pucDrbId = (VOS_UINT8)NAS_ERABM_GetEpsbRbIdInfo(ucEpsbId);

        /* 增加上行Suspend总数据包数 */
        NAS_ERABM_AddUlSuspendPackageNum();

        /* 增加承载上行Suspend总数据包数 */
        NAS_ERABM_AddBearerSuspendPackageNum((VOS_UINT32)ucEpsbId);

        return CDS_ERABM_TRANSFER_RESULT_DRB_SUSPEND;
    }
    else
    {
        /* 判断是否处于连接态 */
        if (NAS_ERABM_SUCCESS == NAS_ERABM_IsAllActtiveBearerWithoutDrb())
        {
            /* 设置上行数据阻塞标志*/
            NAS_ERABM_SetUpDataPending(EMM_ERABM_UP_DATA_PENDING);
            NAS_ERABM_LOG1("CDS_ERABM_GetDrbId:AllActtiveBearerWithoutDrb, set data pending = ",NAS_ERABM_GetUpDataPending());


            /* 增加上行IDLE总数据包数 */
             NAS_ERABM_AddUlIdlePackageNum();

            /* 增加承载上行IDLE总数据包数 */
            NAS_ERABM_AddBearerIdlePackageNum((VOS_UINT32)ucEpsbId);

            return CDS_ERABM_TRANSFER_RESULT_IDLE;
        }

        /* 对于当前处于连接态,但承载对应的DRB不存在这种暂态,暂时先返回
           CDS_ERABM_TRANSFER_RESULT_FAIL,由CDS释放内存,后续优化时再返回
           CDS_ERABM_TRANSFER_RESULT_DRB_NOT_EXIST,由CDS负责缓存数据包。*/

        /* 上行丢弃数据包增加统计 */
        NAS_ERABM_AddUlDiscardPackageNum();

        /* 承载上行丢弃数据包增加统计 */
        NAS_ERABM_AddBearerDiscardPackageNum((VOS_UINT32)ucEpsbId);

        return APP_ERABM_TRANSFER_RESULT_FAIL;
    }
}
EMM_ERABM_UP_DATA_PENDING_ENUM_UINT32 NAS_ERABM_IsDataPending( VOS_VOID )
{
    /* 根据CDS记录是否有上行缓存数据,以及RABM记录是否有上行数据PENDING共同决定 */
    return (EMM_ERABM_UP_DATA_PENDING_ENUM_UINT32)(CDS_IsPsDataAvail()||NAS_ERABM_GetUpDataPending());
}