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
30namespace ns3 {
31
47{
48public:
49 virtual ~FfMacSchedSapProvider ();
50
60 {
61 uint16_t m_rnti;
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;
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
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
275private:
276};
277
278
281{
282public:
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
335private:
336};
337
338
339
341template <class C>
343{
344public:
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
366private:
369};
370
371
372template <class C>
374{
375}
376
377
378template <class C>
380 : m_scheduler (scheduler)
381{
382}
383
384template <class C>
385void
387{
388 m_scheduler->DoSchedDlRlcBufferReq (params);
389}
390
391template <class C>
392void
394{
395 m_scheduler->DoSchedDlPagingBufferReq (params);
396}
397
398template <class C>
399void
401{
402 m_scheduler->DoSchedDlMacBufferReq (params);
403}
404
405template <class C>
406void
408{
409 m_scheduler->DoSchedDlTriggerReq (params);
410}
411
412template <class C>
413void
415{
416 m_scheduler->DoSchedDlRachInfoReq (params);
417}
418
419template <class C>
420void
422{
423 m_scheduler->DoSchedDlCqiInfoReq (params);
424}
425
426template <class C>
427void
429{
430 m_scheduler->DoSchedUlTriggerReq (params);
431}
432
433template <class C>
434void
436{
437 m_scheduler->DoSchedUlNoiseInterferenceReq (params);
438}
439
440template <class C>
441void
443{
444 m_scheduler->DoSchedUlSrInfoReq (params);
445}
446
447template <class C>
448void
450{
451 m_scheduler->DoSchedUlMacCtrlInfoReq (params);
452}
453
454template <class C>
455void
457{
458 m_scheduler->DoSchedUlCqiInfoReq (params);
459}
460
461
462
463
464
465} // namespace ns3
466
467#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
virtual void SchedUlTriggerReq(const struct SchedUlTriggerReqParameters &params)
SCHED_UL_TRIGGER_REQ.
virtual void SchedDlCqiInfoReq(const struct SchedDlCqiInfoReqParameters &params)
SCHED_DL_CQI_INFO_REQ.
virtual void SchedUlNoiseInterferenceReq(const struct SchedUlNoiseInterferenceReqParameters &params)
SCHED_UL_NOISE_INTERFERENCE_REQ.
virtual void SchedDlMacBufferReq(const struct SchedDlMacBufferReqParameters &params)
SCHED_DL_MAC_BUFFER_REQ.
virtual void SchedUlSrInfoReq(const struct SchedUlSrInfoReqParameters &params)
SCHED_UL_SR_INFO_REQ.
virtual void SchedDlRlcBufferReq(const struct SchedDlRlcBufferReqParameters &params)
SCHED_DL_RLC_BUFFER_REQ.
virtual void SchedUlMacCtrlInfoReq(const struct SchedUlMacCtrlInfoReqParameters &params)
SCHED_UL_MAC_CTRL_INFO_REQ.
virtual void SchedDlTriggerReq(const struct SchedDlTriggerReqParameters &params)
SCHED_DL_TRIGGER_REQ.
virtual void SchedUlCqiInfoReq(const struct SchedUlCqiInfoReqParameters &params)
SCHED_UL_CQI_INFO_REQ.
virtual void SchedDlPagingBufferReq(const struct SchedDlPagingBufferReqParameters &params)
SCHED_DL_PAGING_BUFFER_REQ.
virtual void SchedDlRachInfoReq(const struct SchedDlRachInfoReqParameters &params)
SCHED_DL_RACH_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.