A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ff-mac-common.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_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 
60 {
63 };
64 
66 {
69 };
70 
72 {
73  TA,
74  DRX,
76 };
77 
79 {
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;
101  enum Format_e
102  {
104  } m_format;
105  uint8_t m_tpc;
106  uint8_t m_harqProcess;
107  uint8_t m_dai;
109  {
112  } m_vrbFormat;
113  bool m_tbSwap;
118  enum Ngap_e
119  {
121  } m_nGap;
122  uint8_t m_tbsIdx;
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;
141  bool m_hopping;
142  uint8_t m_n2Dmrs;
143  int8_t m_tpc;
145  uint8_t m_ulIndex;
146  uint8_t m_dai;
147  uint8_t m_freqHopping;
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;
168 };
169 
174 {
177 
179  {
183  } m_direction;
184 
186  {
189  } m_qosBearerType;
190 
191  uint8_t m_qci;
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  {
216  } m_phich;
217 };
218 
223 {
225  uint16_t m_size;
226 };
227 
232 {
233  uint16_t m_rnti;
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;
252  bool m_ulDelay;
253 };
254 
259 {
260  uint16_t m_rnti;
261  //uint32_t m_grant; // Substituted with type UlGrant_s
264 };
265 
270 {
271  enum Type_e
272  {
274  } m_type;
275  uint8_t m_index;
277 };
278 
283 {
284  uint16_t m_rnti;
285  std::vector <uint16_t> m_ulReception;
287  {
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;
318  {
320  } m_macCeType;
322 };
323 
328 {
332  uint16_t m_longDrxCycle;
334  uint16_t m_shortDrxCycle;
336 };
337 
342 {
347  std::vector <uint16_t> m_n1PucchAnPersistentList;
349 };
350 
355 {
358  uint8_t m_dsrTransMax;
359 };
360 
365 {
369 };
370 
375 {
379  uint8_t m_ueCategory;
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;
400  std::vector <struct SiMessageListElement_s> m_siMessageList;
401 };
402 
407 {
408  uint16_t m_rnti;
411  {
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 {
452  std::vector <struct HigherLayerSelected_s> m_higherLayerSelected;
454 };
455 
460 {
461  uint16_t m_rnti;
462  uint8_t m_ri;
464  {
466  } m_cqiType;
467  std::vector <uint8_t> m_wbCqi;
468  uint8_t m_wbPmi;
469 
471 };
472 
476 struct UlCqi_s
477 {
478  std::vector <uint16_t> m_sinr;
479  enum Type_e
480  {
486  } m_type;
487 };
488 
493 {
494  uint8_t m_pagingIndex;
497 };
498 
499 } // namespace ns3
500 
501 #endif /* FF_MAC_COMMON_H */