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
28namespace ns3
29{
30
46{
47 public:
48 virtual ~FfMacSchedSapProvider();
49
59 {
60 uint16_t m_rnti;
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;
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;
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
213 virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters& params) = 0;
214
220 virtual void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters& params) = 0;
221
227 virtual void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters& params) = 0;
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
263 const struct SchedUlNoiseInterferenceReqParameters& params) = 0;
264
270 virtual void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters& params) = 0;
271
277 virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters& params) = 0;
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
352template <class C>
354{
355 public:
361 MemberSchedSapProvider(C* scheduler);
362
363 // inherited from FfMacSchedSapProvider
364 void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters& params) override;
365 void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters& params) override;
366 void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters& params) override;
367 void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters& params) override;
368 void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters& params) override;
369 void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters& params) override;
370 void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters& params) override;
372 const struct SchedUlNoiseInterferenceReqParameters& params) override;
373 void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters& params) override;
374 void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters& params) override;
375 void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters& params) override;
376
377 private:
380};
381
382template <class C>
384{
385}
386
387template <class C>
389 : m_scheduler(scheduler)
390{
391}
392
393template <class C>
394void
396{
397 m_scheduler->DoSchedDlRlcBufferReq(params);
398}
399
400template <class C>
401void
403 const struct SchedDlPagingBufferReqParameters& params)
404{
405 m_scheduler->DoSchedDlPagingBufferReq(params);
406}
407
408template <class C>
409void
411{
412 m_scheduler->DoSchedDlMacBufferReq(params);
413}
414
415template <class C>
416void
418{
419 m_scheduler->DoSchedDlTriggerReq(params);
420}
421
422template <class C>
423void
425{
426 m_scheduler->DoSchedDlRachInfoReq(params);
427}
428
429template <class C>
430void
432{
433 m_scheduler->DoSchedDlCqiInfoReq(params);
434}
435
436template <class C>
437void
439{
440 m_scheduler->DoSchedUlTriggerReq(params);
441}
442
443template <class C>
444void
446 const struct SchedUlNoiseInterferenceReqParameters& params)
447{
448 m_scheduler->DoSchedUlNoiseInterferenceReq(params);
449}
450
451template <class C>
452void
454{
455 m_scheduler->DoSchedUlSrInfoReq(params);
456}
457
458template <class C>
459void
461 const struct SchedUlMacCtrlInfoReqParameters& params)
462{
463 m_scheduler->DoSchedUlMacCtrlInfoReq(params);
464}
465
466template <class C>
467void
469{
470 m_scheduler->DoSchedUlCqiInfoReq(params);
471}
472
473} // namespace ns3
474
475#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
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.