A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
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<VendorSpecificListElement_s> m_vendorSpecificList;
129 };
130
137 {
138 uint16_t m_rnti;
143
146 {
149 OFF
151
163
166 {
171
173 uint8_t m_maxHarqTx;
179
182 {
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
252 virtual void CschedCellConfigReq(const CschedCellConfigReqParameters& params) = 0;
253
259 virtual void CschedUeConfigReq(const CschedUeConfigReqParameters& params) = 0;
260
266 virtual void CschedLcConfigReq(const CschedLcConfigReqParameters& params) = 0;
267
273 virtual void CschedLcReleaseReq(const CschedLcReleaseReqParameters& params) = 0;
274
280 virtual void CschedUeReleaseReq(const CschedUeReleaseReqParameters& params) = 0;
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
400 virtual void CschedCellConfigCnf(const CschedCellConfigCnfParameters& params) = 0;
401
407 virtual void CschedUeConfigCnf(const CschedUeConfigCnfParameters& params) = 0;
408
414 virtual void CschedLcConfigCnf(const CschedLcConfigCnfParameters& params) = 0;
415
421 virtual void CschedLcReleaseCnf(const CschedLcReleaseCnfParameters& params) = 0;
422
428 virtual void CschedUeReleaseCnf(const CschedUeReleaseCnfParameters& params) = 0;
429
436
443
444 private:
445};
446
448template <class C>
450{
451 public:
457 MemberCschedSapProvider(C* scheduler);
458
459 // Delete default constructor to avoid misuse
461
462 // inherited from FfMacCschedSapProvider
463 void CschedCellConfigReq(const CschedCellConfigReqParameters& params) override;
464 void CschedUeConfigReq(const CschedUeConfigReqParameters& params) override;
465 void CschedLcConfigReq(const CschedLcConfigReqParameters& params) override;
466 void CschedLcReleaseReq(const CschedLcReleaseReqParameters& params) override;
467 void CschedUeReleaseReq(const CschedUeReleaseReqParameters& params) override;
468
469 private:
471};
472
473template <class C>
475 : m_scheduler(scheduler)
476{
477}
478
479template <class C>
480void
482{
483 m_scheduler->DoCschedCellConfigReq(params);
484}
485
486template <class C>
487void
489{
490 m_scheduler->DoCschedUeConfigReq(params);
491}
492
493template <class C>
494void
496{
497 m_scheduler->DoCschedLcConfigReq(params);
498}
499
500template <class C>
501void
503{
504 m_scheduler->DoCschedLcReleaseReq(params);
505}
506
507template <class C>
508void
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
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.