A Discrete-Event Network Simulator
API
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 
61 {
64 };
65 
68 {
71 };
72 
75 {
76  TA,
77  DRX,
79 };
80 
83 {
86 };
87 
88 
94 {
95  uint16_t m_rnti;
96  uint32_t m_rbBitmap;
97  uint8_t m_rbShift;
98  uint8_t m_resAlloc;
99  std::vector <uint16_t> m_tbsSize;
100  std::vector <uint8_t> m_mcs;
101  std::vector <uint8_t> m_ndi;
102  std::vector <uint8_t> m_rv;
103  uint8_t m_cceIndex;
104  uint8_t m_aggrLevel;
105  uint8_t m_precodingInfo;
106  enum Format_e
108  {
110  } m_format;
111  uint8_t m_tpc;
112  uint8_t m_harqProcess;
113  uint8_t m_dai;
114  enum VrbFormat_e
116  {
119  } m_vrbFormat;
120  bool m_tbSwap;
123  uint8_t m_preambleIndex;
125  enum Ngap_e
127  {
129  } m_nGap;
130  uint8_t m_tbsIdx;
131  uint8_t m_dlPowerOffset;
133 };
134 
140 {
141  uint16_t m_rnti;
142  uint8_t m_rbStart;
143  uint8_t m_rbLen;
144  uint16_t m_tbSize;
145  uint8_t m_mcs;
146  uint8_t m_ndi;
147  uint8_t m_cceIndex;
148  uint8_t m_aggrLevel;
150  bool m_hopping;
151  uint8_t m_n2Dmrs;
152  int8_t m_tpc;
154  uint8_t m_ulIndex;
155  uint8_t m_dai;
156  uint8_t m_freqHopping;
158 };
159 
163 struct VendorSpecificValue : public SimpleRefCount<VendorSpecificValue>
164 {
165  virtual ~VendorSpecificValue ();
166 
167 };
168 
174 {
175  uint32_t m_type;
176  uint32_t m_length;
178 };
179 
185 {
188 
191  {
195  } m_direction;
196 
199  {
202  } m_qosBearerType;
203 
204  uint8_t m_qci;
209 };
210 
216 {
217  uint16_t m_rnti;
218  uint16_t m_estimatedSize;
219 };
220 
226 {
227  uint16_t m_rnti;
228  enum Phich_e
230  {
232  } m_phich;
233 };
234 
239 {
241  uint16_t m_size;
242 };
243 
249 {
250  uint16_t m_rnti;
252  std::vector <enum CeBitmap_e> m_ceBitmap;
253  std::vector < std::vector <struct RlcPduListElement_s> > m_rlcPduList;
254 };
255 
259 struct UlGrant_s
260 {
261  uint16_t m_rnti;
262  uint8_t m_rbStart;
263  uint8_t m_rbLen;
264  uint16_t m_tbSize;
265  uint8_t m_mcs;
266  bool m_hopping;
267  int8_t m_tpc;
269  bool m_ulDelay;
270 };
271 
276 {
277  uint16_t m_rnti;
278  //uint32_t m_grant; // Substituted with type UlGrant_s
281 };
282 
287 {
289  enum Type_e
290  {
292  } m_type;
293  uint8_t m_index;
295 };
296 
301 {
302  uint16_t m_rnti;
303  std::vector <uint16_t> m_ulReception;
304  enum ReceptionStatus_e
306  {
309  uint8_t m_tpc;
310 };
311 
316 {
317  uint16_t m_rnti;
318 };
319 
324 {
325  uint8_t m_phr;
326  uint8_t m_crnti;
327  std::vector <uint8_t> m_bufferStatus;
328 };
329 
334 {
335  uint16_t m_rnti;
336  enum MacCeType_e
338  {
340  } m_macCeType;
342 };
343 
348 {
352  uint16_t m_longDrxCycle;
354  uint16_t m_shortDrxCycle;
356 };
357 
362 {
367  std::vector <uint16_t> m_n1PucchAnPersistentList;
369 };
370 
375 {
377  uint8_t m_schedInterval;
378  uint8_t m_dsrTransMax;
379 };
380 
385 {
389 };
390 
395 {
398  bool m_type2Sb1;
399  uint8_t m_ueCategory;
401 };
402 
407 {
408  uint16_t m_periodicity;
409  uint16_t m_length;
410 };
411 
416 {
417  uint16_t m_sfn;
418  uint16_t m_sib1Length;
420  std::vector <struct SiMessageListElement_s> m_siMessageList;
421 };
422 
427 {
428  uint16_t m_rnti;
429  uint8_t m_harqProcessId;
430  enum HarqStatus_e
432  {
434  };
435  std::vector <enum HarqStatus_e> m_harqStatus;
436 };
437 
441 struct BwPart_s
442 {
443  uint8_t m_bwPartIndex;
444  uint8_t m_sb;
445  uint8_t m_cqi;
446 };
447 
452 {
453  uint8_t m_sbPmi;
454  std::vector <uint8_t> m_sbCqi;
455 };
456 
461 {
462  std::vector <uint8_t> m_sbList;
463  uint8_t m_sbPmi;
464  std::vector <uint8_t> m_sbCqi;
465 };
466 
471 {
473  std::vector <struct HigherLayerSelected_s> m_higherLayerSelected;
475 };
476 
481 {
482  uint16_t m_rnti;
483  uint8_t m_ri;
484  enum CqiType_e
486  {
488  } m_cqiType;
489  std::vector <uint8_t> m_wbCqi;
490  uint8_t m_wbPmi;
491 
493 };
494 
498 struct UlCqi_s
499 {
500  std::vector <uint16_t> m_sinr;
501  enum Type_e
503  {
509  } m_type;
510 };
511 
516 {
517  uint8_t m_pagingIndex;
520 };
521 
522 } // namespace ns3
523 
524 #endif /* FF_MAC_COMMON_H */
See section 4.3.1 dlDciListElement.
Definition: ff-mac-common.h:93
bool m_spsRelease
release?
bool m_pdcchOrder
cch order?
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:73
See section 4.3.25 sbMeasResult.
uint8_t m_rbShift
RB shift.
Definition: ff-mac-common.h:97
uint16_t m_rnti
RNTI.
uint8_t m_n1PucchAnPersistentListSize
N1pu CCH persistent list size.
uint16_t m_rnti
RNTI.
enum ns3::DlDciListElement_s::VrbFormat_e m_vrbFormat
the format
uint8_t m_logicalChannelIdentity
logical channel identity
uint8_t m_pdcchPowerOffset
CCH power offset.
bool m_halfDuplex
half duplex
See section 4.3.13 srListElement.
See section 4.3.19 cqiConfig.
enum ns3::UlCqi_s::Type_e m_type
type
bool m_ulDelay
UL delay?
std::vector< uint16_t > m_sinr
SINR.
uint16_t m_rnti
RNTI.
Definition: ff-mac-common.h:95
uint8_t m_riSchedInterval
RI schedule interval.
uint16_t m_longDrxCycle
long DRX cycle
std::vector< uint8_t > m_mcs
MCS.
bool m_intraSfHopping
intra SF hopping
See section 4.3.2 ulDciListElement.
See section 4.3.24 cqiListElement.
struct MacCeValue_u m_macCeValue
MAC CE value.
See section 4.3.10 buildRARListElement.
See section 4.3.11 buildBroadcastListElement.
uint8_t m_cqi
CQI.
enum ns3::DlDciListElement_s::Format_e m_format
the format
std::vector< std::vector< struct RlcPduListElement_s > > m_rlcPduList
RLC PDU list.
See section 4.3.12 ulInfoListElement.
bool m_cqiRequest
CQI request?
uint8_t m_tpc
Tx power control command.
uint64_t m_eRabGuaranteedBitrateDl
ERAB guaranteed bit rate DL.
uint8_t m_rbLen
length
uint16_t m_tbSize
size
uint8_t m_crnti
NRTI.
uint8_t m_harqProcess
HARQ process.
See section 4.3.28 bwPart.
enum ns3::PhichListElement_s::Phich_e m_phich
the phich
HarqStatus_e
HARQ status enum.
See section 4.3.4 logicalChannelConfigListElement.
uint8_t m_tbsIdx
tbs index
struct UeSelected_s m_ueSelected
UE selected.
See section 4.3.7 phichListElement.
CqiType_e
CqiType_e enumeration.
uint8_t m_prachMaskIndex
RACH mask index.
uint8_t m_aggrLevel
The aggregation level.
enum ns3::LogicalChannelConfigListElement_s::Direction_e m_direction
the direction
uint8_t m_rbStart
start
uint8_t m_sbPmi
sb PMI
uint8_t m_schedInterval
sched interval
See section 4.3.27 higherLayerSelected.
uint8_t m_onDurationTimer
on duration timer
uint32_t m_rbBitmap
RB bitmap.
Definition: ff-mac-common.h:96
See section 4.3.20 ueCapabilities.
ReceptionStatus_e
Reception status enum.
bool m_cqiRequest
CQI request.
uint8_t m_rbLen
length
std::vector< uint8_t > m_ndi
New data indicator.
uint8_t m_pagingIndex
paging index
uint8_t m_cceIndex
Control Channel Element index.
uint64_t m_eRabGuaranteedBitrateUl
ERAB guaranteed bit rate UL.
uint8_t m_preambleIndex
preamble index
enum ns3::DlDciListElement_s::Ngap_e m_nGap
the gap
See section 4.3.21 siConfiguration.
std::vector< uint16_t > m_ulReception
UL reception.
int8_t m_tpc
Tx power control command.
See section 4.3.30 pagingInfoListElement.
uint8_t m_dai
DL assignment index.
enum ns3::LogicalChannelConfigListElement_s::QosBearerType_e m_qosBearerType
the QOS bearer type
See section 4.3.26 ueSelected.
See section 4.3.17 spsConfig.
uint8_t m_aggrLevel
The aggregation level.
std::vector< uint8_t > m_sbCqi
sb CQI
uint8_t m_logicalChannelIdentity
logical channel identity
See section 4.3.3 vendorSpecifiListElement.
uint16_t m_semiPersistSchedIntervalDl
DL semi persist schedule interval.
Base class for storing the values of vendor specific parameters.
uint16_t m_shortDrxCycle
short DRX cycle
std::vector< uint8_t > m_sbCqi
sb CQI
See section 4.3.15 macCEValue.
See section 4.3.23 dlInfoListElement.
See section 4.3.14 macCEListElement.
Result_e
Result_e enumeration.
Definition: ff-mac-common.h:60
uint8_t m_tpc
Tx power control command.
NormalExtended_e
NormalExtended_e enumeration.
Definition: ff-mac-common.h:82
uint64_t m_eRabMaximulBitrateUl
ERAB maximum bit rate UL.
int8_t m_pdcchPowerOffset
CCH power offset.
Substitutive structure for specifying BuildRarListElement_s::m_grant field.
enum SetupRelease_e m_action
action
std::vector< uint16_t > m_tbsSize
The TBs size.
Definition: ff-mac-common.h:99
See section 4.3.9 rlcPDU_ListElement.
uint8_t m_wbPmi
wb PMI
uint8_t m_bwPartIndex
bw part index
uint16_t m_rnti
RNTI.
MacCeType_e
MAC CE type enum.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint16_t m_rnti
RNTI.
std::vector< uint8_t > m_wbCqi
wb CQI
std::vector< uint16_t > m_n1PucchAnPersistentList
N1pu CCH persistent list.
uint64_t m_eRabMaximulBitrateDl
ERAB maximum bit rate DL.
uint8_t m_freqHopping
freq hopping
struct SbMeasResult_s m_sbMeasResult
sb measure result
bool m_hopping
hopping?
std::vector< enum HarqStatus_e > m_harqStatus
HARQ status.
uint16_t m_longDrxCycleStartOffset
long DRX cycle start offset
uint8_t m_phr
phr
uint8_t m_dlPowerOffset
DL power offset.
uint8_t m_dsrTransMax
trans max
std::vector< uint8_t > m_sbList
sb list
std::vector< uint8_t > m_rv
Redundancy version.
uint8_t m_mcs
MCS.
struct BwPart_s m_bwPart
bw part
uint8_t m_ulIndex
UL index.
enum ns3::BuildBroadcastListElement_s::Type_e m_type
the type
See section 4.3.6 rachListElement.
uint16_t m_periodicity
periodicity
See section 4.3.18 srConfig.
uint8_t m_harqProcessId
HARQ process ID.
uint8_t m_drxShortCycleTimer
short DRX cycle timer
Type_e
Type_e enumeration.
int8_t m_tpc
Tx power control command.
std::vector< uint8_t > m_bufferStatus
buffer status
enum SetupRelease_e m_action
action
Format_e
Format enumeration.
uint8_t m_n2Dmrs
n2 DMRS
uint8_t m_precodingInfo
precoding info
VrbFormat_e
Vrb Format enum.
See section 4.3.22 siMessageListElement.
struct DlDciListElement_s m_dci
DCI.
CeBitmap_e
CeBitmap_e.
Definition: ff-mac-common.h:74
uint8_t m_cceIndex
Control Channel Element index.
See section 4.3.16 drxConfig.
uint8_t m_siWindowLength
window length
uint8_t m_pagingSubframe
paging subframe
uint16_t m_drxRetransmissionTimer
retransmission timer
uint16_t m_semiPersistSchedIntervalUl
UL semi persist schedule interval.
See section 4.3.29 ulCQI.
uint16_t m_estimatedSize
estimated size
uint8_t m_sb
sb
enum ns3::MacCeListElement_s::MacCeType_e m_macCeType
MAC CE type.
bool m_type2Sb1
type 2Sb1
uint8_t m_ueCategory
UE category.
uint16_t m_pagingMessageSize
paging message size
struct DlDciListElement_s m_dci
DCI.
uint8_t m_dai
DL assignment index.
enum ns3::UlInfoListElement_s::ReceptionStatus_e m_receptionStatus
the status
Ptr< VendorSpecificValue > m_value
value
uint16_t m_sib1Length
sib1 length
struct DlDciListElement_s m_dci
DCI.
enum ns3::CqiListElement_s::CqiType_e m_cqiType
CQI type.
A template-based reference counting class.
std::vector< enum CeBitmap_e > m_ceBitmap
CE bitmap.
std::vector< struct HigherLayerSelected_s > m_higherLayerSelected
higher layer selected
uint8_t m_resAlloc
The type of resource allocation.
Definition: ff-mac-common.h:98
uint16_t m_drxInactivityTimer
inactivity timer
std::vector< struct SiMessageListElement_s > m_siMessageList
message list
uint16_t m_cqiSchedInterval
CQI schedule interval.
uint8_t m_implicitReleaseAfter
implicit release after
uint8_t m_ueTxAntennaSelection
UE antenna selection.
SetupRelease_e
SetupRelease_e enumeration.
Definition: ff-mac-common.h:67
uint8_t m_numberOfConfSpsProcesses
number of conf SPS process
See section 4.3.8 builDataListElement.
bool m_resAllocType1
alloc type 1
uint8_t m_logicalChannelGroup
logical channel group