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 */
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.
uint8_t m_n1PucchAnPersistentListSize
enum ns3::DlDciListElement_s::VrbFormat_e m_vrbFormat
See section 4.3.13 srListElement.
See section 4.3.19 cqiConfig.
enum ns3::UlCqi_s::Type_e m_type
std::vector< uint16_t > m_sinr
uint8_t m_riSchedInterval
uint16_t m_longDrxCycle
std::vector< uint8_t > m_mcs
Definition: ff-mac-common.h:95
See section 4.3.2 ulDciListElement.
See section 4.3.24 cqiListElement.
struct MacCeValue_u m_macCeValue
See section 4.3.10 buildRARListElement.
See section 4.3.11 buildBroadcastListElement.
enum ns3::DlDciListElement_s::Format_e m_format
std::vector< std::vector< struct RlcPduListElement_s > > m_rlcPduList
See section 4.3.12 ulInfoListElement.
uint16_t m_tbSize
See section 4.3.28 bwPart.
enum ns3::PhichListElement_s::Phich_e m_phich
See section 4.3.4 logicalChannelConfigListElement.
struct UeSelected_s m_ueSelected
See section 4.3.7 phichListElement.
enum ns3::LogicalChannelConfigListElement_s::Direction_e m_direction
uint8_t m_schedInterval
See section 4.3.27 higherLayerSelected.
uint8_t m_onDurationTimer
See section 4.3.20 ueCapabilities.
std::vector< uint8_t > m_ndi
Definition: ff-mac-common.h:96
enum ns3::DlDciListElement_s::Ngap_e m_nGap
See section 4.3.21 siConfiguration.
std::vector< uint16_t > m_ulReception
See section 4.3.30 pagingInfoListElement.
enum ns3::LogicalChannelConfigListElement_s::QosBearerType_e m_qosBearerType
See section 4.3.26 ueSelected.
See section 4.3.17 spsConfig.
std::vector< uint8_t > m_sbCqi
See section 4.3.3 vendorSpecifiListElement.
uint16_t m_semiPersistSchedIntervalDl
Base class for storing the values of vendor specific parameters.
uint16_t m_shortDrxCycle
std::vector< uint8_t > m_sbCqi
See section 4.3.15 macCEValue.
See section 4.3.23 dlInfoListElement.
See section 4.3.14 macCEListElement.
NormalExtended_e
Definition: ff-mac-common.h:78
Substitutive structure for specifying BuildRarListElement_s::m_grant field.
enum SetupRelease_e m_action
std::vector< uint16_t > m_tbsSize
Definition: ff-mac-common.h:94
See section 4.3.9 rlcPDU_ListElement.
uint8_t m_bwPartIndex
std::vector< uint8_t > m_wbCqi
std::vector< uint16_t > m_n1PucchAnPersistentList
struct SbMeasResult_s m_sbMeasResult
std::vector< enum HarqStatus_e > m_harqStatus
uint16_t m_longDrxCycleStartOffset
uint8_t m_dsrTransMax
std::vector< uint8_t > m_sbList
std::vector< uint8_t > m_rv
Definition: ff-mac-common.h:97
struct BwPart_s m_bwPart
enum ns3::BuildBroadcastListElement_s::Type_e m_type
See section 4.3.6 rachListElement.
See section 4.3.18 srConfig.
uint8_t m_drxShortCycleTimer
std::vector< uint8_t > m_bufferStatus
enum SetupRelease_e m_action
See section 4.3.22 siMessageListElement.
struct DlDciListElement_s m_dci
CeBitmap_e
Definition: ff-mac-common.h:71
See section 4.3.16 drxConfig.
uint16_t m_drxRetransmissionTimer
uint16_t m_semiPersistSchedIntervalUl
See section 4.3.29 ulCQI.
enum ns3::MacCeListElement_s::MacCeType_e m_macCeType
struct DlDciListElement_s m_dci
enum ns3::UlInfoListElement_s::ReceptionStatus_e m_receptionStatus
Ptr< VendorSpecificValue > m_value
struct DlDciListElement_s m_dci
enum ns3::CqiListElement_s::CqiType_e m_cqiType
A template-based reference counting class.
std::vector< enum CeBitmap_e > m_ceBitmap
std::vector< struct HigherLayerSelected_s > m_higherLayerSelected
uint16_t m_drxInactivityTimer
std::vector< struct SiMessageListElement_s > m_siMessageList
uint16_t m_cqiSchedInterval
uint8_t m_implicitReleaseAfter
SetupRelease_e
Definition: ff-mac-common.h:65
uint8_t m_numberOfConfSpsProcesses
See section 4.3.8 builDataListElement.