A Discrete-Event Network Simulator
API
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 
28 namespace ns3
29 {
30 
31 class FfMacCschedSapUser;
32 class FfMacSchedSapUser;
33 class FfMacCschedSapProvider;
34 class FfMacSchedSapProvider;
35 class LteFfrSapProvider;
36 class LteFfrSapUser;
37 
44 using DlHarqProcessesStatus_t = std::vector<uint8_t>;
45 
47 using DlHarqProcessesTimer_t = std::vector<uint8_t>;
48 
50 using DlHarqProcessesDciBuffer_t = std::vector<DlDciListElement_s>;
51 
53 using RlcPduList_t = std::vector<std::vector<RlcPduListElement_s>>;
54 
56 using DlHarqRlcPduListBuffer_t = std::vector<RlcPduList_t>;
57 
59 using UlHarqProcessesDciBuffer_t = std::vector<UlDciListElement_s>;
60 
62 using UlHarqProcessesStatus_t = std::vector<uint8_t>;
63 
66 constexpr double NO_SINR = -5000;
67 
69 constexpr uint32_t HARQ_PROC_NUM = 8;
70 
72 constexpr uint32_t HARQ_DL_TIMEOUT = 11;
73 
83 class FfMacScheduler : public Object
84 {
85  public:
92  {
95  };
96 
101  FfMacScheduler();
106  ~FfMacScheduler() override;
107 
108  // inherited from Object
109  void DoDispose() override;
114  static TypeId GetTypeId();
115 
123 
132 
138 
144 
145  // FFR SAPs
154 
160 
161  protected:
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.
virtual LteFfrSapUser * GetLteFfrSapUser()=0
~FfMacScheduler() override
destructor
virtual void SetFfMacCschedSapUser(FfMacCschedSapUser *s)=0
set the user part of the FfMacCschedSap that this Scheduler will interact with.
virtual FfMacCschedSapProvider * GetFfMacCschedSapProvider()=0
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 FfMacSchedSapProvider * GetFfMacSchedSapProvider()=0
UlCqiFilter_t m_ulCqiFilter
UL CQI filter.
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.