22 #ifndef RR_FF_MAC_SCHEDULER_H
23 #define RR_FF_MAC_SCHEDULER_H
25 #include <ns3/ff-mac-csched-sap.h>
26 #include <ns3/ff-mac-sched-sap.h>
27 #include <ns3/ff-mac-scheduler.h>
30 #include <ns3/lte-common.h>
31 #include <ns3/lte-amc.h>
33 #define HARQ_PROC_NUM 8
34 #define HARQ_DL_TIMEOUT 11
39 typedef std::vector < uint8_t > DlHarqProcessesStatus_t;
40 typedef std::vector < uint8_t > DlHarqProcessesTimer_t;
41 typedef std::vector < DlDciListElement_s > DlHarqProcessesDciBuffer_t;
42 typedef std::vector < std::vector <struct RlcPduListElement_s> > RlcPduList_t;
43 typedef std::vector < RlcPduList_t > DlHarqRlcPduListBuffer_t;
45 typedef std::vector < UlDciListElement_s > UlHarqProcessesDciBuffer_t;
46 typedef std::vector < uint8_t > UlHarqProcessesStatus_t;
79 static TypeId GetTypeId (
void);
90 void TransmissionModeConfigurationUpdate (uint16_t rnti, uint8_t txMode);
136 int GetRbgSize (
int dlbandwidth);
140 void RefreshDlCqiMaps (
void);
141 void RefreshUlCqiMaps (
void);
143 void UpdateDlRlcBufferInfo (uint16_t rnti, uint8_t lcid, uint16_t size);
144 void UpdateUlRlcBufferInfo (uint16_t rnti, uint16_t size);
173 std::list <FfMacSchedSapProvider::SchedDlRlcBufferReqParameters> m_rlcBufferReq;
178 std::map <uint16_t,uint8_t> m_p10CqiRxed;
182 std::map <uint16_t,uint32_t> m_p10CqiTimers;
188 std::map <uint16_t, std::vector <uint16_t> > m_allocationMaps;
193 std::map <uint16_t, std::vector <double> > m_ueCqi;
197 std::map <uint16_t, uint32_t> m_ueCqiTimers;
204 std::map <uint16_t,uint32_t> m_ceBsrRxed;
216 uint16_t m_nextRntiDl;
217 uint16_t m_nextRntiUl;
219 uint32_t m_cqiTimersThreshold;
221 std::map <uint16_t,uint8_t> m_uesTxMode;
230 std::map <uint16_t, uint8_t> m_dlHarqCurrentProcessId;
234 std::map <uint16_t, DlHarqProcessesStatus_t> m_dlHarqProcessesStatus;
235 std::map <uint16_t, DlHarqProcessesTimer_t> m_dlHarqProcessesTimer;
236 std::map <uint16_t, DlHarqProcessesDciBuffer_t> m_dlHarqProcessesDciBuffer;
237 std::map <uint16_t, DlHarqRlcPduListBuffer_t> m_dlHarqProcessesRlcPduListBuffer;
238 std::vector <DlInfoListElement_s> m_dlInfoListBuffered;
240 std::map <uint16_t, uint8_t> m_ulHarqCurrentProcessId;
244 std::map <uint16_t, UlHarqProcessesStatus_t> m_ulHarqProcessesStatus;
245 std::map <uint16_t, UlHarqProcessesDciBuffer_t> m_ulHarqProcessesDciBuffer;
249 std::vector <struct RachListElement_s> m_rachList;
250 std::vector <uint16_t> m_rachAllocationMap;
251 uint8_t m_ulGrantMcs;
smart pointer class similar to boost::intrusive_ptr
virtual FfMacSchedSapProvider * GetFfMacSchedSapProvider()
virtual void SetFfMacSchedSapUser(FfMacSchedSapUser *s)
virtual ~RrFfMacScheduler()
uint8_t UpdateHarqProcessId(uint16_t rnti)
Update and return a new process Id for the RNTI specified.
virtual void SetFfMacCschedSapUser(FfMacCschedSapUser *s)
uint8_t HarqProcessAvailability(uint16_t rnti)
Return the availability of free process for the RNTI specified.
void RefreshHarqProcesses()
Refresh HARQ processes according to the timers.
virtual FfMacCschedSapProvider * GetFfMacCschedSapProvider()
Implements the SCHED SAP and CSCHED SAP for a Round Robin scheduler.
RrFfMacScheduler()
Constructor.
virtual void DoDispose(void)
a unique identifier for an interface.