/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Giuseppe Piro <g.piro@poliba.it>
*/
#ifndef BEARER_QOS_PARAMETERS_H_
#define BEARER_QOS_PARAMETERS_H_
#include "ns3/object.h"
namespace ns3 {
/**
* \ingroup lte
*
* \brief the BearerQosParameters class implements a set of Qos
* parameters associated to the bearer.
* Bearer Level Qos (TS 23.401, Clause 4.7.3)
* A bearer uniquely identifies traffic flows that receive a
* common Qos treatment.
*/
class BearerQosParameters : public Object
{
public:
BearerQosParameters (void);
/**
* \brief Create a Qos Parameters Set
*
* \param qci the Qos Class Identifier
* \param gbr the maximum bit rate to guarantee
* \param mbr the minimum bit rate to guarantee
*/
BearerQosParameters (int qci,
double gbr,
double mbr);
/**
* \brief Create a Qos Parameters Set
*
* \param qci the Qos Class Identifier
* \param apec the Allocation and Retention Priority of pre-emption capability
* \param apev the Allocation and Retention Priority of pre-emption vulnerability
* \param gbr the maximum bit rate to guarantee
* \param mbr the minimum bit rate to guarantee
*/
BearerQosParameters (int qci,
bool apec,
bool apev,
double gbr,
double mbr);
virtual ~BearerQosParameters (void);
/**
* Type og bearer (GBR or non GBR)
*/
enum BearerQosType
{
BEARER_TYPE_GBR, BEARER_TYPE_NGBR
};
/**
* \brief Set the Qos type of the bearer
* \param QosType the Qos type
*/
void SetBearerQosType (BearerQosType QosType);
/**
* \brief Get the Qos type of the bearer
* \return the Qos tyope of the bearer
*/
BearerQosType GetBearerQosType (void) const;
/**
* \param qci the Qos Class Identifier
*/
void SetQci (int qci);
/**
* \return the QCI value
*/
int GetQci (void) const;
/**
* \param apec the Allocation and Retention Priority of pre-emption capability
*/
void SetArpPreEmptionCapability (bool apec);
/**
* \return the ArpPreEmptionCapability value
*/
bool GetArpPreEmptionCapability (void) const;
/**
* \param apev the Allocation and Retention Priority of pre-emption vulnerability
*/
void SetArpPreEmptionVulnerability (bool apev);
/**
* \return the ArpPreEmptionVulnerability value
*/
bool GetArpPreEmptionVulnerability (void) const;
/**
* \param gbr the maximum bit rate to guarantee
*/
void SetGbr (double gbr);
/**
* \return the maximum bit rate
*/
double GetGbr (void) const;
/**
* \param mbr the minimum bit rate to guarantee
*/
void SetMbr (double mbr);
/**
* \return the minimum bit rate
*/
double GetMbr (void) const;
/**
* \param targetDelay the target delay
*/
void SetMaxDelay (double targetDelay);
/**
* \return the targetDelay value
*/
double GetMaxDelay (void) const;
private:
BearerQosType m_bearerQosType;
int m_qci;
bool m_arpPreEmptionCapability;
bool m_arpPreEmptionVulnerability;
double m_gbr;
double m_mbr;
double m_maxDelay;
};
}
#endif /* BEARER_QOS_PARAMETERS_H_ */