A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
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<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
202 virtual void SchedDlRlcBufferReq(const SchedDlRlcBufferReqParameters& params) = 0;
203
210
216 virtual void SchedDlMacBufferReq(const SchedDlMacBufferReqParameters& params) = 0;
217
223 virtual void SchedDlTriggerReq(const SchedDlTriggerReqParameters& params) = 0;
224
230 virtual void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters& params) = 0;
231
237 virtual void SchedDlCqiInfoReq(const SchedDlCqiInfoReqParameters& params) = 0;
238
244 virtual void SchedUlTriggerReq(const SchedUlTriggerReqParameters& params) = 0;
245
252 const SchedUlNoiseInterferenceReqParameters& params) = 0;
253
259 virtual void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters& params) = 0;
260
267
273 virtual void SchedUlCqiInfoReq(const SchedUlCqiInfoReqParameters& params) = 0;
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
325 virtual void SchedDlConfigInd(const SchedDlConfigIndParameters& params) = 0;
326
332 virtual void SchedUlConfigInd(const SchedUlConfigIndParameters& params) = 0;
333
334 private:
335};
336
338template <class C>
340{
341 public:
347 MemberSchedSapProvider(C* scheduler);
348
349 // Delete default constructor to avoid misuse
351
352 // inherited from FfMacSchedSapProvider
353 void SchedDlRlcBufferReq(const SchedDlRlcBufferReqParameters& params) override;
354 void SchedDlPagingBufferReq(const SchedDlPagingBufferReqParameters& params) override;
355 void SchedDlMacBufferReq(const SchedDlMacBufferReqParameters& params) override;
356 void SchedDlTriggerReq(const SchedDlTriggerReqParameters& params) override;
357 void SchedDlRachInfoReq(const SchedDlRachInfoReqParameters& params) override;
358 void SchedDlCqiInfoReq(const SchedDlCqiInfoReqParameters& params) override;
359 void SchedUlTriggerReq(const SchedUlTriggerReqParameters& params) override;
361 void SchedUlSrInfoReq(const SchedUlSrInfoReqParameters& params) override;
362 void SchedUlMacCtrlInfoReq(const SchedUlMacCtrlInfoReqParameters& params) override;
363 void SchedUlCqiInfoReq(const SchedUlCqiInfoReqParameters& params) override;
364
365 private:
367};
368
369template <class C>
371 : m_scheduler(scheduler)
372{
373}
374
375template <class C>
376void
378{
379 m_scheduler->DoSchedDlRlcBufferReq(params);
380}
381
382template <class C>
383void
385{
386 m_scheduler->DoSchedDlPagingBufferReq(params);
387}
388
389template <class C>
390void
392{
393 m_scheduler->DoSchedDlMacBufferReq(params);
394}
395
396template <class C>
397void
399{
400 m_scheduler->DoSchedDlTriggerReq(params);
401}
402
403template <class C>
404void
406{
407 m_scheduler->DoSchedDlRachInfoReq(params);
408}
409
410template <class C>
411void
413{
414 m_scheduler->DoSchedDlCqiInfoReq(params);
415}
416
417template <class C>
418void
420{
421 m_scheduler->DoSchedUlTriggerReq(params);
422}
423
424template <class C>
425void
428{
429 m_scheduler->DoSchedUlNoiseInterferenceReq(params);
430}
431
432template <class C>
433void
435{
436 m_scheduler->DoSchedUlSrInfoReq(params);
437}
438
439template <class C>
440void
442{
443 m_scheduler->DoSchedUlMacCtrlInfoReq(params);
444}
445
446template <class C>
447void
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
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.