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 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Nicola Baldo <nbaldo@cttc.es>
18 * Marco Miozzo <marco.miozzo@cttc.es>
19 */
20
21#ifndef FF_MAC_SCHEDULER_H
22#define FF_MAC_SCHEDULER_H
23
24#include "ff-mac-common.h"
25
26#include <ns3/object.h>
27
28namespace ns3
29{
30
31class FfMacCschedSapUser;
32class FfMacSchedSapUser;
33class FfMacCschedSapProvider;
34class FfMacSchedSapProvider;
35class LteFfrSapProvider;
36class LteFfrSapUser;
37
38/**
39 * \ingroup lte
40 * \defgroup ff-api FF MAC Schedulers
41 */
42
43/// DL HARQ process status vector
44using DlHarqProcessesStatus_t = std::vector<uint8_t>;
45
46/// DL HARQ process timer vector
47using DlHarqProcessesTimer_t = std::vector<uint8_t>;
48
49/// DL HARQ process DCI buffer vector
50using DlHarqProcessesDciBuffer_t = std::vector<DlDciListElement_s>;
51
52/// Vector of the LCs and layers per UE
53using RlcPduList_t = std::vector<std::vector<RlcPduListElement_s>>;
54
55/// Vector of the 8 HARQ processes per UE
56using DlHarqRlcPduListBuffer_t = std::vector<RlcPduList_t>;
57
58/// UL HARQ process DCI buffer vector
59using UlHarqProcessesDciBuffer_t = std::vector<UlDciListElement_s>;
60
61/// UL HARQ process status vector
62using UlHarqProcessesStatus_t = std::vector<uint8_t>;
63
64/// Value for SINR outside the range defined by FF-API, used to indicate that there is
65/// no CQI for this element
66constexpr double NO_SINR = -5000;
67
68/// Number of HARQ processes
69constexpr uint32_t HARQ_PROC_NUM = 8;
70
71/// HARQ DL timeout
73
74/**
75 * \ingroup ff-api
76 *
77 * This abstract base class identifies the interface by means of which
78 * the helper object can plug on the MAC a scheduler implementation based on the
79 * FF MAC Sched API.
80 *
81 *
82 */
83class FfMacScheduler : public Object
84{
85 public:
86 /**
87 * The type of UL CQI to be filtered (ALL means accept all the CQI,
88 * where a new CQI of any type overwrite the old one, even of another type)
89 *
90 */
92 {
95 };
96
97 /**
98 * constructor
99 *
100 */
102 /**
103 * destructor
104 *
105 */
106 ~FfMacScheduler() override;
107
108 // inherited from Object
109 void DoDispose() override;
110 /**
111 * \brief Get the type ID.
112 * \return the object TypeId
113 */
114 static TypeId GetTypeId();
115
116 /**
117 * set the user part of the FfMacCschedSap that this Scheduler will
118 * interact with. Normally this part of the SAP is exported by the MAC.
119 *
120 * \param s
121 */
123
124 /**
125 *
126 * set the user part of the FfMacSchedSap that this Scheduler will
127 * interact with. Normally this part of the SAP is exported by the MAC.
128 *
129 * \param s
130 */
132
133 /**
134 *
135 * \return the Provider part of the FfMacCschedSap provided by the Scheduler
136 */
138
139 /**
140 *
141 * \return the Provider part of the FfMacSchedSap provided by the Scheduler
142 */
144
145 // FFR SAPs
146 /**
147 *
148 * Set the Provider part of the LteFfrSap that this Scheduler will
149 * interact with
150 *
151 * \param s
152 */
154
155 /**
156 *
157 * \return the User part of the LteFfrSap provided by the FfrAlgorithm
158 */
160
161 protected:
162 UlCqiFilter_t m_ulCqiFilter; ///< UL CQI filter
163};
164
165} // namespace ns3
166
167#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:40
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
Definition: lte-ffr-sap.h:140
A base class which provides memory management and object aggregation.
Definition: object.h:89
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.
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< UlDciListElement_s > UlHarqProcessesDciBuffer_t
UL HARQ process DCI buffer vector.
std::vector< RlcPduList_t > DlHarqRlcPduListBuffer_t
Vector of the 8 HARQ processes per UE.
constexpr uint32_t HARQ_DL_TIMEOUT
HARQ DL timeout.
constexpr uint32_t HARQ_PROC_NUM
Number of HARQ processes.
std::vector< DlDciListElement_s > DlHarqProcessesDciBuffer_t
DL HARQ process DCI buffer vector.
std::vector< uint8_t > UlHarqProcessesStatus_t
UL HARQ process status vector.
std::vector< uint8_t > DlHarqProcessesTimer_t
DL HARQ process timer vector.
std::vector< std::vector< RlcPduListElement_s > > RlcPduList_t
Vector of the LCs and layers per UE.
std::vector< uint8_t > DlHarqProcessesStatus_t
DL HARQ process status vector.