5#include "nr-mac-scheduler.h"
7#include "nr-mac-csched-sap.h"
14NS_LOG_COMPONENT_DEFINE(
"NrMacScheduler");
15NS_OBJECT_ENSURE_REGISTERED(NrMacScheduler);
17class NrMacGeneralCschedSapProvider :
public NrMacCschedSapProvider
20 NrMacGeneralCschedSapProvider() =
delete;
22 NrMacGeneralCschedSapProvider(NrMacScheduler* scheduler)
23 : m_scheduler(scheduler)
27 ~NrMacGeneralCschedSapProvider()
override =
default;
31 const NrMacCschedSapProvider::CschedCellConfigReqParameters& params)
override
33 m_scheduler->DoCschedCellConfigReq(params);
36 void CschedUeConfigReq(
37 const NrMacCschedSapProvider::CschedUeConfigReqParameters& params)
override
39 m_scheduler->DoCschedUeConfigReq(params);
42 void CschedLcConfigReq(
43 const NrMacCschedSapProvider::CschedLcConfigReqParameters& params)
override
45 m_scheduler->DoCschedLcConfigReq(params);
48 void CschedLcReleaseReq(
49 const NrMacCschedSapProvider::CschedLcReleaseReqParameters& params)
override
51 m_scheduler->DoCschedLcReleaseReq(params);
54 void CschedUeReleaseReq(
55 const NrMacCschedSapProvider::CschedUeReleaseReqParameters& params)
override
57 m_scheduler->DoCschedUeReleaseReq(params);
61 NrMacScheduler* m_scheduler{
nullptr};
64class NrMacGeneralSchedSapProvider :
public NrMacSchedSapProvider
67 NrMacGeneralSchedSapProvider() =
delete;
69 NrMacGeneralSchedSapProvider(NrMacScheduler* sched)
74 void SchedDlRlcBufferReq(
75 const NrMacSchedSapProvider::SchedDlRlcBufferReqParameters& params)
override
77 m_scheduler->DoSchedDlRlcBufferReq(params);
81 const NrMacSchedSapProvider::SchedDlTriggerReqParameters& params)
override
83 m_scheduler->DoSchedDlTriggerReq(params);
87 const NrMacSchedSapProvider::SchedUlTriggerReqParameters& params)
override
89 m_scheduler->DoSchedUlTriggerReq(params);
92 void SchedDlCqiInfoReq(
93 const NrMacSchedSapProvider::SchedDlCqiInfoReqParameters& params)
override
95 m_scheduler->DoSchedDlCqiInfoReq(params);
98 void SchedUlCqiInfoReq(
99 const NrMacSchedSapProvider::SchedUlCqiInfoReqParameters& params)
override
101 m_scheduler->DoSchedUlCqiInfoReq(params);
104 void SchedUlMacCtrlInfoReq(
105 const NrMacSchedSapProvider::SchedUlMacCtrlInfoReqParameters& params)
override
107 m_scheduler->DoSchedUlMacCtrlInfoReq(params);
110 void SchedUlSrInfoReq(
const SchedUlSrInfoReqParameters& params)
override
112 m_scheduler->DoSchedUlSrInfoReq(params);
115 void SchedSetMcs(uint32_t mcs)
override
117 m_scheduler->DoSchedSetMcs(mcs);
120 void SchedDlRachInfoReq(
const SchedDlRachInfoReqParameters& params)
override
122 m_scheduler->DoSchedDlRachInfoReq(params);
125 uint8_t GetDlCtrlSyms()
const override
127 return m_scheduler->GetDlCtrlSyms();
130 uint8_t GetUlCtrlSyms()
const override
132 return m_scheduler->GetUlCtrlSyms();
135 bool IsHarqReTxEnable()
const override
137 return m_scheduler->IsHarqReTxEnable();
141 NrMacScheduler* m_scheduler{
nullptr};
147 static TypeId tid = TypeId(
"ns3::NrMacScheduler").SetParent<Object>();
154 NS_LOG_FUNCTION_NOARGS();
161 NS_LOG_FUNCTION_NOARGS();
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters ¶ms)=0
CSCHED_CELL_CONFIG_REQ.
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters ¶ms)=0
Starts the UL MAC scheduler for this subframe.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters ¶ms)=0
Starts the DL MAC scheduler for this subframe.
static TypeId GetTypeId()
Get the type id.
NrMacScheduler()
NrMacScheduler constructor.
NrMacSchedSapProvider * m_macSchedSapProvider
SAP Provider.
NrMacCschedSapProvider * m_macCschedSapProvider
SAP Provider.
~NrMacScheduler() override
NrMacScheduler deconstructor.