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
29namespace ns3 {
30
46{
47public:
48 virtual ~FfMacCschedSapProvider ();
49
59 {
61
64 {
68
69 uint8_t m_nSb;
70
73 {
79
80
82
84
86
87 uint16_t m_ulBandwidth;
88 uint16_t m_dlBandwidth;
89
92
94
97 {
99 DM_FDD
101
104 std::vector <uint8_t> m_mbsfnSubframeConfigRfPeriod;
105 std::vector <uint8_t> m_mbsfnSubframeConfigRfOffset;
106 std::vector <uint8_t> m_mbsfnSubframeConfigSfAllocation;
112 uint16_t m_n1PucchAn;
114 uint8_t m_nrbCqi;
115 uint8_t m_ncsAn;
120
123 {
127
128 std::vector <struct 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 {
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
276private:
277};
278
279
284{
285public:
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
439private:
440};
441
442
444template <class C>
446{
447public:
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
462private:
465};
466
467template <class C>
469{
470}
471
472template <class C>
473MemberCschedSapProvider<C>::MemberCschedSapProvider (C* scheduler) : m_scheduler (scheduler)
474{
475}
476
477template <class C>
478void
480{
481 m_scheduler->DoCschedCellConfigReq (params);
482}
483
484template <class C>
485void
487{
488 m_scheduler->DoCschedUeConfigReq (params);
489}
490
491template <class C>
492void
494{
495 m_scheduler->DoCschedLcConfigReq (params);
496}
497
498template <class C>
499void
501{
502 m_scheduler->DoCschedLcReleaseReq (params);
503}
504
505template <class C>
506void
508{
509 m_scheduler->DoCschedUeReleaseReq (params);
510}
511
512
513} // end namespace ns3
514
515#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.
virtual void CschedLcConfigReq(const struct CschedLcConfigReqParameters &params)
CSCHED_LC_CONFIG_REQ.
virtual void CschedUeReleaseReq(const struct CschedUeReleaseReqParameters &params)
CSCHED_UE_RELEASE_REQ.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)
CSCHED_CELL_CONFIG_REQ.
virtual void CschedLcReleaseReq(const struct CschedLcReleaseReqParameters &params)
CSCHED_LC_RELEASE_REQ.
virtual void CschedUeConfigReq(const struct CschedUeConfigReqParameters &params)
CSCHED_UE_CONFIG_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_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 enumaration.
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.