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 
28 namespace ns3
29 {
30 
46 {
47  public:
48  virtual ~FfMacCschedSapProvider();
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>
111  uint8_t m_maxHarqMsg3Tx;
112  uint16_t m_n1PucchAn;
114  uint8_t m_nrbCqi;
115  uint8_t m_ncsAn;
120 
123  {
125  MOD_64QAM
127 
128  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
129  };
130 
137  {
138  uint16_t m_rnti;
143 
146  {
149  OFF
151 
163 
166  {
169  closedloop
171 
173  uint8_t m_maxHarqTx;
179 
182  {
188  nonemode
190 
193  {
197 
199 
200  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
201  };
202 
208  {
209  uint16_t m_rnti;
211 
212  std::vector<LogicalChannelConfigListElement_s>
214 
215  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
216  };
217 
223  {
224  uint16_t m_rnti;
225 
226  std::vector<uint8_t> m_logicalChannelIdentity;
227 
228  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
229  };
230 
236  {
237  uint16_t m_rnti;
238 
239  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
240  };
241 
242  //
243  // CSCHED - MAC Scheduler Control SAP primitives
244  // (See 4.1 for description of the primitives)
245  //
246 
253 
260 
267 
274 
281 
282  private:
283 };
284 
289 {
290  public:
291  virtual ~FfMacCschedSapUser();
292 
302  {
304 
305  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
306  };
307 
313  {
314  uint16_t m_rnti;
316 
317  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
318  };
319 
325  {
326  uint16_t m_rnti;
328 
329  std::vector<uint8_t> m_logicalChannelIdentity;
330 
331  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
332  };
333 
339  {
340  uint16_t m_rnti;
342 
343  std::vector<uint8_t> m_logicalChannelIdentity;
344 
345  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
346  };
347 
353  {
354  uint16_t m_rnti;
356 
357  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
358  };
359 
365  {
366  uint16_t m_rnti;
374 
375  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
376  };
377 
383  {
386 
387  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
388  };
389 
390  //
391  // CSCHED - MAC Scheduler Control SAP primitives
392  // (See 4.1 for description of the primitives)
393  //
394 
401 
408 
415 
422 
429 
436 
443 
444  private:
445 };
446 
448 template <class C>
450 {
451  public:
457  MemberCschedSapProvider(C* scheduler);
458 
459  // Delete default constructor to avoid misuse
461 
462  // inherited from FfMacCschedSapProvider
468 
469  private:
471 };
472 
473 template <class C>
475  : m_scheduler(scheduler)
476 {
477 }
478 
479 template <class C>
480 void
482 {
483  m_scheduler->DoCschedCellConfigReq(params);
484 }
485 
486 template <class C>
487 void
489 {
490  m_scheduler->DoCschedUeConfigReq(params);
491 }
492 
493 template <class C>
494 void
496 {
497  m_scheduler->DoCschedLcConfigReq(params);
498 }
499 
500 template <class C>
501 void
503 {
504  m_scheduler->DoCschedLcReleaseReq(params);
505 }
506 
507 template <class C>
508 void
510 {
511  m_scheduler->DoCschedUeReleaseReq(params);
512 }
513 
514 } // end namespace ns3
515 
516 #endif /* FF_MAC_CSCHED_SAP_H */
Provides the CSCHED SAP.
virtual void CschedLcConfigReq(const CschedLcConfigReqParameters &params)=0
CSCHED_LC_CONFIG_REQ.
virtual void CschedLcReleaseReq(const CschedLcReleaseReqParameters &params)=0
CSCHED_LC_RELEASE_REQ.
virtual void CschedUeConfigReq(const CschedUeConfigReqParameters &params)=0
CSCHED_UE_CONFIG_REQ.
virtual void CschedUeReleaseReq(const CschedUeReleaseReqParameters &params)=0
CSCHED_UE_RELEASE_REQ.
virtual void CschedCellConfigReq(const CschedCellConfigReqParameters &params)=0
CSCHED_CELL_CONFIG_REQ.
FfMacCschedSapUser class.
virtual void CschedUeConfigCnf(const CschedUeConfigCnfParameters &params)=0
CSCHED_UE_CONFIG_CNF.
virtual void CschedUeReleaseCnf(const CschedUeReleaseCnfParameters &params)=0
CSCHED_UE_RELEASE_CNF.
virtual void CschedCellConfigCnf(const CschedCellConfigCnfParameters &params)=0
CSCHED_CELL_CONFIG_CNF.
virtual void CschedLcReleaseCnf(const CschedLcReleaseCnfParameters &params)=0
CSCHED_LC_RELEASE_CNF.
virtual void CschedUeConfigUpdateInd(const CschedUeConfigUpdateIndParameters &params)=0
CSCHED_UE_UPDATE_IND.
virtual void CschedCellConfigUpdateInd(const CschedCellConfigUpdateIndParameters &params)=0
CSCHED_UE_CONFIG_IND.
virtual void CschedLcConfigCnf(const CschedLcConfigCnfParameters &params)=0
CSCHED_LC_CONFIG_CNF.
MemberCschedSapProvider class.
void CschedUeConfigReq(const CschedUeConfigReqParameters &params) override
CSCHED_UE_CONFIG_REQ.
void CschedUeReleaseReq(const CschedUeReleaseReqParameters &params) override
CSCHED_UE_RELEASE_REQ.
void CschedCellConfigReq(const CschedCellConfigReqParameters &params) override
CSCHED_CELL_CONFIG_REQ.
void CschedLcConfigReq(const CschedLcConfigReqParameters &params) override
CSCHED_LC_CONFIG_REQ.
void CschedLcReleaseReq(const CschedLcReleaseReqParameters &params) override
CSCHED_LC_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
std::vector< uint8_t > m_mbsfnSubframeConfigRfOffset
MBS subframe config RF offset.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::HoppingMode_e m_hoppingMode
hopping mode
std::vector< uint8_t > m_mbsfnSubframeConfigSfAllocation
MBS subframe config SF allocation.
uint8_t m_srsBandwidthConfiguration
SRS bandwidth configuration.
NormalExtended_e m_dlCyclicPrefixLength
DL cyclic prefix length.
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.
NormalExtended_e m_ulCyclicPrefixLength
UL cyclic prefix length.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_LC_CONFIG_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
std::vector< LogicalChannelConfigListElement_s > m_logicalChannelConfigList
logicalChannelConfigList
Parameters of the CSCHED_LC_RELEASE_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
Parameters of the CSCHED_UE_CONFIG_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::OpenClosedLoop_e m_ueTransmitAntennaSelection
ueTransmitAntennaSelection
bool m_simultaneousAckNackAndCqi
simultaneous ack nack and CQI
MeasGapConfigPattern_e
MeasGapConfigPattern_e enumeration.
uint8_t m_measGapConfigSubframeOffset
measure gap config subframe offset
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< VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_LC_CONFIG_CNF primitive.
std::vector< 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< 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< VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_UE_RELEASE_CNF primitive.
std::vector< 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.