22 #ifndef TTA_FF_MAC_SCHEDULER_H
23 #define TTA_FF_MAC_SCHEDULER_H
25 #include <ns3/lte-common.h>
26 #include <ns3/ff-mac-csched-sap.h>
27 #include <ns3/ff-mac-sched-sap.h>
28 #include <ns3/ff-mac-scheduler.h>
32 #include <ns3/nstime.h>
33 #include <ns3/lte-amc.h>
41 #define HARQ_PROC_NUM 8
42 #define HARQ_DL_TIMEOUT 11
47 typedef std::vector < uint8_t > DlHarqProcessesStatus_t;
48 typedef std::vector < uint8_t > DlHarqProcessesTimer_t;
49 typedef std::vector < DlDciListElement_s > DlHarqProcessesDciBuffer_t;
50 typedef std::vector < std::vector <struct RlcPduListElement_s> > RlcPduList_t;
51 typedef std::vector < RlcPduList_t > DlHarqRlcPduListBuffer_t;
53 typedef std::vector < UlDciListElement_s > UlHarqProcessesDciBuffer_t;
54 typedef std::vector < uint8_t > UlHarqProcessesStatus_t;
85 static TypeId GetTypeId (
void);
96 void TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode);
142 int GetRbgSize (
int dlbandwidth);
144 int LcActivePerFlow (uint16_t rnti);
146 double EstimateUlSinr (uint16_t rnti, uint16_t rb);
148 void RefreshDlCqiMaps (
void);
149 void RefreshUlCqiMaps (
void);
151 void UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size);
152 void UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size);
181 std::map <LteFlowId_t, FfMacSchedSapProvider::SchedDlRlcBufferReqParameters> m_rlcBufferReq;
187 std::set <uint16_t> m_flowStatsDl;
192 std::set <uint16_t> m_flowStatsUl;
198 std::map <uint16_t,uint8_t> m_p10CqiRxed;
202 std::map <uint16_t,uint32_t> m_p10CqiTimers;
207 std::map <uint16_t,SbMeasResult_s> m_a30CqiRxed;
211 std::map <uint16_t,uint32_t> m_a30CqiTimers;
217 std::map <uint16_t, std::vector <uint16_t> > m_allocationMaps;
222 std::map <uint16_t, std::vector <double> > m_ueCqi;
226 std::map <uint16_t, uint32_t> m_ueCqiTimers;
231 std::map <uint16_t,uint32_t> m_ceBsrRxed;
244 uint16_t m_nextRntiUl;
246 uint32_t m_cqiTimersThreshold;
248 std::map <uint16_t,uint8_t> m_uesTxMode;
255 std::map <uint16_t, uint8_t> m_dlHarqCurrentProcessId;
259 std::map <uint16_t, DlHarqProcessesStatus_t> m_dlHarqProcessesStatus;
260 std::map <uint16_t, DlHarqProcessesTimer_t> m_dlHarqProcessesTimer;
261 std::map <uint16_t, DlHarqProcessesDciBuffer_t> m_dlHarqProcessesDciBuffer;
262 std::map <uint16_t, DlHarqRlcPduListBuffer_t> m_dlHarqProcessesRlcPduListBuffer;
263 std::vector <DlInfoListElement_s> m_dlInfoListBuffered;
265 std::map <uint16_t, uint8_t> m_ulHarqCurrentProcessId;
269 std::map <uint16_t, UlHarqProcessesStatus_t> m_ulHarqProcessesStatus;
270 std::map <uint16_t, UlHarqProcessesDciBuffer_t> m_ulHarqProcessesDciBuffer;
274 std::vector <struct RachListElement_s> m_rachList;
275 std::vector <uint16_t> m_rachAllocationMap;
276 uint8_t m_ulGrantMcs;
smart pointer class similar to boost::intrusive_ptr
virtual FfMacSchedSapProvider * GetFfMacSchedSapProvider()
virtual void DoDispose(void)
void RefreshHarqProcesses()
Refresh HARQ processes according to the timers.
uint8_t UpdateHarqProcessId(uint16_t rnti)
Update and return a new process Id for the RNTI specified.
uint8_t HarqProcessAvailability(uint16_t rnti)
Return the availability of free process for the RNTI specified.
virtual FfMacCschedSapProvider * GetFfMacCschedSapProvider()
virtual ~TtaFfMacScheduler()
TtaFfMacScheduler()
Constructor.
virtual void SetFfMacSchedSapUser(FfMacSchedSapUser *s)
virtual void SetFfMacCschedSapUser(FfMacCschedSapUser *s)
a unique identifier for an interface.
Implements the SCHED SAP and CSCHED SAP for a Throughput to Average scheduler.