A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ff-mac-sched-sap.h
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 
51 {
52 public:
53  virtual ~FfMacSchedSapProvider ();
54 
64  {
65  uint16_t m_rnti;
66  uint8_t m_logicalChannelIdentity;
67  uint32_t m_rlcTransmissionQueueSize;
68  uint16_t m_rlcTransmissionQueueHolDelay;
69  uint32_t m_rlcRetransmissionQueueSize;
70  uint16_t m_rlcRetransmissionHolDelay;
71  uint16_t m_rlcStatusPduSize;
72 
73  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
74  };
75 
81  {
82  uint16_t m_rnti;
83  std::vector <struct PagingInfoListElement_s> m_pagingInfoList;
84 
85  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
86  };
87 
93  {
94  uint16_t m_rnti;
95  enum CeBitmap_e m_ceBitmap;
96 
97  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
98  };
99 
105  {
106  uint16_t m_sfnSf;
107  std::vector <struct DlInfoListElement_s> m_dlInfoList;
108 
109  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
110  };
111 
117  {
118  uint16_t m_sfnSf;
119  std::vector <struct RachListElement_s> m_rachList;
120 
121  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
122  };
123 
129  {
130  uint16_t m_sfnSf;
131  std::vector <struct CqiListElement_s> m_cqiList;
132 
133  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
134  };
135 
141  {
142  uint16_t m_sfnSf;
143  std::vector <struct UlInfoListElement_s> m_ulInfoList;
144 
145  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
146  };
147 
153  {
154  uint16_t m_sfnSf;
155  uint16_t m_rip;
156  uint16_t m_tnp;
157 
158  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
159  };
160 
166  {
167  uint16_t m_sfnSf;
168  std::vector <struct SrListElement_s> m_srList;
169 
170  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
171  };
172 
178  {
179  uint16_t m_sfnSf;
180  std::vector <struct MacCeListElement_s> m_macCeList;
181 
182  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
183  };
184 
190  {
191  uint16_t m_sfnSf;
192  struct UlCqi_s m_ulCqi;
193 
194  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
195  };
196 
197  //
198  // SCHED - MAC Scheduler SAP primitives
199  // (See 4.2 for description of the primitives)
200  //
201 
202  virtual void SchedDlRlcBufferReq (const struct SchedDlRlcBufferReqParameters& params) = 0;
203 
204  virtual void SchedDlPagingBufferReq (const struct SchedDlPagingBufferReqParameters& params) = 0;
205 
206  virtual void SchedDlMacBufferReq (const struct SchedDlMacBufferReqParameters& params) = 0;
207 
208  virtual void SchedDlTriggerReq (const struct SchedDlTriggerReqParameters& params) = 0;
209 
210  virtual void SchedDlRachInfoReq (const struct SchedDlRachInfoReqParameters& params) = 0;
211 
212  virtual void SchedDlCqiInfoReq (const struct SchedDlCqiInfoReqParameters& params) = 0;
213 
214  virtual void SchedUlTriggerReq (const struct SchedUlTriggerReqParameters& params) = 0;
215 
216  virtual void SchedUlNoiseInterferenceReq (const struct SchedUlNoiseInterferenceReqParameters& params) = 0;
217 
218  virtual void SchedUlSrInfoReq (const struct SchedUlSrInfoReqParameters& params) = 0;
219 
220  virtual void SchedUlMacCtrlInfoReq (const struct SchedUlMacCtrlInfoReqParameters& params) = 0;
221 
222  virtual void SchedUlCqiInfoReq (const struct SchedUlCqiInfoReqParameters& params) = 0;
223 
224 private:
225 };
226 
227 
229 {
230 public:
231  virtual ~FfMacSchedSapUser ();
232 
242  {
243  std::vector <struct BuildDataListElement_s> m_buildDataList;
244  std::vector <struct BuildRarListElement_s> m_buildRarList;
245  std::vector <struct BuildBroadcastListElement_s> m_buildBroadcastList;
246 
247  uint8_t m_nrOfPdcchOfdmSymbols;
248 
249  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
250  };
251 
257  {
258  std::vector <struct UlDciListElement_s> m_dciList;
259  std::vector <struct PhichListElement_s> m_phichList;
260 
261  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
262  };
263 
264  //
265  // SCHED - MAC Scheduler SAP primitives
266  // (See 4.2 for description of the primitives)
267  //
268 
269  virtual void SchedDlConfigInd (const struct SchedDlConfigIndParameters& params) = 0;
270 
271  virtual void SchedUlConfigInd (const struct SchedUlConfigIndParameters& params) = 0;
272 
273 private:
274 };
275 
276 } // namespace ns3
277 
278 #endif /* FF_MAC_SCHED_SAP_H */
Provides the SCHED SAP.
See section 4.3.29 ulCQI.