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
20class FfMacCschedSapUser;
21class FfMacSchedSapUser;
22class FfMacCschedSapProvider;
23class FfMacSchedSapProvider;
24class LteFfrSapProvider;
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.
This abstract base class identifies the interface by means of which the helper object can plug on the...
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...
A base class which provides memory management and object aggregation.
Definition object.h:78
a unique identifier for an interface.
Definition type-id.h:48
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.