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
214
221
228
234 virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters& params) = 0;
235
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
352template <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;
378 void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters& params) override;
379
380 private:
382};
383
384template <class C>
386 : m_scheduler(scheduler)
387{
388}
389
390template <class C>
391void
393{
394 m_scheduler->DoSchedDlRlcBufferReq(params);
395}
396
397template <class C>
398void
401{
402 m_scheduler->DoSchedDlPagingBufferReq(params);
403}
404
405template <class C>
406void
408{
409 m_scheduler->DoSchedDlMacBufferReq(params);
410}
411
412template <class C>
413void
415{
416 m_scheduler->DoSchedDlTriggerReq(params);
417}
418
419template <class C>
420void
422{
423 m_scheduler->DoSchedDlRachInfoReq(params);
424}
425
426template <class C>
427void
429{
430 m_scheduler->DoSchedDlCqiInfoReq(params);
431}
432
433template <class C>
434void
436{
437 m_scheduler->DoSchedUlTriggerReq(params);
438}
439
440template <class C>
441void
444{
445 m_scheduler->DoSchedUlNoiseInterferenceReq(params);
446}
447
448template <class C>
449void
451{
452 m_scheduler->DoSchedUlSrInfoReq(params);
453}
454
455template <class C>
456void
459{
460 m_scheduler->DoSchedUlMacCtrlInfoReq(params);
461}
462
463template <class C>
464void
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.