A Discrete-Event Network Simulator
API
ff-mac-sched-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_SCHED_SAP_H
21 #define FF_MAC_SCHED_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 ~FfMacSchedSapProvider();
49 
59  {
60  uint16_t m_rnti;
66  uint16_t m_rlcStatusPduSize;
67 
68  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
69  };
70 
76  {
77  uint16_t m_rnti;
78  std::vector<PagingInfoListElement_s> m_pagingInfoList;
79 
80  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
81  };
82 
88  {
89  uint16_t m_rnti;
91 
92  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
93  };
94 
100  {
101  uint16_t m_sfnSf;
102  std::vector<DlInfoListElement_s> m_dlInfoList;
103 
104  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
105  };
106 
112  {
113  uint16_t m_sfnSf;
114  std::vector<RachListElement_s> m_rachList;
115 
116  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
117  };
118 
124  {
125  uint16_t m_sfnSf;
126  std::vector<CqiListElement_s> m_cqiList;
127 
128  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
129  };
130 
136  {
137  uint16_t m_sfnSf;
138  std::vector<UlInfoListElement_s> m_ulInfoList;
139 
140  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
141  };
142 
148  {
149  uint16_t m_sfnSf;
150  uint16_t m_rip;
151  uint16_t m_tnp;
152 
153  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
154  };
155 
161  {
162  uint16_t m_sfnSf;
163  std::vector<SrListElement_s> m_srList;
164 
165  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
166  };
167 
173  {
174  uint16_t m_sfnSf;
175  std::vector<MacCeListElement_s> m_macCeList;
176 
177  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
178  };
179 
185  {
186  uint16_t m_sfnSf;
188 
189  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
190  };
191 
192  //
193  // SCHED - MAC Scheduler SAP primitives
194  // (See 4.2 for description of the primitives)
195  //
196 
203 
210 
217 
224 
231 
238 
245 
253 
260 
267 
274 
275  private:
276 };
277 
280 {
281  public:
282  virtual ~FfMacSchedSapUser();
283 
293  {
294  std::vector<BuildDataListElement_s> m_buildDataList;
295  std::vector<BuildRarListElement_s> m_buildRarList;
296  std::vector<BuildBroadcastListElement_s> m_buildBroadcastList;
297 
299 
300  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
301  };
302 
308  {
309  std::vector<UlDciListElement_s> m_dciList;
310  std::vector<PhichListElement_s> m_phichList;
311 
312  std::vector<VendorSpecificListElement_s> m_vendorSpecificList;
313  };
314 
315  //
316  // SCHED - MAC Scheduler SAP primitives
317  // (See 4.2 for description of the primitives)
318  //
319 
326 
333 
334  private:
335 };
336 
338 template <class C>
340 {
341  public:
347  MemberSchedSapProvider(C* scheduler);
348 
349  // Delete default constructor to avoid misuse
351 
352  // inherited from FfMacSchedSapProvider
361  void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters& params) override;
364 
365  private:
367 };
368 
369 template <class C>
371  : m_scheduler(scheduler)
372 {
373 }
374 
375 template <class C>
376 void
378 {
379  m_scheduler->DoSchedDlRlcBufferReq(params);
380 }
381 
382 template <class C>
383 void
385 {
386  m_scheduler->DoSchedDlPagingBufferReq(params);
387 }
388 
389 template <class C>
390 void
392 {
393  m_scheduler->DoSchedDlMacBufferReq(params);
394 }
395 
396 template <class C>
397 void
399 {
400  m_scheduler->DoSchedDlTriggerReq(params);
401 }
402 
403 template <class C>
404 void
406 {
407  m_scheduler->DoSchedDlRachInfoReq(params);
408 }
409 
410 template <class C>
411 void
413 {
414  m_scheduler->DoSchedDlCqiInfoReq(params);
415 }
416 
417 template <class C>
418 void
420 {
421  m_scheduler->DoSchedUlTriggerReq(params);
422 }
423 
424 template <class C>
425 void
428 {
429  m_scheduler->DoSchedUlNoiseInterferenceReq(params);
430 }
431 
432 template <class C>
433 void
435 {
436  m_scheduler->DoSchedUlSrInfoReq(params);
437 }
438 
439 template <class C>
440 void
442 {
443  m_scheduler->DoSchedUlMacCtrlInfoReq(params);
444 }
445 
446 template <class C>
447 void
449 {
450  m_scheduler->DoSchedUlCqiInfoReq(params);
451 }
452 
453 } // namespace ns3
454 
455 #endif /* FF_MAC_SCHED_SAP_H */
Provides the SCHED SAP.
virtual void SchedDlTriggerReq(const SchedDlTriggerReqParameters &params)=0
SCHED_DL_TRIGGER_REQ.
virtual void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters &params)=0
SCHED_DL_RACH_INFO_REQ.
virtual void SchedUlMacCtrlInfoReq(const SchedUlMacCtrlInfoReqParameters &params)=0
SCHED_UL_MAC_CTRL_INFO_REQ.
virtual void SchedUlCqiInfoReq(const SchedUlCqiInfoReqParameters &params)=0
SCHED_UL_CQI_INFO_REQ.
virtual void SchedUlTriggerReq(const SchedUlTriggerReqParameters &params)=0
SCHED_UL_TRIGGER_REQ.
virtual void SchedDlRlcBufferReq(const SchedDlRlcBufferReqParameters &params)=0
SCHED_DL_RLC_BUFFER_REQ.
virtual void SchedUlNoiseInterferenceReq(const SchedUlNoiseInterferenceReqParameters &params)=0
SCHED_UL_NOISE_INTERFERENCE_REQ.
virtual void SchedDlCqiInfoReq(const SchedDlCqiInfoReqParameters &params)=0
SCHED_DL_CQI_INFO_REQ.
virtual void SchedDlMacBufferReq(const SchedDlMacBufferReqParameters &params)=0
SCHED_DL_MAC_BUFFER_REQ.
virtual void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters &params)=0
SCHED_UL_SR_INFO_REQ.
virtual void SchedDlPagingBufferReq(const SchedDlPagingBufferReqParameters &params)=0
SCHED_DL_PAGING_BUFFER_REQ.
FfMacSchedSapUser class.
virtual void SchedUlConfigInd(const SchedUlConfigIndParameters &params)=0
SCHED_UL_CONFIG_IND.
virtual void SchedDlConfigInd(const SchedDlConfigIndParameters &params)=0
SCHED_DL_CONFIG_IND.
MemberSchedSapProvider class.
void SchedUlMacCtrlInfoReq(const SchedUlMacCtrlInfoReqParameters &params) override
SCHED_UL_MAC_CTRL_INFO_REQ.
void SchedUlTriggerReq(const SchedUlTriggerReqParameters &params) override
SCHED_UL_TRIGGER_REQ.
void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters &params) override
SCHED_DL_RACH_INFO_REQ.
C * m_scheduler
the scheduler class
void SchedDlCqiInfoReq(const SchedDlCqiInfoReqParameters &params) override
SCHED_DL_CQI_INFO_REQ.
void SchedUlNoiseInterferenceReq(const SchedUlNoiseInterferenceReqParameters &params) override
SCHED_UL_NOISE_INTERFERENCE_REQ.
void SchedUlCqiInfoReq(const SchedUlCqiInfoReqParameters &params) override
SCHED_UL_CQI_INFO_REQ.
void SchedDlTriggerReq(const SchedDlTriggerReqParameters &params) override
SCHED_DL_TRIGGER_REQ.
void SchedDlRlcBufferReq(const SchedDlRlcBufferReqParameters &params) override
SCHED_DL_RLC_BUFFER_REQ.
void SchedDlMacBufferReq(const SchedDlMacBufferReqParameters &params) override
SCHED_DL_MAC_BUFFER_REQ.
void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters &params) override
SCHED_UL_SR_INFO_REQ.
void SchedDlPagingBufferReq(const SchedDlPagingBufferReqParameters &params) override
SCHED_DL_PAGING_BUFFER_REQ.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
CeBitmap_e
CeBitmap_e.
Definition: ff-mac-common.h:75
params
Fit Fluctuating Two Ray model to the 3GPP TR 38.901 using the Anderson-Darling goodness-of-fit ##.
Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
std::vector< CqiListElement_s > m_cqiList
CQI list.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_DL_MAC_BUFFER_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_DL_PAGING_BUFFER_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< PagingInfoListElement_s > m_pagingInfoList
paging info list
Parameters of the SCHED_DL_RACH_INFO_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< RachListElement_s > m_rachList
RACH list.
uint16_t m_rlcRetransmissionHolDelay
RLC retransmission HOL delay.
uint32_t m_rlcRetransmissionQueueSize
RLC retransmission queue size.
uint16_t m_rlcTransmissionQueueHolDelay
RLC transmission queue HOL delay.
uint32_t m_rlcTransmissionQueueSize
RLC transmission queue size.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_DL_TRIGGER_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< DlInfoListElement_s > m_dlInfoList
DL info list.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive.
std::vector< MacCeListElement_s > m_macCeList
MAC CE list.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_UL_NOISE_INTERFERENCE_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_UL_SR_INFO_REQ primitive.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< SrListElement_s > m_srList
SR list.
Parameters of the SCHED_UL_TRIGGER_REQ primitive.
std::vector< UlInfoListElement_s > m_ulInfoList
UL info list.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< BuildDataListElement_s > m_buildDataList
build data list
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< BuildRarListElement_s > m_buildRarList
build rar list
uint8_t m_nrOfPdcchOfdmSymbols
number of PDCCH OFDM symbols
std::vector< BuildBroadcastListElement_s > m_buildBroadcastList
build broadcast list
Parameters of the SCHED_UL_CONFIG_IND primitive.
std::vector< UlDciListElement_s > m_dciList
DCI list.
std::vector< PhichListElement_s > m_phichList
PHICH list.
std::vector< VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
See section 4.3.29 ulCQI.