A Discrete-Event Network Simulator
API
ff-mac-csched-sap.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Manuel Requena <manuel.requena@cttc.es>
18 */
19
20#ifndef FF_MAC_CSCHED_SAP_H
21#define FF_MAC_CSCHED_SAP_H
22
23#include "ff-mac-common.h"
24
25#include <stdint.h>
26#include <vector>
27
28namespace ns3
29{
30
46{
47 public:
49
59 {
61
64 {
68
69 uint8_t m_nSb;
70
73 {
79
81
83
85
86 uint16_t m_ulBandwidth;
87 uint16_t m_dlBandwidth;
88
91
93
96 {
98 DM_FDD
100
103 std::vector<uint8_t> m_mbsfnSubframeConfigRfPeriod;
104 std::vector<uint8_t> m_mbsfnSubframeConfigRfOffset;
105 std::vector<uint8_t>
112 uint16_t m_n1PucchAn;
114 uint8_t m_nrbCqi;
115 uint8_t m_ncsAn;
120
123 {
127
128 std::vector<struct VendorSpecificListElement_s>
130 };
131
138 {
139 uint16_t m_rnti;
144
147 {
150 OFF
152
164
167 {
172
174 uint8_t m_maxHarqTx;
180
183 {
191
194 {
198
200
201 std::vector<struct VendorSpecificListElement_s>
203 };
204
210 {
211 uint16_t m_rnti;
213
214 std::vector<struct LogicalChannelConfigListElement_s>
216
217 std::vector<struct VendorSpecificListElement_s>
219 };
220
226 {
227 uint16_t m_rnti;
228
229 std::vector<uint8_t> m_logicalChannelIdentity;
230
231 std::vector<struct VendorSpecificListElement_s>
233 };
234
240 {
241 uint16_t m_rnti;
242
243 std::vector<struct VendorSpecificListElement_s>
245 };
246
247 //
248 // CSCHED - MAC Scheduler Control SAP primitives
249 // (See 4.1 for description of the primitives)
250 //
251
258
264 virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters& params) = 0;
265
271 virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters& params) = 0;
272
279
286
287 private:
288};
289
294{
295 public:
296 virtual ~FfMacCschedSapUser();
297
307 {
309
310 std::vector<struct VendorSpecificListElement_s>
312 };
313
319 {
320 uint16_t m_rnti;
322
323 std::vector<struct VendorSpecificListElement_s>
325 };
326
332 {
333 uint16_t m_rnti;
335
336 std::vector<uint8_t> m_logicalChannelIdentity;
337
338 std::vector<struct VendorSpecificListElement_s>
340 };
341
347 {
348 uint16_t m_rnti;
350
351 std::vector<uint8_t> m_logicalChannelIdentity;
352
353 std::vector<struct VendorSpecificListElement_s>
355 };
356
362 {
363 uint16_t m_rnti;
365
366 std::vector<struct VendorSpecificListElement_s>
368 };
369
375 {
376 uint16_t m_rnti;
384
385 std::vector<struct VendorSpecificListElement_s>
387 };
388
394 {
397
398 std::vector<struct VendorSpecificListElement_s>
400 };
401
402 //
403 // CSCHED - MAC Scheduler Control SAP primitives
404 // (See 4.1 for description of the primitives)
405 //
406
413
419 virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters& params) = 0;
420
426 virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters& params) = 0;
427
434
441
448 const struct CschedUeConfigUpdateIndParameters& params) = 0;
449
457
458 private:
459};
460
462template <class C>
464{
465 public:
471 MemberCschedSapProvider(C* scheduler);
472
473 // Delete default constructor to avoid misuse
475
476 // inherited from FfMacCschedSapProvider
477 void CschedCellConfigReq(const struct CschedCellConfigReqParameters& params) override;
478 void CschedUeConfigReq(const struct CschedUeConfigReqParameters& params) override;
479 void CschedLcConfigReq(const struct CschedLcConfigReqParameters& params) override;
480 void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters& params) override;
481 void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters& params) override;
482
483 private:
485};
486
487template <class C>
489 : m_scheduler(scheduler)
490{
491}
492
493template <class C>
494void
496{
497 m_scheduler->DoCschedCellConfigReq(params);
498}
499
500template <class C>
501void
503{
504 m_scheduler->DoCschedUeConfigReq(params);
505}
506
507template <class C>
508void
510{
511 m_scheduler->DoCschedLcConfigReq(params);
512}
513
514template <class C>
515void
517{
518 m_scheduler->DoCschedLcReleaseReq(params);
519}
520
521template <class C>
522void
524{
525 m_scheduler->DoCschedUeReleaseReq(params);
526}
527
528} // end namespace ns3
529
530#endif /* FF_MAC_CSCHED_SAP_H */
Provides the CSCHED SAP.
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters &params)=0
CSCHED_UE_CONFIG_REQ.
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters &params)=0
CSCHED_UE_RELEASE_REQ.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)=0
CSCHED_CELL_CONFIG_REQ.
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters &params)=0
CSCHED_LC_CONFIG_REQ.
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters &params)=0
CSCHED_LC_RELEASE_REQ.
FfMacCschedSapUser class.
virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters &params)=0
CSCHED_UE_RELEASE_CNF.
virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters &params)=0
CSCHED_CELL_CONFIG_CNF.
virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters &params)=0
CSCHED_LC_RELEASE_CNF.
virtual void CschedUeConfigUpdateInd(const struct CschedUeConfigUpdateIndParameters &params)=0
CSCHED_UE_UPDATE_IND.
virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters &params)=0
CSCHED_LC_CONFIG_CNF.
virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters &params)=0
CSCHED_UE_CONFIG_CNF.
virtual void CschedCellConfigUpdateInd(const struct CschedCellConfigUpdateIndParameters &params)=0
CSCHED_UE_CONFIG_IND.
MemberCschedSapProvider class.
void CschedUeConfigReq(const struct CschedUeConfigReqParameters &params) override
CSCHED_UE_CONFIG_REQ.
void CschedLcConfigReq(const struct CschedLcConfigReqParameters &params) override
CSCHED_LC_CONFIG_REQ.
void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters &params) override
CSCHED_LC_RELEASE_REQ.
void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params) override
CSCHED_CELL_CONFIG_REQ.
void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters &params) override
CSCHED_UE_RELEASE_REQ.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Result_e
Result_e enumeration.
Definition: ff-mac-common.h:61
NormalExtended_e
NormalExtended_e enumeration.
Definition: ff-mac-common.h:83
params
Fit Fluctuating Two Ray model to the 3GPP TR 38.901 using the Anderson-Darling goodness-of-fit ##.
See section 4.3.19 cqiConfig.
See section 4.3.16 drxConfig.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::PhichResource_e m_phichResource
PHICH resource.
uint8_t m_initialNrOfPdcchOfdmSymbols
initial number of PDCCH OFDM symbols
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::DuplexMode_e m_duplexMode
duplex mode
uint8_t m_srsSubframeConfiguration
SRS subframe configuration.
uint8_t m_maxHarqMsg3Tx
maximum HARQ message 3 transmit
enum NormalExtended_e m_ulCyclicPrefixLength
UL cyclic prefix length.
std::vector< uint8_t > m_mbsfnSubframeConfigRfOffset
MBS subframe config RF offset.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::HoppingMode_e m_hoppingMode
hopping mode
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< uint8_t > m_mbsfnSubframeConfigSfAllocation
MBS subframe config SF allocation.
uint8_t m_srsBandwidthConfiguration
SRS bandwidth configuration.
enum NormalExtended_e m_dlCyclicPrefixLength
DL cyclic prefix length.
struct SiConfiguration_s m_siConfiguration
SI configuration.
std::vector< uint8_t > m_mbsfnSubframeConfigRfPeriod
MBS subframe config RF period.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::Enable64Qam_e m_enable64Qam
enable64Qam
uint8_t m_macContentionResolutionTimer
MAC contention resolution timer.
Parameters of the CSCHED_LC_CONFIG_REQ primitive.
std::vector< struct LogicalChannelConfigListElement_s > m_logicalChannelConfigList
logicalChannelConfigList
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
Parameters of the CSCHED_LC_RELEASE_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
Parameters of the CSCHED_UE_CONFIG_REQ primitive.
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::OpenClosedLoop_e m_ueTransmitAntennaSelection
ueTransmitAntennaSelection
bool m_simultaneousAckNackAndCqi
simultaneous ack nack and CQI
MeasGapConfigPattern_e
MeasGapConfigPattern_e enumeration.
struct UeCapabilities_s m_ueCapabilities
UE capabilities.
uint8_t m_measGapConfigSubframeOffset
measure gap config subframe offset
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::RepMode_e m_aperiodicCqiRepMode
aperiodicCqiRepMode
bool m_ackNackSrsSimultaneousTransmission
ack nack SRS simultaneous transmission
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::FeedbackMode_e m_tddAckNackFeedbackMode
tddAckNackFeedbackMode
uint64_t m_ueAggregatedMaximumBitrateDl
UE aggregate maximum bit rate DL.
uint64_t m_ueAggregatedMaximumBitrateUl
UE aggregate maximum bit rate UL.
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::MeasGapConfigPattern_e m_measGapConfigPattern
measGapConfigPattern
Parameters of the CSCHED_UE_RELEASE_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_LC_CONFIG_CNF primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
Parameters of the CSCHED_LC_RELEASE_CNF primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
Parameters of the CSCHED_UE_CONFIG_CNF primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_UE_RELEASE_CNF primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
See section 4.3.21 siConfiguration.
See section 4.3.17 spsConfig.
See section 4.3.18 srConfig.
See section 4.3.20 ueCapabilities.