A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ff-mac-csched-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_CSCHED_SAP_H
22 #define FF_MAC_CSCHED_SAP_H
23 
24 #include <stdint.h>
25 #include <vector>
26 
27 #include "ff-mac-common.h"
28 
29 namespace ns3 {
30 
50 {
51 public:
52  virtual ~FfMacCschedSapProvider ();
53 
63  {
64  uint8_t m_puschHoppingOffset;
65 
66  enum HoppingMode_e
67  {
68  inter,
69  interintra
70  } m_hoppingMode;
71 
72  uint8_t m_nSb;
73 
74  enum PhichResource_e
75  {
76  PHICH_R_ONE_SIXTH,
77  PHICH_R_HALF,
78  PHICH_R_ONE,
79  PHICH_R_TWO
80  } m_phichResource;
81 
82 
83  enum NormalExtended_e m_phichDuration;
84 
85  uint8_t m_initialNrOfPdcchOfdmSymbols;
86 
87  struct SiConfiguration_s m_siConfiguration;
88 
89  uint8_t m_ulBandwidth;
90  uint8_t m_dlBandwidth;
91 
92  enum NormalExtended_e m_ulCyclicPrefixLength;
93  enum NormalExtended_e m_dlCyclicPrefixLength;
94 
95  uint8_t m_antennaPortsCount;
96 
97  enum DuplexMode_e
98  {
99  DM_TDD,
100  DM_FDD
101  } m_duplexMode;
102 
103  uint8_t m_subframeAssignment;
104  uint8_t m_specialSubframePatterns;
105  std::vector <uint8_t> m_mbsfnSubframeConfigRfPeriod;
106  std::vector <uint8_t> m_mbsfnSubframeConfigRfOffset;
107  std::vector <uint8_t> m_mbsfnSubframeConfigSfAllocation;
108  uint8_t m_prachConfigurationIndex;
109  uint8_t m_prachFreqOffset;
110  uint8_t m_raResponseWindowSize;
111  uint8_t m_macContentionResolutionTimer;
112  uint8_t m_maxHarqMsg3Tx;
113  uint16_t m_n1PucchAn;
114  uint8_t m_deltaPucchShift;
115  uint8_t m_nrbCqi;
116  uint8_t m_ncsAn;
117  uint8_t m_srsSubframeConfiguration;
118  uint8_t m_srsSubframeOffset;
119  uint8_t m_srsBandwidthConfiguration;
120  bool m_srsMaxUpPts;
121 
122  enum Enable64Qam_e
123  {
124  MOD_16QAM,
125  MOD_64QAM
126  } m_enable64Qam;
127 
128  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
129  };
130 
136  {
137  uint16_t m_rnti;
138  bool m_reconfigureFlag;
139  bool m_drxConfigPresent;
140  struct DrxConfig_s m_drxConfig;
141  uint16_t m_timeAlignmentTimer;
142 
143  enum MeasGapConfigPattern_e
144  {
145  MGP_GP1,
146  MGP_GP2,
147  OFF
148  } m_measGapConfigPattern;
149 
150  uint8_t m_measGapConfigSubframeOffset;
151  bool m_spsConfigPresent;
152  struct SpsConfig_s m_spsConfig;
153  bool m_srConfigPresent;
154  struct SrConfig_s m_srConfig;
155  bool m_cqiConfigPresent;
156  struct CqiConfig_s m_cqiConfig;
157  uint8_t m_transmissionMode;
158  uint64_t m_ueAggregatedMaximumBitrateUl;
159  uint64_t m_ueAggregatedMaximumBitrateDl;
160  struct UeCapabilities_s m_ueCapabilities;
161 
162  enum OpenClosedLoop_e
163  {
164  noneloop,
165  openloop,
166  closedloop
167  } m_ueTransmitAntennaSelection;
168 
169  bool m_ttiBundling;
170  uint8_t m_maxHarqTx;
171  uint8_t m_betaOffsetAckIndex;
172  uint8_t m_betaOffsetRiIndex;
173  uint8_t m_betaOffsetCqiIndex;
174  bool m_ackNackSrsSimultaneousTransmission;
175  bool m_simultaneousAckNackAndCqi;
176 
177  enum RepMode_e
178  {
179  rm12, rm20, rm22, rm30, rm31, nonemode
180  } m_aperiodicCqiRepMode;
181 
182  enum FeedbackMode_e
183  {
184  bundling,
185  multiplexing
186  } m_tddAckNackFeedbackMode;
187 
188  uint8_t m_ackNackRepetitionFactor;
189 
190  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
191  };
192 
198  {
199  uint16_t m_rnti;
200  bool m_reconfigureFlag;
201 
202  std::vector <struct LogicalChannelConfigListElement_s> m_logicalChannelConfigList;
203 
204  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
205  };
206 
212  {
213  uint16_t m_rnti;
214 
215  std::vector <uint8_t> m_logicalChannelIdentity;
216 
217  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
218  };
219 
225  {
226  uint16_t m_rnti;
227 
228  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
229  };
230 
231  //
232  // CSCHED - MAC Scheduler Control SAP primitives
233  // (See 4.1 for description of the primitives)
234  //
235 
239  virtual void CschedCellConfigReq (const struct CschedCellConfigReqParameters& params) = 0;
240 
241  virtual void CschedUeConfigReq (const struct CschedUeConfigReqParameters& params) = 0;
242 
243  virtual void CschedLcConfigReq (const struct CschedLcConfigReqParameters& params) = 0;
244 
245  virtual void CschedLcReleaseReq (const struct CschedLcReleaseReqParameters& params) = 0;
246 
247  virtual void CschedUeReleaseReq (const struct CschedUeReleaseReqParameters& params) = 0;
248 
249 private:
250 };
251 
252 
254 {
255 public:
256  virtual ~FfMacCschedSapUser ();
257 
267  {
268  enum Result_e m_result;
269 
270  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
271  };
272 
278  {
279  uint16_t m_rnti;
280  enum Result_e m_result;
281 
282  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
283  };
284 
290  {
291  uint16_t m_rnti;
292  enum Result_e m_result;
293 
294  std::vector <uint8_t> m_logicalChannelIdentity;
295 
296  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
297  };
298 
304  {
305  uint16_t m_rnti;
306  enum Result_e m_result;
307 
308  std::vector <uint8_t> m_logicalChannelIdentity;
309 
310  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
311  };
312 
318  {
319  uint16_t m_rnti;
320  enum Result_e m_result;
321 
322  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
323  };
324 
330  {
331  uint16_t m_rnti;
332  uint8_t m_transmissionMode;
333  bool m_spsConfigPresent;
334  struct SpsConfig_s m_spsConfig;
335  bool m_srConfigPresent;
336  struct SrConfig_s m_srConfig;
337  bool m_cqiConfigPresent;
338  struct CqiConfig_s m_cqiConfig;
339 
340  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
341  };
342 
348  {
349  uint8_t m_prbUtilizationDl;
350  uint8_t m_prbUtilizationUl;
351 
352  std::vector <struct VendorSpecificListElement_s> m_vendorSpecificList;
353  };
354 
355  //
356  // CSCHED - MAC Scheduler Control SAP primitives
357  // (See 4.1 for description of the primitives)
358  //
359 
360  virtual void CschedCellConfigCnf (const struct CschedCellConfigCnfParameters& params) = 0;
361 
362  virtual void CschedUeConfigCnf (const struct CschedUeConfigCnfParameters& params) = 0;
363 
364  virtual void CschedLcConfigCnf (const struct CschedLcConfigCnfParameters& params) = 0;
365 
366  virtual void CschedLcReleaseCnf (const struct CschedLcReleaseCnfParameters& params) = 0;
367 
368  virtual void CschedUeReleaseCnf (const struct CschedUeReleaseCnfParameters& params) = 0;
369 
370  virtual void CschedUeConfigUpdateInd (const struct CschedUeConfigUpdateIndParameters& params) = 0;
371 
372  virtual void CschedCellConfigUpdateInd (const struct CschedCellConfigUpdateIndParameters& params) = 0;
373 
374 private:
375 };
376 
377 } // end namespace ns3
378 
379 #endif /* FF_MAC_CSCHED_SAP_H */
See section 4.3.19 cqiConfig.
Provides the CSCHED SAP.
See section 4.3.20 ueCapabilities.
See section 4.3.21 siConfiguration.
See section 4.3.17 spsConfig.
virtual void CschedCellConfigReq(const struct CschedCellConfigReqParameters &params)=0
CSCHED_CELL_CONFIG_REQ.
See section 4.3.18 srConfig.
See section 4.3.16 drxConfig.