7#include "nr-mac-sched-sap.h"
8#include "nr-phy-mac-common.h"
10#include "ns3/nstime.h"
79typedef std::unique_ptr<NrMacSchedulerLC>
LCPtr;
173 std::vector<uint8_t>
GetLCId()
const;
186 uint8_t
GetQci(uint8_t lcId)
const;
193 std::unique_ptr<NrMacSchedulerLC>&
GetLC(uint8_t lcId);
201 void AssignedData(uint8_t lcId, uint32_t size, std::string type);
203 void ReleaseLC(uint8_t lcId);
207 std::unordered_map<uint8_t, LCPtr> m_lcMap;
214typedef std::unique_ptr<NrMacSchedulerLCG>
LCGPtr;
Represent an UE LCG (can be DL or UL)
uint32_t NumOfLC() const
Get the number of LC currently in the LCG.
bool Insert(LCPtr &&lc)
Insert LC in the group.
std::vector< uint8_t > GetActiveLCIds() const
Get a vector of the active LC IDs.
std::unique_ptr< NrMacSchedulerLC > & GetLC(uint8_t lcId)
Get the LC Ptr for a specific LC ID.
bool Contains(uint8_t lcId) const
Check if the LCG contains the LC id specified.
NrMacSchedulerLCG(const NrMacSchedulerLCG &other)=delete
NrMacSchedulerLCG copy constructor (deleted)
uint32_t GetTotalSize() const
Get the total size of the LCG.
uint8_t GetQci(uint8_t lcId) const
Get the QoS Class Identifier of the flow.
std::vector< uint8_t > GetLCId() const
Get a vector of LC ID.
void UpdateInfo(const NrMacSchedSapProvider::SchedDlRlcBufferReqParameters ¶ms)
Update the LCG with a message coming from RLC in the gNB.
uint32_t GetTotalSizeOfLC(uint8_t lcId) const
Get TotalSize Of LC.
void AssignedData(uint8_t lcId, uint32_t size, std::string type)
Inform the LCG of the assigned data to a LC id.
Represent a DL Logical Channel of an UE.
void Update(const NrMacSchedSapProvider::SchedDlRlcBufferReqParameters ¶ms)
Overwrite all the parameters with the one contained in the message.
uint8_t m_resourceType
the resource type associated with the QCI of the flow
uint64_t m_eRabGuaranteedBitrateDl
ERAB guaranteed bit rate DL.
uint32_t GetTotalSize() const
Get the total size of the LC.
double m_PER
PER of the flow.
uint8_t m_qci
QoS Class Identifier of the flow.
uint32_t m_rlcTransmissionQueueSize
The current size of the new transmission queue in byte.
NrMacSchedulerLC()=delete
NrMacSchedulerLC default constructor (deletec)
uint16_t m_rlcTransmissionQueueHolDelay
Head of line delay of new transmissions in ms.
uint16_t m_rlcRetransmissionHolDelay
Head of line delay of retransmissions in ms.
uint32_t m_rlcRetransmissionQueueSize
The current size of the retransmission queue in byte.
uint16_t m_rlcStatusPduSize
The current size of the pending STATUS message in byte.
Time m_delayBudget
Delay budget of the flow.
uint32_t m_id
ID of the LC.
uint8_t m_priority
the priority associated with the QCI of the flow 3GPP 23.203
NrMacSchedulerLC(const NrMacSchedulerLC &o)=delete
NrMacSchedulerLC copy constructor (deleted)
std::unique_ptr< NrMacSchedulerLC > LCPtr
Unique pointer to an instance of NrMacSchedulerLC.
std::unique_ptr< NrMacSchedulerLCG > LCGPtr
LCGPtr unique pointer to a LCG.
See section 4.3.4 logicalChannelConfigListElement.