5G-LENA nr-v3.0-32-g83aee33
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-mac-sched-sap.h
1/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
3// Copyright (c) 2018 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4//
5// SPDX-License-Identifier: GPL-2.0-only
6
7#ifndef NRMACSCHEDSAPPROVIDER_H
8#define NRMACSCHEDSAPPROVIDER_H
9
10#include "nr-control-messages.h"
11#include "nr-phy-mac-common.h"
12
13namespace ns3
14{
15
16class SpectrumModel;
17
23{
24 public:
34
38 virtual ~NrMacSchedSapProvider() = default;
39
55
60 {
62 std::vector<struct DlCqiInfo> m_cqiList;
63 };
64
69 {
71 std::vector<struct MacCeElement> m_macCeList;
72 };
73
83
93
103
112 {
114 std::vector<uint16_t> m_srList;
115 };
116
122 {
123 uint16_t m_sfnSf;
124 std::vector<struct RachListElement_s> m_rachList;
125
126 std::vector<struct VendorSpecificListElement_s>
128 };
129
130 virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters& params) = 0;
131
132 virtual void SchedDlCqiInfoReq(const SchedDlCqiInfoReqParameters& params) = 0;
133
138 virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters& params) = 0;
139
140 virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters& params) = 0;
141
146 virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters& params) = 0;
147
152 virtual void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters& params) = 0;
153
154 virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters& params) = 0;
155
156 virtual void SchedSetMcs(uint32_t mcs) = 0;
157
163 virtual void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters& params) = 0;
164
169 virtual uint8_t GetDlCtrlSyms() const = 0;
170
175 virtual uint8_t GetUlCtrlSyms() const = 0;
176
177 private:
178};
179
185{
186 public:
190 virtual ~NrMacSchedSapUser();
191
196 {
202 : m_sfnSf(sfnSf),
203 m_slotAllocInfo(sfnSf)
204 {
205 }
206
209 std::vector<BuildRarListElement_s> m_buildRarList;
210 };
211
216 virtual void SchedConfigInd(const struct SchedConfigIndParameters& params) = 0;
217
222 virtual Ptr<const SpectrumModel> GetSpectrumModel() const = 0;
223
228 virtual uint32_t GetNumRbPerRbg() const = 0;
229
234 virtual uint8_t GetNumHarqProcess() const = 0;
235
240 virtual uint16_t GetBwpId() const = 0;
241
246 virtual uint16_t GetCellId() const = 0;
247
252 virtual uint32_t GetSymbolsPerSlot() const = 0;
253
258 virtual Time GetSlotPeriod() const = 0;
259};
260
261std::ostream& operator<<(std::ostream& os,
263
264} // namespace ns3
265
266#endif /* NRMACSCHEDSAPPROVIDER_H */
The SAP interface between MAC and scheduler.
virtual void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters &params)=0
SCHED_DL_RACH_INFO_REQ.
virtual uint8_t GetDlCtrlSyms() const =0
Retrieve the number of DL ctrl symbols configured in the scheduler.
virtual ~NrMacSchedSapProvider()=default
virtual void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters &params)=0
Provides scheduling request reception information to the scheduler.
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters &params)=0
Starts the UL MAC scheduler for this subframe.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters &params)=0
Starts the DL MAC scheduler for this subframe.
NrMacSchedSapProvider(const NrMacSchedSapProvider &o)=delete
NrMacSchedSapProvider copy constructor (deleted)
virtual uint8_t GetUlCtrlSyms() const =0
Retrieve the number of UL ctrl symbols configured in the scheduler.
NrMacSchedSapProvider()=default
constructor
The Interface between Scheduler and MAC.
virtual uint32_t GetNumRbPerRbg() const =0
Get the number of RB per RBG.
virtual Time GetSlotPeriod() const =0
Get the slot period.
virtual uint16_t GetBwpId() const =0
Get the BWP ID.
virtual uint32_t GetSymbolsPerSlot() const =0
Get the Symbol per slot.
virtual ~NrMacSchedSapUser()
~NrMacSchedSapUser
virtual void SchedConfigInd(const struct SchedConfigIndParameters &params)=0
Install a scheduling decision.
virtual uint16_t GetCellId() const =0
Get the Cell ID.
virtual Ptr< const SpectrumModel > GetSpectrumModel() const =0
Get the SpectrumModel.
virtual uint8_t GetNumHarqProcess() const =0
Get the number of HARQ process.
The SfnSf class.
Definition sfnsf.h:34
LteNrTddSlotType
Available TDD slot types. Ordering is important.
@ F
DL CTRL + DL DATA + UL DATA + UL CTRL.
std::vector< struct DlCqiInfo > m_cqiList
cqi list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct RachListElement_s > m_rachList
RACH list.
uint16_t m_rlcTransmissionQueueHolDelay
Head of line delay of new transmissions in ms.
uint8_t m_logicalChannelIdentity
The logical channel ID, range: 0..10.
uint16_t m_rlcRetransmissionHolDelay
Head of line delay of retransmissions in ms.
uint32_t m_rlcRetransmissionQueueSize
The current size of the retransmission queue in byte.
uint16_t m_rlcStatusPduSize
The current size of the pending STATUS message in byte.
uint32_t m_rlcTransmissionQueueSize
The current size of the new transmission queue in byte.
DL HARQ information to be used when scheduling UL data.
std::vector< struct DlHarqInfo > m_dlHarqInfoList
DL HARQ info list.
LteNrTddSlotType m_slotType
Indicate the type of slot requested.
uint8_t m_symStart
Sym start of the transmission to which this CQI refers to.
The SchedUlMacCtrlInfoReqParameters struct.
std::vector< struct MacCeElement > m_macCeList
MacCeElement list.
SR received from MAC, to pass to schedulers.
std::vector< uint16_t > m_srList
List of RNTI which asked for a SR.
SfnSf m_snfSf
SnfSf in which the sr where received.
UL HARQ information to be used when scheduling UL data.
std::vector< struct UlHarqInfo > m_ulHarqInfoList
UL HARQ info list.
LteNrTddSlotType m_slotType
Indicate the type of slot requested.
The SchedConfigIndParameters struct.
std::vector< BuildRarListElement_s > m_buildRarList
build rar list
SchedConfigIndParameters(const SfnSf sfnSf)
SchedConfigIndParameters.
SlotAllocInfo m_slotAllocInfo
The allocation info.
The SlotAllocInfo struct.
The UlCqiInfo struct.