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<struct VendorSpecificListElement_s>
70  };
71 
77  {
78  uint16_t m_rnti;
79  std::vector<struct PagingInfoListElement_s> m_pagingInfoList;
80 
81  std::vector<struct VendorSpecificListElement_s>
83  };
84 
90  {
91  uint16_t m_rnti;
92  enum CeBitmap_e m_ceBitmap;
93 
94  std::vector<struct VendorSpecificListElement_s>
96  };
97 
103  {
104  uint16_t m_sfnSf;
105  std::vector<struct DlInfoListElement_s> m_dlInfoList;
106 
107  std::vector<struct VendorSpecificListElement_s>
109  };
110 
116  {
117  uint16_t m_sfnSf;
118  std::vector<struct RachListElement_s> m_rachList;
119 
120  std::vector<struct VendorSpecificListElement_s>
122  };
123 
129  {
130  uint16_t m_sfnSf;
131  std::vector<struct CqiListElement_s> m_cqiList;
132 
133  std::vector<struct VendorSpecificListElement_s>
135  };
136 
142  {
143  uint16_t m_sfnSf;
144  std::vector<struct UlInfoListElement_s> m_ulInfoList;
145 
146  std::vector<struct VendorSpecificListElement_s>
148  };
149 
155  {
156  uint16_t m_sfnSf;
157  uint16_t m_rip;
158  uint16_t m_tnp;
159 
160  std::vector<struct VendorSpecificListElement_s>
162  };
163 
169  {
170  uint16_t m_sfnSf;
171  std::vector<struct SrListElement_s> m_srList;
172 
173  std::vector<struct VendorSpecificListElement_s>
175  };
176 
182  {
183  uint16_t m_sfnSf;
184  std::vector<struct MacCeListElement_s> m_macCeList;
185 
186  std::vector<struct VendorSpecificListElement_s>
188  };
189 
195  {
196  uint16_t m_sfnSf;
197  struct UlCqi_s m_ulCqi;
198 
199  std::vector<struct VendorSpecificListElement_s>
201  };
202 
203  //
204  // SCHED - MAC Scheduler SAP primitives
205  // (See 4.2 for description of the primitives)
206  //
207 
214 
221 
228 
234  virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters& params) = 0;
235 
241  virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters& params) = 0;
242 
248  virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters& params) = 0;
249 
255  virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters& params) = 0;
256 
264 
270  virtual void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters& params) = 0;
271 
278 
284  virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters& params) = 0;
285 
286  private:
287 };
288 
291 {
292  public:
293  virtual ~FfMacSchedSapUser();
294 
304  {
305  std::vector<struct BuildDataListElement_s> m_buildDataList;
306  std::vector<struct BuildRarListElement_s> m_buildRarList;
307  std::vector<struct BuildBroadcastListElement_s>
309 
311 
312  std::vector<struct VendorSpecificListElement_s>
314  };
315 
321  {
322  std::vector<struct UlDciListElement_s> m_dciList;
323  std::vector<struct PhichListElement_s> m_phichList;
324 
325  std::vector<struct VendorSpecificListElement_s>
327  };
328 
329  //
330  // SCHED - MAC Scheduler SAP primitives
331  // (See 4.2 for description of the primitives)
332  //
333 
339  virtual void SchedDlConfigInd(const struct SchedDlConfigIndParameters& params) = 0;
340 
346  virtual void SchedUlConfigInd(const struct SchedUlConfigIndParameters& params) = 0;
347 
348  private:
349 };
350 
352 template <class C>
354 {
355  public:
361  MemberSchedSapProvider(C* scheduler);
362 
363  // Delete default constructor to avoid misuse
365 
366  // inherited from FfMacSchedSapProvider
367  void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters& params) override;
369  void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters& params) override;
370  void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters& params) override;
371  void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters& params) override;
372  void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters& params) override;
373  void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters& params) override;
375  const struct SchedUlNoiseInterferenceReqParameters& params) override;
376  void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters& params) override;
377  void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters& params) override;
378  void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters& params) override;
379 
380  private:
382 };
383 
384 template <class C>
386  : m_scheduler(scheduler)
387 {
388 }
389 
390 template <class C>
391 void
393 {
394  m_scheduler->DoSchedDlRlcBufferReq(params);
395 }
396 
397 template <class C>
398 void
401 {
402  m_scheduler->DoSchedDlPagingBufferReq(params);
403 }
404 
405 template <class C>
406 void
408 {
409  m_scheduler->DoSchedDlMacBufferReq(params);
410 }
411 
412 template <class C>
413 void
415 {
416  m_scheduler->DoSchedDlTriggerReq(params);
417 }
418 
419 template <class C>
420 void
422 {
423  m_scheduler->DoSchedDlRachInfoReq(params);
424 }
425 
426 template <class C>
427 void
429 {
430  m_scheduler->DoSchedDlCqiInfoReq(params);
431 }
432 
433 template <class C>
434 void
436 {
437  m_scheduler->DoSchedUlTriggerReq(params);
438 }
439 
440 template <class C>
441 void
444 {
445  m_scheduler->DoSchedUlNoiseInterferenceReq(params);
446 }
447 
448 template <class C>
449 void
451 {
452  m_scheduler->DoSchedUlSrInfoReq(params);
453 }
454 
455 template <class C>
456 void
459 {
460  m_scheduler->DoSchedUlMacCtrlInfoReq(params);
461 }
462 
463 template <class C>
464 void
466 {
467  m_scheduler->DoSchedUlCqiInfoReq(params);
468 }
469 
470 } // namespace ns3
471 
472 #endif /* FF_MAC_SCHED_SAP_H */
Provides the SCHED SAP.
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters &params)=0
SCHED_UL_MAC_CTRL_INFO_REQ.
virtual void SchedUlNoiseInterferenceReq(const struct SchedUlNoiseInterferenceReqParameters &params)=0
SCHED_UL_NOISE_INTERFERENCE_REQ.
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters &params)=0
SCHED_DL_RLC_BUFFER_REQ.
virtual void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters &params)=0
SCHED_UL_SR_INFO_REQ.
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters &params)=0
SCHED_UL_TRIGGER_REQ.
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters &params)=0
SCHED_UL_CQI_INFO_REQ.
virtual void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters &params)=0
SCHED_DL_MAC_BUFFER_REQ.
virtual void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters &params)=0
SCHED_DL_PAGING_BUFFER_REQ.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters &params)=0
SCHED_DL_TRIGGER_REQ.
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters &params)=0
SCHED_DL_RACH_INFO_REQ.
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters &params)=0
SCHED_DL_CQI_INFO_REQ.
FfMacSchedSapUser class.
virtual void SchedUlConfigInd(const struct SchedUlConfigIndParameters &params)=0
SCHED_UL_CONFIG_IND.
virtual void SchedDlConfigInd(const struct SchedDlConfigIndParameters &params)=0
SCHED_DL_CONFIG_IND.
MemberSchedSapProvider class.
C * m_scheduler
the scheduler class
void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters &params) override
SCHED_UL_TRIGGER_REQ.
void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters &params) override
SCHED_DL_MAC_BUFFER_REQ.
void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters &params) override
SCHED_DL_PAGING_BUFFER_REQ.
void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters &params) override
SCHED_UL_SR_INFO_REQ.
void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters &params) override
SCHED_DL_RLC_BUFFER_REQ.
void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters &params) override
SCHED_DL_TRIGGER_REQ.
void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters &params) override
SCHED_DL_CQI_INFO_REQ.
void SchedUlNoiseInterferenceReq(const struct SchedUlNoiseInterferenceReqParameters &params) override
SCHED_UL_NOISE_INTERFERENCE_REQ.
void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters &params) override
SCHED_DL_RACH_INFO_REQ.
void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters &params) override
SCHED_UL_MAC_CTRL_INFO_REQ.
void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters &params) override
SCHED_UL_CQI_INFO_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< struct CqiListElement_s > m_cqiList
CQI list.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_DL_MAC_BUFFER_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_DL_PAGING_BUFFER_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct PagingInfoListElement_s > m_pagingInfoList
paging info list
Parameters of the SCHED_DL_RACH_INFO_REQ primitive.
std::vector< struct RachListElement_s > m_rachList
RACH list.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
uint16_t m_rlcRetransmissionHolDelay
RLC retransmission HOL delay.
uint32_t m_rlcRetransmissionQueueSize
RLC retransmission queue size.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
uint16_t m_rlcTransmissionQueueHolDelay
RLC transmission queue HOL delay.
uint32_t m_rlcTransmissionQueueSize
RLC transmission queue size.
Parameters of the SCHED_DL_TRIGGER_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct DlInfoListElement_s > m_dlInfoList
DL info list.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct MacCeListElement_s > m_macCeList
MAC CE list.
Parameters of the SCHED_UL_NOISE_INTERFERENCE_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_UL_SR_INFO_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct SrListElement_s > m_srList
SR list.
Parameters of the SCHED_UL_TRIGGER_REQ primitive.
std::vector< struct UlInfoListElement_s > m_ulInfoList
UL info list.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
uint8_t m_nrOfPdcchOfdmSymbols
number of PDCCH OFDM symbols
std::vector< struct BuildDataListElement_s > m_buildDataList
build data list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct BuildBroadcastListElement_s > m_buildBroadcastList
build broadcast list
std::vector< struct BuildRarListElement_s > m_buildRarList
build rar list
Parameters of the SCHED_UL_CONFIG_IND primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct PhichListElement_s > m_phichList
PHICH list.
std::vector< struct UlDciListElement_s > m_dciList
DCI list.
See section 4.3.29 ulCQI.