VOS_VOID NULL_RecoverUlGradeProcess (VOS_VOID)
{
    CDS_WARNING_LOG(UEPS_PID_CDS, "NULL_RecoverUlGradeProcess : NULL Speed Recover");
    CDS_PRINT_WARNING(NULL_UpGradeUlProcess_ENUM, CDS_FC_NULL_SPEED_RECOVER);

    return;
}
SPY_DATA_UPGRADE_RESULT_ENUM_UINT32 NULL_UpGradeUlProcess (VOS_VOID)
{
    CDS_WARNING_LOG(UEPS_PID_CDS,"NULL_UpGradeUlProcess : NULL Speed Upgrade");
    CDS_PRINT_WARNING(NULL_UpGradeUlProcess_ENUM, CDS_FC_NULL_SPEED_UP_GRADE);

    return SPY_DATA_UPGRADE_FINISH;
}
SPY_DATA_DOWNGRADE_RESULT_ENUM_UINT32 NULL_DownGradeUlProcess (VOS_VOID)
{
    CDS_WARNING_LOG(UEPS_PID_CDS,"NULL_DownGradeUlProcess : NULL Speed Downgrade");
    CDS_PRINT_WARNING(NULL_DownGradeUlProcess_ENUM, CDS_FC_NULL_SPEED_DOWN_GRADE);
    /* 开机高温场景 */
    return SPY_DATA_DOWNGRADE_CONTINUE;
}
VOS_UINT32 QosFc_RandomDiscardDataFlow(VOS_VOID)
{
    VOS_INT32  i,j;

    if((g_iRabEntityCnt < 1)
        || (g_iRabEntityCnt > FC_MAX_RAB_NUM))
    {
        return PS_FAIL;
    }

    for(i = g_iRabEntityCnt-1; i >= 0; i--)
    {
        if(FC_INVALID_RABID == g_stQosFcRabEntity[i].ucRabId)
        {
            continue;
        }

        /* 找到最低优先级的可置为随机丢包状态的承载 */
        /* 只有一组优先级承载会处于随机丢包状态 */
        if(QOS_FC_RAB_STATE_DISCARD != g_stQosFcRabEntity[i].enRabState)
        {
            break;
        }
    }

    if(0 <= i)
    {
        /* 判断是否需要流控 */
        if(QosFc_RabNeedFlowCtrl((VOS_UINT32)i))
        {
            for(j = i; j >= 0; j--)
            {
                if(g_stQosFcRabEntity[i].ucPriority != g_stQosFcRabEntity[j].ucPriority)
                {
                    /* 一组承载处理完 */
                    break;
                }
                if(QOS_FC_RAB_STATE_NORMAL == g_stQosFcRabEntity[j].enRabState)
                {
                    /* 置随机丢包状态 */
                    QosFc_SetRabRandomDiscard((VOS_UINT32)j);
                }
            }
        }
    }
    else
    {
        CDS_WARNING_LOG(UEPS_PID_CDS, "QosFc_RandomDiscardDataFlow : All Entity Flow Control!");
        return PS_FAIL;
    }

    return PS_SUCC;
}
VOS_UINT32 QosFc_DiscardAllDataFlow(VOS_VOID)
{
    VOS_INT32  i,j;

    if((g_iRabEntityCnt < 1)
        || (g_iRabEntityCnt > FC_MAX_RAB_NUM))
    {
        return PS_FAIL;
    }

    for(i = g_iRabEntityCnt-1; i >= 0; i--)
    {
        if(FC_INVALID_RABID == g_stQosFcRabEntity[i].ucRabId)
        {
            continue;
        }

        /* 找到优先级最低的非丢包状态承载 */
        if(QOS_FC_RAB_STATE_DISCARD != g_stQosFcRabEntity[i].enRabState)
        {
            break;
        }
    }

    if(0 <= i)
    {
        for(j = i; j >= 0; j--)
        {
            /* 判断是否需要流控 */
            if(QosFc_RabNeedFlowCtrl((VOS_UINT32)j))
            {
                /* 置丢包状态 */
                QosFc_SetRabDiscard((VOS_UINT32)j);
            }
        }
    }
    else
    {
        CDS_WARNING_LOG(UEPS_PID_CDS, "QosFc_DiscardAllDataFlow : All Entity Flow Control!");
        return PS_FAIL;
    }

    return PS_SUCC;
}
SPY_DATA_UPGRADE_RESULT_ENUM_UINT32 FC_LUpUlGrade_Process (VOS_VOID)
{
    FC_CL_TEMPERATURE_UP_STAT(1);

    if(PS_TRUE == g_ulUlDowngradeFlag)
    {
        if(g_stFcLteTemperatureCtrl.ucBsrThresCnt < g_stFcLteTemperatureCtrl.ucCurrPos)
        {
            CDS_WARNING_LOG2(UEPS_PID_CDS,"FC_LUpUlGrade_Process: Upgrade Entry : ->:", g_ulUlThroughputMax, g_stFcLteTemperatureCtrl.ulTemperSteps[g_stFcLteTemperatureCtrl.ucCurrPos-1]);
            CDS_PRINT_WARNING2(FC_LUpUlGrade_Process_ENUM, CDS_FC_LTE_SPEED_UP_GRADE,g_ulUlThroughputMax, g_stFcLteTemperatureCtrl.ulTemperSteps[g_stFcLteTemperatureCtrl.ucCurrPos-1]);
            g_ulUlThroughputMax = g_stFcLteTemperatureCtrl.ulTemperSteps[g_stFcLteTemperatureCtrl.ucCurrPos-1];
        }
        else
        {   /* 退出入口流控 */
            g_ulUlDowngradeFlag = PS_FALSE;
            g_ulUlThroughputMax = FC_UL_ENTRY_THROUGHPUT_INIT;
            /*g_stFcLteTemperatureCtrl.ucCurrPos = g_stFcLteTemperatureCtrl.ucBsrThresCnt-1;*/
        }
    }

    if(PS_FALSE == g_ulUlDowngradeFlag)
    {
        if((g_stFcLteTemperatureCtrl.ucCurrPos == 0)
            || (g_stFcLteTemperatureCtrl.ucCurrPos >= FC_UL_THROUGHPUT_THRES_CNT))
        {
            g_stFcLteTemperatureCtrl.ucCurrPos = FC_UL_THROUGHPUT_THRES_CNT;
            CDS_WARNING_LOG(UEPS_PID_CDS, "FC_LUpUlGrade_Process: Finish !");
            CDS_PRINT_WARNING(FC_LUpUlGrade_Process_ENUM, CDS_FC_LTE_SPEED_UP_FINISH);
            FC_CL_TEMPERATURE_TO_NORMAL_STAT(1);

            return SPY_DATA_UPGRADE_FINISH;
        }
    }

    g_stFcLteTemperatureCtrl.ucCurrPos--;

    CDS_WARNING_LOG1(UEPS_PID_CDS, "FC_LUpUlGrade_Process : ThresPos: ", g_stFcLteTemperatureCtrl.ucCurrPos);
    CDS_PRINT_WARNING1(FC_LUpUlGrade_Process_ENUM, CDS_FC_LTE_SPEED_UP_POS,g_stFcLteTemperatureCtrl.ucCurrPos);

    return SPY_DATA_UPGRADE_CONTINUE;
}