A Discrete-Event Network Simulator
API
ff-mac-csched-sap.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Manuel Requena <manuel.requena@cttc.es>
19  */
20 
21 #ifndef FF_MAC_CSCHED_SAP_H
22 #define FF_MAC_CSCHED_SAP_H
23 
24 #include <stdint.h>
25 #include <vector>
26 
27 #include "ff-mac-common.h"
28 
29 namespace ns3 {
30 
46 {
47 public:
48  virtual ~FfMacCschedSapProvider ();
49 
59  {
61 
64  {
67  } m_hoppingMode;
68 
69  uint8_t m_nSb;
70 
73  {
78  } m_phichResource;
79 
80 
82 
84 
86 
87  uint8_t m_ulBandwidth;
88  uint8_t m_dlBandwidth;
89 
92 
94 
97  {
100  } m_duplexMode;
101 
104  std::vector <uint8_t> m_mbsfnSubframeConfigRfPeriod;
105  std::vector <uint8_t> m_mbsfnSubframeConfigRfOffset;
106  std::vector <uint8_t> m_mbsfnSubframeConfigSfAllocation;
111  uint8_t m_maxHarqMsg3Tx;
112  uint16_t m_n1PucchAn;
114  uint8_t m_nrbCqi;
115  uint8_t m_ncsAn;
120 
123  {
126  } m_enable64Qam;
127 
128  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
129  };
130 
137  {
138  uint16_t m_rnti;
143 
146  {
151 
163 
166  {
171 
173  uint8_t m_maxHarqTx;
179 
182  {
185 
188  {
192 
194 
195  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
196  };
197 
203  {
204  uint16_t m_rnti;
206 
207  std::vector <struct LogicalChannelConfigListElement_s> m_logicalChannelConfigList;
208 
209  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
210  };
211 
217  {
218  uint16_t m_rnti;
219 
220  std::vector <uint8_t> m_logicalChannelIdentity;
221 
222  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
223  };
224 
230  {
231  uint16_t m_rnti;
232 
233  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
234  };
235 
236  //
237  // CSCHED - MAC Scheduler Control SAP primitives
238  // (See 4.1 for description of the primitives)
239  //
240 
246  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params) = 0;
247 
253  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params) = 0;
254 
260  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params) = 0;
261 
267  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params) = 0;
268 
274  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params) = 0;
275 
276 private:
277 };
278 
279 
284 {
285 public:
286  virtual ~FfMacCschedSapUser ();
287 
297  {
299 
300  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
301  };
302 
308  {
309  uint16_t m_rnti;
311 
312  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
313  };
314 
320  {
321  uint16_t m_rnti;
323 
324  std::vector <uint8_t> m_logicalChannelIdentity;
325 
326  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
327  };
328 
334  {
335  uint16_t m_rnti;
337 
338  std::vector <uint8_t> m_logicalChannelIdentity;
339 
340  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
341  };
342 
348  {
349  uint16_t m_rnti;
351 
352  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
353  };
354 
360  {
361  uint16_t m_rnti;
369 
370  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
371  };
372 
378  {
381 
382  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
383  };
384 
385  //
386  // CSCHED - MAC Scheduler Control SAP primitives
387  // (See 4.1 for description of the primitives)
388  //
389 
395  virtual void CschedCellConfigCnf (const struct CschedCellConfigCnfParameters& params) = 0;
396 
402  virtual void CschedUeConfigCnf (const struct CschedUeConfigCnfParameters& params) = 0;
403 
409  virtual void CschedLcConfigCnf (const struct CschedLcConfigCnfParameters& params) = 0;
410 
416  virtual void CschedLcReleaseCnf (const struct CschedLcReleaseCnfParameters& params) = 0;
417 
423  virtual void CschedUeReleaseCnf (const struct CschedUeReleaseCnfParameters& params) = 0;
424 
430  virtual void CschedUeConfigUpdateInd (const struct CschedUeConfigUpdateIndParameters& params) = 0;
431 
437  virtual void CschedCellConfigUpdateInd (const struct CschedCellConfigUpdateIndParameters& params) = 0;
438 
439 private:
440 };
441 
442 
444 template <class C>
446 {
447 public:
453  MemberCschedSapProvider (C* scheduler);
454 
455  // inherited from FfMacCschedSapProvider
456  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params);
457  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params);
458  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params);
459  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params);
460  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params);
461 
462 private:
465 };
466 
467 template <class C>
469 {
470 }
471 
472 template <class C>
473 MemberCschedSapProvider<C>::MemberCschedSapProvider (C* scheduler) : m_scheduler (scheduler)
474 {
475 }
476 
477 template <class C>
478 void
480 {
481  m_scheduler->DoCschedCellConfigReq (params);
482 }
483 
484 template <class C>
485 void
487 {
488  m_scheduler->DoCschedUeConfigReq (params);
489 }
490 
491 template <class C>
492 void
494 {
495  m_scheduler->DoCschedLcConfigReq (params);
496 }
497 
498 template <class C>
499 void
501 {
502  m_scheduler->DoCschedLcReleaseReq (params);
503 }
504 
505 template <class C>
506 void
508 {
509  m_scheduler->DoCschedUeReleaseReq (params);
510 }
511 
512 
513 } // end namespace ns3
514 
515 #endif /* FF_MAC_CSCHED_SAP_H */
Parameters of the CSCHED_LC_CONFIG_CNF primitive.
uint64_t m_ueAggregatedMaximumBitrateUl
UE aggregate maximum bit rate UL.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters &params)=0
CSCHED_UE_CONFIG_REQ.
Parameters of the CSCHED_UE_CONFIG_CNF primitive.
Parameters of the CSCHED_UE_RELEASE_REQ primitive.
Parameters of the CSCHED_CELL_CONFIG_UPDATE_IND primitive.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::Enable64Qam_e m_enable64Qam
enable64Qam
See section 4.3.19 cqiConfig.
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters &params)
CSCHED_UE_CONFIG_REQ.
std::vector< struct LogicalChannelConfigListElement_s > m_logicalChannelConfigList
logicalChannelConfigList
Provides the CSCHED SAP.
Parameters of the CSCHED_UE_CONFIG_UPDATE_IND primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_LC_RELEASE_REQ primitive.
struct SiConfiguration_s m_siConfiguration
SI configuration.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::HoppingMode_e m_hoppingMode
hopping mode
uint8_t m_initialNrOfPdcchOfdmSymbols
initial number of PDCCH OFDM symbols
bool m_ackNackSrsSimultaneousTransmission
ack nack SRS simultaneous transmission
uint8_t m_srsBandwidthConfiguration
SRS bandwidth configuration.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void CschedCellConfigUpdateInd(const struct CschedCellConfigUpdateIndParameters &params)=0
CSCHED_UE_CONFIG_IND.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::PhichResource_e m_phichResource
PHICH resource.
std::vector< uint8_t > m_mbsfnSubframeConfigRfPeriod
MBS subframe config RF period.
Parameters of the CSCHED_LC_RELEASE_CNF primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void CschedUeConfigUpdateInd(const struct CschedUeConfigUpdateIndParameters &params)=0
CSCHED_UE_UPDATE_IND.
virtual void CschedLcReleaseCnf(const struct CschedLcReleaseCnfParameters &params)=0
CSCHED_LC_RELEASE_CNF.
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
See section 4.3.20 ueCapabilities.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
std::vector< uint8_t > m_mbsfnSubframeConfigSfAllocation
MBS subframe config SF allocation.
uint8_t m_srsSubframeConfiguration
SRS subframe confguration.
See section 4.3.21 siConfiguration.
virtual void CschedUeConfigCnf(const struct CschedUeConfigCnfParameters &params)=0
CSCHED_UE_CONFIG_CNF.
See section 4.3.17 spsConfig.
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::MeasGapConfigPattern_e m_measGapConfigPattern
measGapConfigPattern
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)=0
CSCHED_CELL_CONFIG_REQ.
std::vector< uint8_t > m_logicalChannelIdentity
logical channel identity
Result_e
Result_e enumeration.
Definition: ff-mac-common.h:60
NormalExtended_e
NormalExtended_e enumeration.
Definition: ff-mac-common.h:82
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters &params)=0
CSCHED_UE_RELEASE_REQ.
enum NormalExtended_e m_phichDuration
PHICH duration.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t m_macContentionResolutionTimer
MAC contention resolution timer.
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::FeedbackMode_e m_tddAckNackFeedbackMode
tddAckNackFeedbackMode
Parameters of the CSCHED_LC_CONFIG_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters &params)
CSCHED_LC_CONFIG_REQ.
MemberCschedSapProvider class.
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters &params)
CSCHED_UE_RELEASE_REQ.
virtual void CschedLcConfigCnf(const struct CschedLcConfigCnfParameters &params)=0
CSCHED_LC_CONFIG_CNF.
uint8_t m_measGapConfigSubframeOffset
measure gap config subframe offset
uint64_t m_ueAggregatedMaximumBitrateDl
UE aggregate maximum bit rate DL.
See section 4.3.18 srConfig.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
FfMacCschedSapUser class.
C * m_scheduler
scheduler class
virtual void CschedCellConfigCnf(const struct CschedCellConfigCnfParameters &params)=0
CSCHED_CELL_CONFIG_CNF.
std::vector< uint8_t > m_mbsfnSubframeConfigRfOffset
MBS subframe config RF offset.
bool m_simultaneousAckNackAndCqi
simultaneous ack nack and CQI
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::RepMode_e m_aperiodicCqiRepMode
aperiodicCqiRepMode
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters &params)
CSCHED_LC_RELEASE_REQ.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
uint8_t m_maxHarqMsg3Tx
maximum HARQ message 3 transmit
See section 4.3.16 drxConfig.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
virtual void CschedUeReleaseCnf(const struct CschedUeReleaseCnfParameters &params)=0
CSCHED_UE_RELEASE_CNF.
enum NormalExtended_e m_dlCyclicPrefixLength
DL cyclic prefix length.
MeasGapConfigPattern_e
MeasGapConfigPattern_e enumaration.
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters &params)=0
CSCHED_LC_CONFIG_REQ.
enum ns3::FfMacCschedSapProvider::CschedUeConfigReqParameters::OpenClosedLoop_e m_ueTransmitAntennaSelection
ueTransmitAntennaSelection
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the CSCHED_UE_CONFIG_REQ primitive.
enum NormalExtended_e m_ulCyclicPrefixLength
UL cyclic prefix length.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendorSpecificList
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)
CSCHED_CELL_CONFIG_REQ.
enum ns3::FfMacCschedSapProvider::CschedCellConfigReqParameters::DuplexMode_e m_duplexMode
duplex mode
Parameters of the CSCHED_UE_RELEASE_CNF primitive.
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters &params)=0
CSCHED_LC_RELEASE_REQ.
struct UeCapabilities_s m_ueCapabilities
UE capabilities.