A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
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
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
88
struct
DlDciListElement_s
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
130
struct
UlDciListElement_s
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
163
struct
VendorSpecificListElement_s
164
{
165
uint32_t
m_type
;
166
uint32_t
m_length
;
167
Ptr<VendorSpecificValue>
m_value
;
168
};
169
173
struct
LogicalChannelConfigListElement_s
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
201
struct
RachListElement_s
202
{
203
uint16_t
m_rnti
;
204
uint16_t
m_estimatedSize
;
205
};
206
210
struct
PhichListElement_s
211
{
212
uint16_t
m_rnti
;
213
enum
Phich_e
214
{
215
ACK
,
NACK
216
}
m_phich
;
217
};
218
222
struct
RlcPduListElement_s
223
{
224
uint8_t
m_logicalChannelIdentity
;
225
uint16_t
m_size
;
226
};
227
231
struct
BuildDataListElement_s
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
258
struct
BuildRarListElement_s
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
269
struct
BuildBroadcastListElement_s
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
282
struct
UlInfoListElement_s
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
296
struct
SrListElement_s
297
{
298
uint16_t
m_rnti
;
299
};
300
304
struct
MacCeValue_u
305
{
306
uint8_t
m_phr
;
307
uint8_t
m_crnti
;
308
std::vector <uint8_t>
m_bufferStatus
;
309
};
310
314
struct
MacCeListElement_s
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
327
struct
DrxConfig_s
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
341
struct
SpsConfig_s
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
354
struct
SrConfig_s
355
{
356
enum
SetupRelease_e
m_action
;
357
uint8_t
m_schedInterval
;
358
uint8_t
m_dsrTransMax
;
359
};
360
364
struct
CqiConfig_s
365
{
366
enum
SetupRelease_e
m_action
;
367
uint16_t
m_cqiSchedInterval
;
368
uint8_t
m_riSchedInterval
;
369
};
370
374
struct
UeCapabilities_s
375
{
376
bool
m_halfDuplex
;
377
bool
m_intraSfHopping
;
378
bool
m_type2Sb1
;
379
uint8_t
m_ueCategory
;
380
bool
m_resAllocType1
;
381
};
382
386
struct
SiMessageListElement_s
387
{
388
uint16_t
m_periodicity
;
389
uint16_t
m_length
;
390
};
391
395
struct
SiConfiguration_s
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
406
struct
DlInfoListElement_s
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
430
struct
HigherLayerSelected_s
431
{
432
uint8_t
m_sbPmi
;
433
std::vector <uint8_t>
m_sbCqi
;
434
};
435
439
struct
UeSelected_s
440
{
441
std::vector <uint8_t>
m_sbList
;
442
uint8_t
m_sbPmi
;
443
std::vector <uint8_t>
m_sbCqi
;
444
};
445
449
struct
SbMeasResult_s
450
{
451
struct
UeSelected_s
m_ueSelected
;
452
std::vector <struct HigherLayerSelected_s>
m_higherLayerSelected
;
453
struct
BwPart_s
m_bwPart
;
454
};
455
459
struct
CqiListElement_s
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
492
struct
PagingInfoListElement_s
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 */
src
lte
model
ff-mac-common.h
Generated on Tue May 14 2013 11:08:25 for ns-3 by
1.8.1.2