A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ff-mac-common.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_COMMON_H
22 #define FF_MAC_COMMON_H
23 
24 #include <ns3/simple-ref-count.h>
25 #include <ns3/ptr.h>
26 #include <vector>
27 
28 
32 #define MAX_SCHED_CFG_LIST 10
33 #define MAX_LC_LIST 10
34 
35 #define MAX_RACH_LIST 30
36 #define MAX_DL_INFO_LIST 30
37 #define MAX_BUILD_DATA_LIST 30
38 #define MAX_BUILD_RAR_LIST 10
39 #define MAX_BUILD_BC_LIST 3
40 #define MAX_UL_INFO_LIST 30
41 #define MAX_DCI_LIST 30
42 #define MAX_PHICH_LIST 30
43 #define MAX_TB_LIST 2
44 #define MAX_RLC_PDU_LIST 30
45 #define MAX_NR_LCG 4
46 #define MAX_MBSFN_CONFIG 5
47 #define MAX_SI_MSG_LIST 32
48 #define MAX_SI_MSG_SIZE 65535
49 
50 #define MAX_CQI_LIST 30
51 #define MAX_UE_SELECTED_SB 6
52 #define MAX_HL_SB 25
53 #define MAX_SINR_RB_LIST 100
54 #define MAX_SR_LIST 30
55 #define MAX_MAC_CE_LIST 30
56 
57 namespace ns3 {
58 
59 enum Result_e
60 {
61  SUCCESS,
62  FAILURE
63 };
64 
65 enum SetupRelease_e
66 {
67  setup,
68  release
69 };
70 
71 enum CeBitmap_e
72 {
73  TA,
74  DRX,
75  CR
76 };
77 
78 enum NormalExtended_e
79 {
80  normal,
81  extended
82 };
83 
84 
89 {
90  uint16_t m_rnti;
91  uint32_t m_rbBitmap;
92  uint8_t m_rbShift;
93  uint8_t m_resAlloc;
94  std::vector <uint16_t> m_tbsSize;
95  std::vector <uint8_t> m_mcs;
96  std::vector <uint8_t> m_ndi;
97  std::vector <uint8_t> m_rv;
98  uint8_t m_cceIndex;
99  uint8_t m_aggrLevel;
100  uint8_t m_precodingInfo;
101  enum Format_e
102  {
103  ONE, ONE_A, ONE_B, ONE_C, ONE_D, TWO, TWO_A, TWO_B
104  } m_format;
105  uint8_t m_tpc;
106  uint8_t m_harqProcess;
107  uint8_t m_dai;
108  enum VrbFormat_e
109  {
110  VRB_DISTRIBUTED,
111  VRB_LOCALIZED
112  } m_vrbFormat;
113  bool m_tbSwap;
114  bool m_spsRelease;
115  bool m_pdcchOrder;
116  uint8_t m_preambleIndex;
117  uint8_t m_prachMaskIndex;
118  enum Ngap_e
119  {
120  GAP1, GAP2
121  } m_nGap;
122  uint8_t m_tbsIdx;
123  uint8_t m_dlPowerOffset;
124  uint8_t m_pdcchPowerOffset;
125 };
126 
131 {
132  uint16_t m_rnti;
133  uint8_t m_rbStart;
134  uint8_t m_rbLen;
135  uint16_t m_tbSize;
136  uint8_t m_mcs;
137  uint8_t m_ndi;
138  uint8_t m_cceIndex;
139  uint8_t m_aggrLevel;
140  uint8_t m_ueTxAntennaSelection;
141  bool m_hopping;
142  uint8_t m_n2Dmrs;
143  int8_t m_tpc;
144  bool m_cqiRequest;
145  uint8_t m_ulIndex;
146  uint8_t m_dai;
147  uint8_t m_freqHopping;
148  int8_t m_pdcchPowerOffset;
149 };
150 
154 struct VendorSpecificValue : public SimpleRefCount<VendorSpecificValue>
155 {
156  virtual ~VendorSpecificValue ();
157 
158 };
159 
164 {
165  uint32_t m_type;
166  uint32_t m_length;
167  Ptr<VendorSpecificValue> m_value;
168 };
169 
174 {
175  uint8_t m_logicalChannelIdentity;
176  uint8_t m_logicalChannelGroup;
177 
178  enum Direction_e
179  {
180  DIR_UL,
181  DIR_DL,
182  DIR_BOTH
183  } m_direction;
184 
185  enum QosBearerType_e
186  {
187  QBT_NON_GBR,
188  QBT_GBR
189  } m_qosBearerType;
190 
191  uint8_t m_qci;
192  uint64_t m_eRabMaximulBitrateUl;
193  uint64_t m_eRabMaximulBitrateDl;
194  uint64_t m_eRabGuaranteedBitrateUl;
195  uint64_t m_eRabGuaranteedBitrateDl;
196 };
197 
202 {
203  uint16_t m_rnti;
204  uint16_t m_estimatedSize;
205 };
206 
211 {
212  uint16_t m_rnti;
213  enum Phich_e
214  {
215  ACK, NACK
216  } m_phich;
217 };
218 
223 {
224  uint8_t m_logicalChannelIdentity;
225  uint16_t m_size;
226 };
227 
232 {
233  uint16_t m_rnti;
234  struct DlDciListElement_s m_dci;
235  std::vector <enum CeBitmap_e> m_ceBitmap;
236  std::vector < std::vector <struct RlcPduListElement_s> > m_rlcPduList;
237 };
238 
242 struct UlGrant_s
243 {
244  uint16_t m_rnti;
245  uint8_t m_rbStart;
246  uint8_t m_rbLen;
247  uint16_t m_tbSize;
248  uint8_t m_mcs;
249  bool m_hopping;
250  int8_t m_tpc;
251  bool m_cqiRequest;
252  bool m_ulDelay;
253 };
254 
259 {
260  uint16_t m_rnti;
261  //uint32_t m_grant; // Substituted with type UlGrant_s
262  UlGrant_s m_grant;
263  struct DlDciListElement_s m_dci;
264 };
265 
270 {
271  enum Type_e
272  {
273  BCCH, PCCH
274  } m_type;
275  uint8_t m_index;
276  struct DlDciListElement_s m_dci;
277 };
278 
283 {
284  uint16_t m_rnti;
285  std::vector <uint16_t> m_ulReception;
286  enum ReceptionStatus_e
287  {
288  Ok, NotOk, NotValid
289  } m_receptionStatus;
290  uint8_t m_tpc;
291 };
292 
297 {
298  uint16_t m_rnti;
299 };
300 
305 {
306  uint8_t m_phr;
307  uint8_t m_crnti;
308  std::vector <uint8_t> m_bufferStatus;
309 };
310 
315 {
316  uint16_t m_rnti;
317  enum MacCeType_e
318  {
319  BSR, PHR, CRNTI
320  } m_macCeType;
321  struct MacCeValue_u m_macCeValue;
322 };
323 
328 {
329  uint8_t m_onDurationTimer;
330  uint16_t m_drxInactivityTimer;
331  uint16_t m_drxRetransmissionTimer;
332  uint16_t m_longDrxCycle;
333  uint16_t m_longDrxCycleStartOffset;
334  uint16_t m_shortDrxCycle;
335  uint8_t m_drxShortCycleTimer;
336 };
337 
342 {
343  uint16_t m_semiPersistSchedIntervalUl;
344  uint16_t m_semiPersistSchedIntervalDl;
345  uint8_t m_numberOfConfSpsProcesses;
346  uint8_t m_n1PucchAnPersistentListSize;
347  std::vector <uint16_t> m_n1PucchAnPersistentList;
348  uint8_t m_implicitReleaseAfter;
349 };
350 
355 {
356  enum SetupRelease_e m_action;
357  uint8_t m_schedInterval;
358  uint8_t m_dsrTransMax;
359 };
360 
365 {
366  enum SetupRelease_e m_action;
367  uint16_t m_cqiSchedInterval;
368  uint8_t m_riSchedInterval;
369 };
370 
375 {
376  bool m_halfDuplex;
377  bool m_intraSfHopping;
378  bool m_type2Sb1;
379  uint8_t m_ueCategory;
380  bool m_resAllocType1;
381 };
382 
387 {
388  uint16_t m_periodicity;
389  uint16_t m_length;
390 };
391 
396 {
397  uint16_t m_sfn;
398  uint16_t m_sib1Length;
399  uint8_t m_siWindowLength;
400  std::vector <struct SiMessageListElement_s> m_siMessageList;
401 };
402 
407 {
408  uint16_t m_rnti;
409  uint8_t m_harqProcessId;
410  enum HarqStatus_e
411  {
412  ACK, NACK, DTX
413  };
414  std::vector <enum HarqStatus_e> m_harqStatus;
415 };
416 
420 struct BwPart_s
421 {
422  uint8_t m_bwPartIndex;
423  uint8_t m_sb;
424  uint8_t m_cqi;
425 };
426 
431 {
432  uint8_t m_sbPmi;
433  std::vector <uint8_t> m_sbCqi;
434 };
435 
440 {
441  std::vector <uint8_t> m_sbList;
442  uint8_t m_sbPmi;
443  std::vector <uint8_t> m_sbCqi;
444 };
445 
450 {
451  struct UeSelected_s m_ueSelected;
452  std::vector <struct HigherLayerSelected_s> m_higherLayerSelected;
453  struct BwPart_s m_bwPart;
454 };
455 
460 {
461  uint16_t m_rnti;
462  uint8_t m_ri;
463  enum CqiType_e
464  {
465  P10, P11, P20, P21, A12, A22, A20, A30, A31
466  } m_cqiType;
467  std::vector <uint8_t> m_wbCqi;
468  uint8_t m_wbPmi;
469 
470  struct SbMeasResult_s m_sbMeasResult;
471 };
472 
476 struct UlCqi_s
477 {
478  std::vector <uint16_t> m_sinr;
479  enum Type_e
480  {
481  SRS,
482  PUSCH,
483  PUCCH_1,
484  PUCCH_2,
485  PRACH
486  } m_type;
487 };
488 
493 {
494  uint8_t m_pagingIndex;
495  uint16_t m_pagingMessageSize;
496  uint8_t m_pagingSubframe;
497 };
498 
499 } // namespace ns3
500 
501 #endif /* FF_MAC_COMMON_H */
See section 4.3.1 dlDciListElement.
Definition: ff-mac-common.h:88
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
See section 4.3.25 sbMeasResult.
See section 4.3.13 srListElement.
See section 4.3.19 cqiConfig.
See section 4.3.2 ulDciListElement.
See section 4.3.24 cqiListElement.
See section 4.3.10 buildRARListElement.
See section 4.3.11 buildBroadcastListElement.
See section 4.3.12 ulInfoListElement.
See section 4.3.28 bwPart.
See section 4.3.4 logicalChannelConfigListElement.
See section 4.3.7 phichListElement.
See section 4.3.27 higherLayerSelected.
See section 4.3.20 ueCapabilities.
See section 4.3.21 siConfiguration.
See section 4.3.30 pagingInfoListElement.
See section 4.3.26 ueSelected.
See section 4.3.17 spsConfig.
See section 4.3.3 vendorSpecifiListElement.
Base class for storing the values of vendor specific parameters.
See section 4.3.15 macCEValue.
See section 4.3.23 dlInfoListElement.
See section 4.3.14 macCEListElement.
Substitutive structure for specifying BuildRarListElement_s::m_grant field.
See section 4.3.9 rlcPDU_ListElement.
See section 4.3.6 rachListElement.
See section 4.3.18 srConfig.
See section 4.3.22 siMessageListElement.
See section 4.3.16 drxConfig.
See section 4.3.29 ulCQI.
A template-based reference counting class.
See section 4.3.8 builDataListElement.