A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ff-mac-scheduler.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Nicola Baldo <nbaldo@cttc.es>
7 * Marco Miozzo <marco.miozzo@cttc.es>
8 */
9
10#ifndef FF_MAC_SCHEDULER_H
11#define FF_MAC_SCHEDULER_H
12
13#include "ff-mac-common.h"
14
15#include "ns3/object.h"
16
17namespace ns3
18{
19
25class LteFfrSapUser;
26
27/**
28 * @ingroup lte
29 * @defgroup ff-api FF MAC Schedulers
30 */
31
32/// DL HARQ process status vector
33using DlHarqProcessesStatus_t = std::vector<uint8_t>;
34
35/// DL HARQ process timer vector
36using DlHarqProcessesTimer_t = std::vector<uint8_t>;
37
38/// DL HARQ process DCI buffer vector
39using DlHarqProcessesDciBuffer_t = std::vector<DlDciListElement_s>;
40
41/// Vector of the LCs and layers per UE
42using RlcPduList_t = std::vector<std::vector<RlcPduListElement_s>>;
43
44/// Vector of the 8 HARQ processes per UE
45using DlHarqRlcPduListBuffer_t = std::vector<RlcPduList_t>;
46
47/// UL HARQ process DCI buffer vector
48using UlHarqProcessesDciBuffer_t = std::vector<UlDciListElement_s>;
49
50/// UL HARQ process status vector
51using UlHarqProcessesStatus_t = std::vector<uint8_t>;
52
53/// Value for SINR outside the range defined by FF-API, used to indicate that there is
54/// no CQI for this element
55constexpr double NO_SINR = -5000;
56
57/// Number of HARQ processes
58constexpr uint32_t HARQ_PROC_NUM = 8;
59
60/// HARQ DL timeout
62
63/**
64 * @ingroup ff-api
65 *
66 * This abstract base class identifies the interface by means of which
67 * the helper object can plug on the MAC a scheduler implementation based on the
68 * FF MAC Sched API.
69 *
70 *
71 */
72class FfMacScheduler : public Object
73{
74 public:
75 /**
76 * The type of UL CQI to be filtered (ALL means accept all the CQI,
77 * where a new CQI of any type overwrite the old one, even of another type)
78 *
79 */
85
86 /**
87 * constructor
88 *
89 */
91 /**
92 * destructor
93 *
94 */
95 ~FfMacScheduler() override;
96
97 // inherited from Object
98 void DoDispose() override;
99 /**
100 * @brief Get the type ID.
101 * @return the object TypeId
102 */
103 static TypeId GetTypeId();
104
105 /**
106 * set the user part of the FfMacCschedSap that this Scheduler will
107 * interact with. Normally this part of the SAP is exported by the MAC.
108 *
109 * @param s
110 */
112
113 /**
114 *
115 * set the user part of the FfMacSchedSap that this Scheduler will
116 * interact with. Normally this part of the SAP is exported by the MAC.
117 *
118 * @param s
119 */
121
122 /**
123 *
124 * @return the Provider part of the FfMacCschedSap provided by the Scheduler
125 */
127
128 /**
129 *
130 * @return the Provider part of the FfMacSchedSap provided by the Scheduler
131 */
133
134 // FFR SAPs
135 /**
136 *
137 * Set the Provider part of the LteFfrSap that this Scheduler will
138 * interact with
139 *
140 * @param s
141 */
143
144 /**
145 *
146 * @return the User part of the LteFfrSap provided by the FfrAlgorithm
147 */
149
150 protected:
151 UlCqiFilter_t m_ulCqiFilter; ///< UL CQI filter
152};
153
154} // namespace ns3
155
156#endif /* FF_MAC_SCHEDULER_H */
Provides the CSCHED SAP.
FfMacCschedSapUser class.
Provides the SCHED SAP.
FfMacSchedSapUser class.
void DoDispose() override
Destructor implementation.
virtual void SetLteFfrSapProvider(LteFfrSapProvider *s)=0
Set the Provider part of the LteFfrSap that this Scheduler will interact with.
~FfMacScheduler() override
destructor
virtual void SetFfMacCschedSapUser(FfMacCschedSapUser *s)=0
set the user part of the FfMacCschedSap that this Scheduler will interact with.
virtual void SetFfMacSchedSapUser(FfMacSchedSapUser *s)=0
set the user part of the FfMacSchedSap that this Scheduler will interact with.
UlCqiFilter_t
The type of UL CQI to be filtered (ALL means accept all the CQI, where a new CQI of any type overwrit...
FfMacScheduler()
constructor
static TypeId GetTypeId()
Get the type ID.
virtual LteFfrSapUser * GetLteFfrSapUser()=0
virtual FfMacCschedSapProvider * GetFfMacCschedSapProvider()=0
UlCqiFilter_t m_ulCqiFilter
UL CQI filter.
virtual FfMacSchedSapProvider * GetFfMacSchedSapProvider()=0
Service Access Point (SAP) offered by the Frequency Reuse algorithm instance to the MAC Scheduler ins...
Definition lte-ffr-sap.h:29
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
Object()
Constructor.
Definition object.cc:96
a unique identifier for an interface.
Definition type-id.h:49
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::vector< uint8_t > DlHarqProcessesTimer_t
DL HARQ process timer vector.
constexpr double NO_SINR
Value for SINR outside the range defined by FF-API, used to indicate that there is no CQI for this el...
std::vector< uint8_t > UlHarqProcessesStatus_t
UL HARQ process status vector.
std::vector< uint8_t > DlHarqProcessesStatus_t
DL HARQ process status vector.
std::vector< std::vector< RlcPduListElement_s > > RlcPduList_t
Vector of the LCs and layers per UE.
std::vector< DlDciListElement_s > DlHarqProcessesDciBuffer_t
DL HARQ process DCI buffer vector.
constexpr uint32_t HARQ_DL_TIMEOUT
HARQ DL timeout.
constexpr uint32_t HARQ_PROC_NUM
Number of HARQ processes.
std::vector< RlcPduList_t > DlHarqRlcPduListBuffer_t
Vector of the 8 HARQ processes per UE.
std::vector< UlDciListElement_s > UlHarqProcessesDciBuffer_t
UL HARQ process DCI buffer vector.