5G-LENA nr-v3.3-159-ga6832aa7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-mac-scheduler-lc-alg.h
1// Copyright (c) 2023 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#ifndef NR_MAC_SCHEDULER_LC_ALGORITHM_H
6#define NR_MAC_SCHEDULER_LC_ALGORITHM_H
7
8#include "nr-mac-scheduler-lcg.h"
9
10#include "ns3/object.h"
11
12#include <vector>
13
14namespace ns3
15{
16
36class NrMacSchedulerLcAlgorithm : public Object
37{
38 public:
43 static TypeId GetTypeId();
44
49
54
59 {
63 Assignation() = delete;
68 Assignation(const Assignation& o) = delete;
73 Assignation(Assignation&& o) = default;
74
81 Assignation(uint8_t lcg, uint8_t lcId, uint32_t bytes)
82 : m_lcg(lcg),
83 m_lcId(lcId),
84 m_bytes(bytes)
85 {
86 }
87
91 ~Assignation() = default;
92
93 uint8_t m_lcg{0};
94 uint8_t m_lcId{0};
95 uint32_t m_bytes{0};
96 };
97
108 virtual std::vector<Assignation> AssignBytesToDlLC(
109 const std::unordered_map<uint8_t, LCGPtr>& ueLCG,
110 uint32_t tbs,
111 Time slotPeriod) const = 0;
112
122 virtual std::vector<Assignation> AssignBytesToUlLC(
123 const std::unordered_map<uint8_t, LCGPtr>& ueLCG,
124 uint32_t tbs) const = 0;
125};
126} // namespace ns3
127
128#endif /*NR_MAC_SCHEDULER_LC_ALGORITHM_H*/
This class is the interface for the creation of various scheduling algorithms for the distribution of...
~NrMacSchedulerLcAlgorithm() override
~NrMacSchedulerLc deconstructor
NrMacSchedulerLcAlgorithm()
NrMacSchedulerLcAlgorithm constructor.
virtual std::vector< Assignation > AssignBytesToUlLC(const std::unordered_map< uint8_t, LCGPtr > &ueLCG, uint32_t tbs) const =0
Method to decide how to distribute the assigned bytes to the different LCs for the UL direction....
virtual std::vector< Assignation > AssignBytesToDlLC(const std::unordered_map< uint8_t, LCGPtr > &ueLCG, uint32_t tbs, Time slotPeriod) const =0
Method to decide how to distribute the assigned bytes to the different LCs for the DL direction....
Represent an assignation of bytes to a LCG/LC.
Assignation(const Assignation &o)=delete
Assignation copy constructor (deleted)
Assignation(Assignation &&o)=default
Assignation move constructor (default)
Assignation()=delete
Assignation constructor (deleted)
Assignation(uint8_t lcg, uint8_t lcId, uint32_t bytes)
Assignation constructor with parameters.
~Assignation()=default
Default deconstructor.