5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-mac-csched-sap.h
1// Copyright (c) 2019 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#ifndef NR_MAC_CSCHED_SAP_H
6#define NR_MAC_CSCHED_SAP_H
7
8#include "beam-id.h"
9#include "nr-phy-mac-common.h"
10
11#include <vector>
12
13namespace ns3
14{
15
31{
32 public:
37 {
38 }
39
46 {
47 normal,
48 extended
49 };
50
56 {
57 uint8_t m_puschHoppingOffset;
58
59 enum HoppingMode_e
60 {
61 inter,
62 interintra
63 } m_hoppingMode;
64
65 uint8_t m_nSb;
66
67 enum PhichResource_e
68 {
69 PHICH_R_ONE_SIXTH,
70 PHICH_R_HALF,
71 PHICH_R_ONE,
72 PHICH_R_TWO
73 } m_phichResource;
74
75 NormalExtended_e m_phichDuration;
76
77 uint8_t m_initialNrOfPdcchOfdmSymbols;
78
79 uint16_t m_ulBandwidth;
80 uint16_t m_dlBandwidth;
81
82 NormalExtended_e m_ulCyclicPrefixLength;
83 NormalExtended_e m_dlCyclicPrefixLength;
84
85 uint8_t m_antennaPortsCount;
86
87 enum DuplexMode_e
88 {
89 DM_TDD,
90 DM_FDD
91 } m_duplexMode;
92
93 uint8_t m_subframeAssignment;
94 uint8_t m_specialSubframePatterns;
95 std::vector<uint8_t> m_mbsfnSubframeConfigRfPeriod;
96 std::vector<uint8_t> m_mbsfnSubframeConfigRfOffset;
97 std::vector<uint8_t> m_mbsfnSubframeConfigSfAllocation;
98 uint8_t m_prachConfigurationIndex;
99 uint8_t m_prachFreqOffset;
100 uint8_t m_raResponseWindowSize;
101 uint8_t m_macContentionResolutionTimer;
102 uint8_t m_maxHarqMsg3Tx;
103 uint16_t m_n1PucchAn;
104 uint8_t m_deltaPucchShift;
105 uint8_t m_nrbCqi;
106 uint8_t m_ncsAn;
107 uint8_t m_srsSubframeConfiguration;
108 uint8_t m_srsSubframeOffset;
109 uint8_t m_srsBandwidthConfiguration;
110 bool m_srsMaxUpPts;
111
112 enum Enable64Qam_e
113 {
114 MOD_16QAM,
115 MOD_64QAM
116 } m_enable64Qam;
117
118 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
119 };
120
126 {
127 uint16_t m_rnti;
129 bool m_reconfigureFlag;
130 uint16_t m_timeAlignmentTimer;
131
132 enum MeasGapConfigPattern_e
133 {
134 MGP_GP1,
135 MGP_GP2,
136 OFF
137 } m_measGapConfigPattern;
138
139 uint8_t m_measGapConfigSubframeOffset;
140 uint8_t m_transmissionMode;
141 uint64_t m_ueAggregatedMaximumBitrateUl;
142 uint64_t m_ueAggregatedMaximumBitrateDl;
143
144 enum OpenClosedLoop_e
145 {
146 noneloop,
147 openloop,
148 closedloop
149 } m_ueTransmitAntennaSelection;
150
151 bool m_ttiBundling;
152 uint8_t m_maxHarqTx;
153 uint8_t m_betaOffsetAckIndex;
154 uint8_t m_betaOffsetRiIndex;
155 uint8_t m_betaOffsetCqiIndex;
156 bool m_ackNackSrsSimultaneousTransmission;
157 bool m_simultaneousAckNackAndCqi;
158
159 enum RepMode_e
160 {
161 rm12,
162 rm20,
163 rm22,
164 rm30,
165 rm31,
166 nonemode
167 } m_aperiodicCqiRepMode;
168
169 enum FeedbackMode_e
170 {
171 bundling,
172 multiplexing
173 } m_tddAckNackFeedbackMode;
174
175 uint8_t m_ackNackRepetitionFactor;
176
177 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
178 };
179
185 {
186 uint16_t m_rnti;
187 bool m_reconfigureFlag;
188
189 std::vector<struct nr::LogicalChannelConfigListElement_s> m_logicalChannelConfigList;
190
191 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
192 };
193
199 {
200 uint16_t m_rnti;
201
202 std::vector<uint8_t> m_logicalChannelIdentity;
203
204 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
205 };
206
212 {
213 uint16_t m_rnti;
214
215 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
216 };
217
218 //
219 // CSCHED - MAC Scheduler Control SAP primitives
220 // (See 4.1 for description of the primitives)
221 //
222
226 virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters& params) = 0;
227
228 virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters& params) = 0;
229
230 virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters& params) = 0;
231
232 virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters& params) = 0;
233
234 virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters& params) = 0;
235
236 private:
237};
238
240{
241 public:
242 virtual ~NrMacCschedSapUser()
243 {
244 }
245
247 enum class Result_e
248 {
249 SUCCESS,
250 FAILURE
251 };
252
262 {
263 Result_e m_result;
264
265 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
266 };
267
273 {
274 uint16_t m_rnti;
275 Result_e m_result;
276
277 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
278 };
279
285 {
286 uint16_t m_rnti;
287 Result_e m_result;
288
289 std::vector<uint8_t> m_logicalChannelIdentity;
290
291 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
292 };
293
299 {
300 uint16_t m_rnti;
301 Result_e m_result;
302
303 std::vector<uint8_t> m_logicalChannelIdentity;
304
305 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
306 };
307
313 {
314 uint16_t m_rnti;
315 Result_e m_result;
316
317 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
318 };
319
325 {
326 uint16_t m_rnti;
327 uint8_t m_transmissionMode;
328
329 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
330 };
331
337 {
338 uint8_t m_prbUtilizationDl;
339 uint8_t m_prbUtilizationUl;
340
341 std::vector<struct nr::VendorSpecificListElement_s> m_vendorSpecificList;
342 };
343
344 //
345 // CSCHED - MAC Scheduler Control SAP primitives
346 // (See 4.1 for description of the primitives)
347 //
348
349 virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters& params) = 0;
350
351 virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters& params) = 0;
352
353 virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters& params) = 0;
354
355 virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters& params) = 0;
356
357 virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters& params) = 0;
358
359 virtual void CschedUeConfigUpdateInd(
360 const struct CschedUeConfigUpdateIndParameters& params) = 0;
361
362 virtual void CschedCellConfigUpdateInd(
363 const struct CschedCellConfigUpdateIndParameters& params) = 0;
364
365 private:
366};
367
368} // end namespace ns3
369
370#endif /* NR_MAC_CSCHED_SAP_H */
Representation of a beam id.
Definition beam-id.h:26
Provides the CSCHED SAP.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)=0
CSCHED_CELL_CONFIG_REQ.
virtual ~NrMacCschedSapProvider()
~NrMacCschedSapProvider
NormalExtended_e
NormalExtended_e enumeration.
Result_e
Result_e enumeration.
uint16_t m_dlBandwidth
In number of RBG, created by MAC and passed to the scheduler.
uint16_t m_ulBandwidth
In number of RBG, created by MAC and passed to the scheduler.