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<struct VendorSpecificListElement_s>
130  };
131 
138  {
139  uint16_t m_rnti;
142  struct DrxConfig_s m_drxConfig;
144 
147  {
150  OFF
152 
155  struct SpsConfig_s m_spsConfig;
157  struct SrConfig_s m_srConfig;
159  struct CqiConfig_s m_cqiConfig;
164 
167  {
170  closedloop
172 
174  uint8_t m_maxHarqTx;
180 
183  {
189  nonemode
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 
278  virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters& params) = 0;
279 
285  virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters& params) = 0;
286 
287  private:
288 };
289 
294 {
295  public:
296  virtual ~FfMacCschedSapUser();
297 
307  {
308  enum Result_e m_result;
309 
310  std::vector<struct VendorSpecificListElement_s>
312  };
313 
319  {
320  uint16_t m_rnti;
321  enum Result_e m_result;
322 
323  std::vector<struct VendorSpecificListElement_s>
325  };
326 
332  {
333  uint16_t m_rnti;
334  enum Result_e m_result;
335 
336  std::vector<uint8_t> m_logicalChannelIdentity;
337 
338  std::vector<struct VendorSpecificListElement_s>
340  };
341 
347  {
348  uint16_t m_rnti;
349  enum Result_e m_result;
350 
351  std::vector<uint8_t> m_logicalChannelIdentity;
352 
353  std::vector<struct VendorSpecificListElement_s>
355  };
356 
362  {
363  uint16_t m_rnti;
364  enum Result_e m_result;
365 
366  std::vector<struct VendorSpecificListElement_s>
368  };
369 
375  {
376  uint16_t m_rnti;
379  struct SpsConfig_s m_spsConfig;
381  struct SrConfig_s m_srConfig;
383  struct CqiConfig_s m_cqiConfig;
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 
433  virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters& params) = 0;
434 
440  virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters& params) = 0;
441 
448  const struct CschedUeConfigUpdateIndParameters& params) = 0;
449 
456  const struct CschedCellConfigUpdateIndParameters& params) = 0;
457 
458  private:
459 };
460 
462 template <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 
487 template <class C>
489  : m_scheduler(scheduler)
490 {
491 }
492 
493 template <class C>
494 void
496 {
497  m_scheduler->DoCschedCellConfigReq(params);
498 }
499 
500 template <class C>
501 void
503 {
504  m_scheduler->DoCschedUeConfigReq(params);
505 }
506 
507 template <class C>
508 void
510 {
511  m_scheduler->DoCschedLcConfigReq(params);
512 }
513 
514 template <class C>
515 void
517 {
518  m_scheduler->DoCschedLcReleaseReq(params);
519 }
520 
521 template <class C>
522 void
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.