5G-LENA nr-v3.0-32-g83aee33
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-mac-csched-sap.h
1/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
3// Copyright (c) 2019 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4//
5// SPDX-License-Identifier: GPL-2.0-only
6
7#ifndef NR_MAC_CSCHED_SAP_H
8#define NR_MAC_CSCHED_SAP_H
9
10#include "beam-id.h"
11
12#include <ns3/ff-mac-common.h>
13
14#include <vector>
15
16namespace ns3
17{
18
34{
35 public:
40 {
41 }
42
52 {
53 uint8_t m_puschHoppingOffset;
54
55 enum HoppingMode_e
56 {
57 inter,
58 interintra
59 } m_hoppingMode;
60
61 uint8_t m_nSb;
62
63 enum PhichResource_e
64 {
65 PHICH_R_ONE_SIXTH,
66 PHICH_R_HALF,
67 PHICH_R_ONE,
68 PHICH_R_TWO
69 } m_phichResource;
70
71 enum NormalExtended_e m_phichDuration;
72
73 uint8_t m_initialNrOfPdcchOfdmSymbols;
74
75 struct SiConfiguration_s m_siConfiguration;
76
77 uint16_t m_ulBandwidth;
78 uint16_t m_dlBandwidth;
79
80 enum NormalExtended_e m_ulCyclicPrefixLength;
81 enum NormalExtended_e m_dlCyclicPrefixLength;
82
83 uint8_t m_antennaPortsCount;
84
85 enum DuplexMode_e
86 {
87 DM_TDD,
88 DM_FDD
89 } m_duplexMode;
90
91 uint8_t m_subframeAssignment;
92 uint8_t m_specialSubframePatterns;
93 std::vector<uint8_t> m_mbsfnSubframeConfigRfPeriod;
94 std::vector<uint8_t> m_mbsfnSubframeConfigRfOffset;
95 std::vector<uint8_t> m_mbsfnSubframeConfigSfAllocation;
96 uint8_t m_prachConfigurationIndex;
97 uint8_t m_prachFreqOffset;
98 uint8_t m_raResponseWindowSize;
99 uint8_t m_macContentionResolutionTimer;
100 uint8_t m_maxHarqMsg3Tx;
101 uint16_t m_n1PucchAn;
102 uint8_t m_deltaPucchShift;
103 uint8_t m_nrbCqi;
104 uint8_t m_ncsAn;
105 uint8_t m_srsSubframeConfiguration;
106 uint8_t m_srsSubframeOffset;
107 uint8_t m_srsBandwidthConfiguration;
108 bool m_srsMaxUpPts;
109
110 enum Enable64Qam_e
111 {
112 MOD_16QAM,
113 MOD_64QAM
114 } m_enable64Qam;
115
116 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
117 };
118
124 {
125 uint16_t m_rnti;
127 bool m_reconfigureFlag;
128 bool m_drxConfigPresent;
129 struct DrxConfig_s m_drxConfig;
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 bool m_spsConfigPresent;
141 struct SpsConfig_s m_spsConfig;
142 bool m_srConfigPresent;
143 struct SrConfig_s m_srConfig;
144 bool m_cqiConfigPresent;
145 struct CqiConfig_s m_cqiConfig;
146 uint8_t m_transmissionMode;
147 uint64_t m_ueAggregatedMaximumBitrateUl;
148 uint64_t m_ueAggregatedMaximumBitrateDl;
149 struct UeCapabilities_s m_ueCapabilities;
150
151 enum OpenClosedLoop_e
152 {
153 noneloop,
154 openloop,
155 closedloop
156 } m_ueTransmitAntennaSelection;
157
158 bool m_ttiBundling;
159 uint8_t m_maxHarqTx;
160 uint8_t m_betaOffsetAckIndex;
161 uint8_t m_betaOffsetRiIndex;
162 uint8_t m_betaOffsetCqiIndex;
163 bool m_ackNackSrsSimultaneousTransmission;
164 bool m_simultaneousAckNackAndCqi;
165
166 enum RepMode_e
167 {
168 rm12,
169 rm20,
170 rm22,
171 rm30,
172 rm31,
173 nonemode
174 } m_aperiodicCqiRepMode;
175
176 enum FeedbackMode_e
177 {
178 bundling,
179 multiplexing
180 } m_tddAckNackFeedbackMode;
181
182 uint8_t m_ackNackRepetitionFactor;
183
184 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
185 };
186
192 {
193 uint16_t m_rnti;
194 bool m_reconfigureFlag;
195
196 std::vector<struct LogicalChannelConfigListElement_s> m_logicalChannelConfigList;
197
198 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
199 };
200
206 {
207 uint16_t m_rnti;
208
209 std::vector<uint8_t> m_logicalChannelIdentity;
210
211 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
212 };
213
219 {
220 uint16_t m_rnti;
221
222 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
223 };
224
225 //
226 // CSCHED - MAC Scheduler Control SAP primitives
227 // (See 4.1 for description of the primitives)
228 //
229
233 virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters& params) = 0;
234
235 virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters& params) = 0;
236
237 virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters& params) = 0;
238
239 virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters& params) = 0;
240
241 virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters& params) = 0;
242
243 private:
244};
245
247{
248 public:
249 virtual ~NrMacCschedSapUser()
250 {
251 }
252
262 {
263 enum Result_e m_result;
264
265 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
266 };
267
273 {
274 uint16_t m_rnti;
275 enum Result_e m_result;
276
277 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
278 };
279
285 {
286 uint16_t m_rnti;
287 enum Result_e m_result;
288
289 std::vector<uint8_t> m_logicalChannelIdentity;
290
291 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
292 };
293
299 {
300 uint16_t m_rnti;
301 enum Result_e m_result;
302
303 std::vector<uint8_t> m_logicalChannelIdentity;
304
305 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
306 };
307
313 {
314 uint16_t m_rnti;
315 enum Result_e m_result;
316
317 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
318 };
319
325 {
326 uint16_t m_rnti;
327 uint8_t m_transmissionMode;
328 bool m_spsConfigPresent;
329 struct SpsConfig_s m_spsConfig;
330 bool m_srConfigPresent;
331 struct SrConfig_s m_srConfig;
332 bool m_cqiConfigPresent;
333 struct CqiConfig_s m_cqiConfig;
334
335 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
336 };
337
343 {
344 uint8_t m_prbUtilizationDl;
345 uint8_t m_prbUtilizationUl;
346
347 std::vector<struct VendorSpecificListElement_s> m_vendorSpecificList;
348 };
349
350 //
351 // CSCHED - MAC Scheduler Control SAP primitives
352 // (See 4.1 for description of the primitives)
353 //
354
355 virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters& params) = 0;
356
357 virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters& params) = 0;
358
359 virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters& params) = 0;
360
361 virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters& params) = 0;
362
363 virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters& params) = 0;
364
365 virtual void CschedUeConfigUpdateInd(
366 const struct CschedUeConfigUpdateIndParameters& params) = 0;
367
368 virtual void CschedCellConfigUpdateInd(
369 const struct CschedCellConfigUpdateIndParameters& params) = 0;
370
371 private:
372};
373
374} // end namespace ns3
375
376#endif /* NR_MAC_CSCHED_SAP_H */
Representation of a beam id.
Definition beam-id.h:28
Provides the CSCHED SAP.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)=0
CSCHED_CELL_CONFIG_REQ.
virtual ~NrMacCschedSapProvider()
~NrMacCschedSapProvider
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.