A Discrete-Event Network Simulator
API
ff-mac-sched-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_SCHED_SAP_H
22 #define FF_MAC_SCHED_SAP_H
23 
24 #include <stdint.h>
25 #include <vector>
26 
27 #include "ff-mac-common.h"
28 
29 
30 namespace ns3 {
31 
47 {
48 public:
49  virtual ~FfMacSchedSapProvider ();
50 
60  {
61  uint16_t m_rnti;
67  uint16_t m_rlcStatusPduSize;
68 
69  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
70  };
71 
77  {
78  uint16_t m_rnti;
79  std::vector <struct PagingInfoListElement_s> m_pagingInfoList;
80 
81  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
82  };
83 
89  {
90  uint16_t m_rnti;
92 
93  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
94  };
95 
101  {
102  uint16_t m_sfnSf;
103  std::vector <struct DlInfoListElement_s> m_dlInfoList;
104 
105  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
106  };
107 
113  {
114  uint16_t m_sfnSf;
115  std::vector <struct RachListElement_s> m_rachList;
116 
117  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
118  };
119 
125  {
126  uint16_t m_sfnSf;
127  std::vector <struct CqiListElement_s> m_cqiList;
128 
129  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
130  };
131 
137  {
138  uint16_t m_sfnSf;
139  std::vector <struct UlInfoListElement_s> m_ulInfoList;
140 
141  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
142  };
143 
149  {
150  uint16_t m_sfnSf;
151  uint16_t m_rip;
152  uint16_t m_tnp;
153 
154  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
155  };
156 
162  {
163  uint16_t m_sfnSf;
164  std::vector <struct SrListElement_s> m_srList;
165 
166  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
167  };
168 
174  {
175  uint16_t m_sfnSf;
176  std::vector <struct MacCeListElement_s> m_macCeList;
177 
178  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
179  };
180 
186  {
187  uint16_t m_sfnSf;
188  struct UlCqi_s m_ulCqi;
189 
190  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
191  };
192 
193  //
194  // SCHED - MAC Scheduler SAP primitives
195  // (See 4.2 for description of the primitives)
196  //
197 
203  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params) = 0;
204 
210  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params) = 0;
211 
217  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params) = 0;
218 
224  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params) = 0;
225 
231  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params) = 0;
232 
238  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params) = 0;
239 
245  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params) = 0;
246 
252  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params) = 0;
253 
259  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params) = 0;
260 
266  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params) = 0;
267 
273  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params) = 0;
274 
275 private:
276 };
277 
278 
281 {
282 public:
283  virtual ~FfMacSchedSapUser ();
284 
294  {
295  std::vector <struct BuildDataListElement_s> m_buildDataList;
296  std::vector <struct BuildRarListElement_s> m_buildRarList;
297  std::vector <struct BuildBroadcastListElement_s> m_buildBroadcastList;
298 
300 
301  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
302  };
303 
309  {
310  std::vector <struct UlDciListElement_s> m_dciList;
311  std::vector <struct PhichListElement_s> m_phichList;
312 
313  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
314  };
315 
316  //
317  // SCHED - MAC Scheduler SAP primitives
318  // (See 4.2 for description of the primitives)
319  //
320 
326  virtual void SchedDlConfigInd (const struct SchedDlConfigIndParameters& params) = 0;
327 
333  virtual void SchedUlConfigInd (const struct SchedUlConfigIndParameters& params) = 0;
334 
335 private:
336 };
337 
338 
339 
341 template <class C>
343 {
344 public:
350  MemberSchedSapProvider (C* scheduler);
351 
352  // inherited from FfMacSchedSapProvider
353  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params);
354  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params);
355  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params);
356  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params);
357  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params);
358  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params);
359  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params);
360  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params);
361  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params);
362  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params);
363  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params);
364 
365 
366 private:
369 };
370 
371 
372 template <class C>
374 {
375 }
376 
377 
378 template <class C>
380  : m_scheduler (scheduler)
381 {
382 }
383 
384 template <class C>
385 void
387 {
388  m_scheduler->DoSchedDlRlcBufferReq (params);
389 }
390 
391 template <class C>
392 void
394 {
395  m_scheduler->DoSchedDlPagingBufferReq (params);
396 }
397 
398 template <class C>
399 void
401 {
402  m_scheduler->DoSchedDlMacBufferReq (params);
403 }
404 
405 template <class C>
406 void
408 {
409  m_scheduler->DoSchedDlTriggerReq (params);
410 }
411 
412 template <class C>
413 void
415 {
416  m_scheduler->DoSchedDlRachInfoReq (params);
417 }
418 
419 template <class C>
420 void
422 {
423  m_scheduler->DoSchedDlCqiInfoReq (params);
424 }
425 
426 template <class C>
427 void
429 {
430  m_scheduler->DoSchedUlTriggerReq (params);
431 }
432 
433 template <class C>
434 void
436 {
437  m_scheduler->DoSchedUlNoiseInterferenceReq (params);
438 }
439 
440 template <class C>
441 void
443 {
444  m_scheduler->DoSchedUlSrInfoReq (params);
445 }
446 
447 template <class C>
448 void
450 {
451  m_scheduler->DoSchedUlMacCtrlInfoReq (params);
452 }
453 
454 template <class C>
455 void
457 {
458  m_scheduler->DoSchedUlCqiInfoReq (params);
459 }
460 
461 
462 
463 
464 
465 } // namespace ns3
466 
467 #endif /* FF_MAC_SCHED_SAP_H */
std::vector< struct UlInfoListElement_s > m_ulInfoList
UL info list.
virtual void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters &params)
SCHED_DL_PAGING_BUFFER_REQ.
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters &params)
SCHED_DL_RLC_BUFFER_REQ.
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters &params)=0
SCHED_UL_TRIGGER_REQ.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters &params)
SCHED_UL_CQI_INFO_REQ.
std::vector< struct UlDciListElement_s > m_dciList
DCI list.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters &params)=0
SCHED_UL_SR_INFO_REQ.
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters &params)
SCHED_DL_RACH_INFO_REQ.
uint32_t m_rlcRetransmissionQueueSize
RLC retransmission queue size.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters &params)=0
SCHED_DL_TRIGGER_REQ.
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters &params)=0
SCHED_DL_RLC_BUFFER_REQ.
Parameters of the SCHED_DL_TRIGGER_REQ primitive.
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters &params)
SCHED_UL_MAC_CTRL_INFO_REQ.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specfic list
Parameters of the SCHED_DL_MAC_BUFFER_REQ primitive.
Parameters of the SCHED_DL_PAGING_BUFFER_REQ primitive.
std::vector< struct PagingInfoListElement_s > m_pagingInfoList
paging info list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters &params)
SCHED_UL_TRIGGER_REQ.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
Parameters of the SCHED_UL_TRIGGER_REQ primitive.
virtual void SchedUlNoiseInterferenceReq(const struct SchedUlNoiseInterferenceReqParameters &params)=0
SCHED_UL_NOISE_INTERFERENCE_REQ.
std::vector< struct SrListElement_s > m_srList
SR list.
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters &params)=0
SCHED_DL_RACH_INFO_REQ.
Provides the SCHED SAP.
Parameters of the SCHED_UL_NOISE_INTERFERENCE_REQ primitive.
uint16_t m_rlcRetransmissionHolDelay
RLC retransmission HOL delay.
std::vector< struct CqiListElement_s > m_cqiList
CQI list.
std::vector< struct DlInfoListElement_s > m_dlInfoList
DL info list.
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters &params)
SCHED_DL_CQI_INFO_REQ.
std::vector< struct BuildBroadcastListElement_s > m_buildBroadcastList
build broadcast list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedDlConfigInd(const struct SchedDlConfigIndParameters &params)=0
SCHED_DL_CONFIG_IND.
std::vector< struct PhichListElement_s > m_phichList
PHICH list.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters &params)
SCHED_DL_MAC_BUFFER_REQ.
uint32_t m_rlcTransmissionQueueSize
RLC transmission queue size.
virtual void SchedUlConfigInd(const struct SchedUlConfigIndParameters &params)=0
SCHED_UL_CONFIG_IND.
C * m_scheduler
the scheduler class
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters &params)=0
SCHED_UL_CQI_INFO_REQ.
uint8_t m_nrOfPdcchOfdmSymbols
number of PDCCH OFDM symbols
Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
std::vector< struct MacCeListElement_s > m_macCeList
MAC CE list.
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters &params)=0
SCHED_UL_MAC_CTRL_INFO_REQ.
std::vector< struct RachListElement_s > m_rachList
RACH list.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
CeBitmap_e
CeBitmap_e.
Definition: ff-mac-common.h:74
Parameters of the SCHED_UL_MAC_CTRL_INFO_REQ primitive.
Parameters of the SCHED_UL_SR_INFO_REQ primitive.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
See section 4.3.29 ulCQI.
virtual void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters &params)
SCHED_UL_SR_INFO_REQ.
Parameters of the SCHED_DL_RACH_INFO_REQ primitive.
Parameters of the SCHED_UL_CONFIG_IND primitive.
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters &params)=0
SCHED_DL_CQI_INFO_REQ.
uint16_t m_rlcTransmissionQueueHolDelay
RLC transmission queue HOL delay.
MemberSchedSapProvider class.
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters &params)=0
SCHED_DL_MAC_BUFFER_REQ.
std::vector< struct BuildRarListElement_s > m_buildRarList
build rar list
std::vector< struct VendorSpecificListElement_s > m_vendorSpecificList
vendor specific list
virtual void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters &params)=0
SCHED_DL_PAGING_BUFFER_REQ.
FfMacSchedSapUser class.
virtual void SchedUlNoiseInterferenceReq(const struct SchedUlNoiseInterferenceReqParameters &params)
SCHED_UL_NOISE_INTERFERENCE_REQ.
std::vector< struct BuildDataListElement_s > m_buildDataList
build data list
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters &params)
SCHED_DL_TRIGGER_REQ.