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
lte-rrc-header.h
Go to the documentation of this file.
1
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2012 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: Lluis Parcerisa <lparcerisa@cttc.cat>
19
*/
20
21
#ifndef RRC_HEADER_H
22
#define RRC_HEADER_H
23
24
#include "ns3/header.h"
25
26
#include <bitset>
27
#include <string>
28
29
#include "ns3/lte-rrc-sap.h"
30
#include "ns3/lte-asn1-header.h"
31
32
namespace
ns3 {
33
38
class
RrcAsn1Header
:
public
Asn1Header
39
{
40
public
:
41
RrcAsn1Header
();
42
int
GetMessageType
();
43
44
protected
:
45
// Inherited from Asn1Header
46
static
TypeId
GetTypeId
(
void
);
47
virtual
TypeId
GetInstanceTypeId
(
void
)
const
;
48
uint32_t
Deserialize
(
Buffer::Iterator
bIterator) = 0;
49
virtual
void
PreSerialize
(
void
)
const
= 0;
50
51
// Serialization functions
52
void
SerializeSrbToAddModList
(std::list<LteRrcSap::SrbToAddMod> srbToAddModList)
const
;
53
void
SerializeDrbToAddModList
(std::list<LteRrcSap::DrbToAddMod> drbToAddModList)
const
;
54
void
SerializeLogicalChannelConfig
(
LteRrcSap::LogicalChannelConfig
logicalChannelConfig)
const
;
55
void
SerializeRadioResourceConfigDedicated
(
LteRrcSap::RadioResourceConfigDedicated
radioResourceConfigDedicated)
const
;
56
void
SerializePhysicalConfigDedicated
(
LteRrcSap::PhysicalConfigDedicated
physicalConfigDedicated)
const
;
57
void
SerializeSystemInformationBlockType1
(
LteRrcSap::SystemInformationBlockType1
systemInformationBlockType1)
const
;
58
void
SerializeSystemInformationBlockType2
(
LteRrcSap::SystemInformationBlockType2
systemInformationBlockType2)
const
;
59
void
SerializeRadioResourceConfigCommon
(
LteRrcSap::RadioResourceConfigCommon
radioResourceConfigCommon)
const
;
60
void
SerializeRadioResourceConfigCommonSib
(
LteRrcSap::RadioResourceConfigCommonSib
radioResourceConfigCommonSib)
const
;
61
void
SerializeMeasResults
(
LteRrcSap::MeasResults
measResults)
const
;
62
void
SerializePlmnIdentity
(uint32_t plmnId)
const
;
63
void
SerializeRachConfigCommon
(
LteRrcSap::RachConfigCommon
rachConfigCommon)
const
;
64
void
SerializeMeasConfig
(
LteRrcSap::MeasConfig
measConfig)
const
;
65
void
SerializeQoffsetRange
(int8_t qOffsetRange)
const
;
66
void
SerializeThresholdEutra
(
LteRrcSap::ThresholdEutra
thresholdEutra)
const
;
67
68
// Deserialization functions
69
Buffer::Iterator
DeserializeDrbToAddModList
(std::list<LteRrcSap::DrbToAddMod> *drbToAddModLis,
Buffer::Iterator
bIterator);
70
Buffer::Iterator
DeserializeSrbToAddModList
(std::list<LteRrcSap::SrbToAddMod> *srbToAddModList,
Buffer::Iterator
bIterator);
71
Buffer::Iterator
DeserializeLogicalChannelConfig
(
LteRrcSap::LogicalChannelConfig
*logicalChannelConfig,
Buffer::Iterator
bIterator);
72
Buffer::Iterator
DeserializeRadioResourceConfigDedicated
(
LteRrcSap::RadioResourceConfigDedicated
*radioResourceConfigDedicated,
Buffer::Iterator
bIterator);
73
Buffer::Iterator
DeserializePhysicalConfigDedicated
(
LteRrcSap::PhysicalConfigDedicated
*physicalConfigDedicated,
Buffer::Iterator
bIterator);
74
Buffer::Iterator
DeserializeSystemInformationBlockType1
(
LteRrcSap::SystemInformationBlockType1
*systemInformationBlockType1,
Buffer::Iterator
bIterator);
75
Buffer::Iterator
DeserializeSystemInformationBlockType2
(
LteRrcSap::SystemInformationBlockType2
*systemInformationBlockType2,
Buffer::Iterator
bIterator);
76
Buffer::Iterator
DeserializeRadioResourceConfigCommon
(
LteRrcSap::RadioResourceConfigCommon
*radioResourceConfigCommon,
Buffer::Iterator
bIterator);
77
Buffer::Iterator
DeserializeRadioResourceConfigCommonSib
(
LteRrcSap::RadioResourceConfigCommonSib
*radioResourceConfigCommonSib,
Buffer::Iterator
bIterator);
78
Buffer::Iterator
DeserializeMeasResults
(
LteRrcSap::MeasResults
*measResults,
Buffer::Iterator
bIterator);
79
Buffer::Iterator
DeserializePlmnIdentity
(uint32_t *plmnId,
Buffer::Iterator
bIterator);
80
Buffer::Iterator
DeserializeRachConfigCommon
(
LteRrcSap::RachConfigCommon
* rachConfigCommon,
Buffer::Iterator
bIterator);
81
Buffer::Iterator
DeserializeMeasConfig
(
LteRrcSap::MeasConfig
* measConfig,
Buffer::Iterator
bIterator);
82
Buffer::Iterator
DeserializeQoffsetRange
(int8_t * qOffsetRange,
Buffer::Iterator
bIterator);
83
Buffer::Iterator
DeserializeThresholdEutra
(
LteRrcSap::ThresholdEutra
* thresholdEutra,
Buffer::Iterator
bIterator);
84
90
void
Print
(std::ostream &os,
LteRrcSap::RadioResourceConfigDedicated
radioResourceConfigDedicated)
const
;
91
93
int
m_messageType
;
94
};
95
96
101
class
RrcUlDcchMessage
:
public
RrcAsn1Header
102
{
103
public
:
104
RrcUlDcchMessage
();
105
~RrcUlDcchMessage
();
106
107
// Inherited from RrcAsn1Header
108
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
109
void
Print
(std::ostream &os)
const
;
110
void
PreSerialize
()
const
;
111
112
protected
:
113
void
SerializeUlDcchMessage
(
int
msgType)
const
;
114
Buffer::Iterator
DeserializeUlDcchMessage
(
Buffer::Iterator
bIterator);
115
};
116
121
class
RrcDlDcchMessage
:
public
RrcAsn1Header
122
{
123
public
:
124
RrcDlDcchMessage
();
125
~RrcDlDcchMessage
();
126
127
// Inherited from RrcAsn1Header
128
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
129
void
Print
(std::ostream &os)
const
;
130
void
PreSerialize
()
const
;
131
132
protected
:
133
void
SerializeDlDcchMessage
(
int
msgType)
const
;
134
Buffer::Iterator
DeserializeDlDcchMessage
(
Buffer::Iterator
bIterator);
135
};
136
141
class
RrcUlCcchMessage
:
public
RrcAsn1Header
142
{
143
public
:
144
RrcUlCcchMessage
();
145
~RrcUlCcchMessage
();
146
147
// Inherited from RrcAsn1Header
148
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
149
void
Print
(std::ostream &os)
const
;
150
void
PreSerialize
()
const
;
151
152
protected
:
153
void
SerializeUlCcchMessage
(
int
msgType)
const
;
154
Buffer::Iterator
DeserializeUlCcchMessage
(
Buffer::Iterator
bIterator);
155
};
156
161
class
RrcDlCcchMessage
:
public
RrcAsn1Header
162
{
163
public
:
164
RrcDlCcchMessage
();
165
~RrcDlCcchMessage
();
166
167
// Inherited from RrcAsn1Header
168
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
169
void
Print
(std::ostream &os)
const
;
170
void
PreSerialize
()
const
;
171
172
protected
:
173
void
SerializeDlCcchMessage
(
int
msgType)
const
;
174
Buffer::Iterator
DeserializeDlCcchMessage
(
Buffer::Iterator
bIterator);
175
};
176
180
class
RrcConnectionRequestHeader
:
public
RrcUlCcchMessage
181
{
182
public
:
183
RrcConnectionRequestHeader
();
184
~RrcConnectionRequestHeader
();
185
186
// Inherited from RrcAsn1Header
187
static
TypeId
GetTypeId
(
void
);
188
void
PreSerialize
()
const
;
189
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
190
void
Print
(std::ostream &os)
const
;
191
196
void
SetMessage
(
LteRrcSap::RrcConnectionRequest
msg);
197
202
LteRrcSap::RrcConnectionRequest
GetMessage
()
const
;
203
208
std::bitset<8>
GetMmec
()
const
;
209
214
std::bitset<32>
GetMtmsi
()
const
;
215
216
private
:
217
std::bitset<8>
m_mmec
;
218
std::bitset<32>
m_mTmsi
;
219
enum
220
{
221
EMERGENCY
= 0,
HIGHPRIORITYACCESS
,
MT_ACCESS
,
222
MO_SIGNALLING
,
MO_DATA
,
SPARE3
,
SPARE2
,
SPARE1
223
}
m_establishmentCause
;
224
std::bitset<1>
m_spare
;
225
};
226
230
class
RrcConnectionSetupHeader
:
public
RrcDlCcchMessage
231
{
232
public
:
233
RrcConnectionSetupHeader
();
234
~RrcConnectionSetupHeader
();
235
236
// Inherited from RrcAsn1Header
237
void
PreSerialize
()
const
;
238
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
239
void
Print
(std::ostream &os)
const
;
240
245
void
SetMessage
(
LteRrcSap::RrcConnectionSetup
msg);
246
251
LteRrcSap::RrcConnectionSetup
GetMessage
()
const
;
252
257
uint8_t
GetRrcTransactionIdentifier
()
const
;
258
263
LteRrcSap::RadioResourceConfigDedicated
GetRadioResourceConfigDedicated
()
const
;
264
269
bool
HavePhysicalConfigDedicated
()
const
;
270
275
LteRrcSap::PhysicalConfigDedicated
GetPhysicalConfigDedicated
()
const
;
276
281
std::list<LteRrcSap::SrbToAddMod>
GetSrbToAddModList
()
const
;
282
287
std::list<LteRrcSap::DrbToAddMod>
GetDrbToAddModList
()
const
;
288
293
std::list<uint8_t>
GetDrbToReleaseList
()
const
;
294
295
private
:
296
uint8_t
m_rrcTransactionIdentifier
;
297
mutable
LteRrcSap::RadioResourceConfigDedicated
m_radioResourceConfigDedicated
;
298
};
299
303
class
RrcConnectionSetupCompleteHeader
:
public
RrcUlDcchMessage
304
{
305
public
:
306
RrcConnectionSetupCompleteHeader
();
307
~RrcConnectionSetupCompleteHeader
();
308
309
// Inherited from RrcAsn1Header
310
void
PreSerialize
()
const
;
311
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
312
void
Print
(std::ostream &os)
const
;
313
318
void
SetMessage
(
LteRrcSap::RrcConnectionSetupCompleted
msg);
319
324
LteRrcSap::RrcConnectionSetupCompleted
GetMessage
()
const
;
325
330
uint8_t
GetRrcTransactionIdentifier
()
const
;
331
332
private
:
333
uint8_t
m_rrcTransactionIdentifier
;
334
335
};
336
340
class
RrcConnectionReconfigurationCompleteHeader
:
public
RrcUlDcchMessage
341
{
342
public
:
343
RrcConnectionReconfigurationCompleteHeader
();
344
~RrcConnectionReconfigurationCompleteHeader
();
345
346
// Inherited from RrcAsn1Header
347
void
PreSerialize
()
const
;
348
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
349
void
Print
(std::ostream &os)
const
;
350
355
void
SetMessage
(
LteRrcSap::RrcConnectionReconfigurationCompleted
msg);
356
361
LteRrcSap::RrcConnectionReconfigurationCompleted
GetMessage
()
const
;
362
367
uint8_t
GetRrcTransactionIdentifier
()
const
;
368
369
private
:
370
uint8_t
m_rrcTransactionIdentifier
;
371
372
};
373
377
class
RrcConnectionReconfigurationHeader
:
public
RrcDlDcchMessage
378
{
379
public
:
380
RrcConnectionReconfigurationHeader
();
381
~RrcConnectionReconfigurationHeader
();
382
383
// Inherited from RrcAsn1Header
384
void
PreSerialize
()
const
;
385
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
386
void
Print
(std::ostream &os)
const
;
387
392
void
SetMessage
(
LteRrcSap::RrcConnectionReconfiguration
msg);
393
398
LteRrcSap::RrcConnectionReconfiguration
GetMessage
()
const
;
399
404
bool
GetHaveMeasConfig
();
405
410
LteRrcSap::MeasConfig
GetMeasConfig
();
411
416
bool
GetHaveMobilityControlInfo
();
417
422
LteRrcSap::MobilityControlInfo
GetMobilityControlInfo
();
423
428
bool
GetHaveRadioResourceConfigDedicated
();
429
434
LteRrcSap::RadioResourceConfigDedicated
GetRadioResourceConfigDedicated
();
435
440
uint8_t
GetRrcTransactionIdentifier
()
const
;
441
446
LteRrcSap::RadioResourceConfigDedicated
GetRadioResourceConfigDedicated
()
const
;
447
452
bool
HavePhysicalConfigDedicated
()
const
;
453
458
LteRrcSap::PhysicalConfigDedicated
GetPhysicalConfigDedicated
()
const
;
459
464
std::list<LteRrcSap::SrbToAddMod>
GetSrbToAddModList
()
const
;
465
470
std::list<LteRrcSap::DrbToAddMod>
GetDrbToAddModList
()
const
;
471
476
std::list<uint8_t>
GetDrbToReleaseList
()
const
;
477
478
private
:
479
uint8_t
m_rrcTransactionIdentifier
;
480
bool
m_haveMeasConfig
;
481
LteRrcSap::MeasConfig
m_measConfig
;
482
bool
m_haveMobilityControlInfo
;
483
LteRrcSap::MobilityControlInfo
m_mobilityControlInfo
;
484
bool
m_haveRadioResourceConfigDedicated
;
485
LteRrcSap::RadioResourceConfigDedicated
m_radioResourceConfigDedicated
;
486
};
487
491
class
HandoverPreparationInfoHeader
:
public
RrcAsn1Header
492
{
493
public
:
494
HandoverPreparationInfoHeader
();
495
496
// Inherited from RrcAsn1Header
497
void
PreSerialize
()
const
;
498
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
499
void
Print
(std::ostream &os)
const
;
500
505
void
SetMessage
(
LteRrcSap::HandoverPreparationInfo
msg);
506
511
LteRrcSap::HandoverPreparationInfo
GetMessage
()
const
;
512
517
LteRrcSap::AsConfig
GetAsConfig
()
const
;
518
519
private
:
520
LteRrcSap::AsConfig
m_asConfig
;
521
};
522
526
class
RrcConnectionReestablishmentRequestHeader
:
public
RrcUlCcchMessage
527
{
528
public
:
529
RrcConnectionReestablishmentRequestHeader
();
530
~RrcConnectionReestablishmentRequestHeader
();
531
532
// Inherited from RrcAsn1Header
533
void
PreSerialize
()
const
;
534
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
535
void
Print
(std::ostream &os)
const
;
536
541
void
SetMessage
(
LteRrcSap::RrcConnectionReestablishmentRequest
msg);
542
547
LteRrcSap::RrcConnectionReestablishmentRequest
GetMessage
()
const
;
548
553
LteRrcSap::ReestabUeIdentity
GetUeIdentity
()
const
;
554
559
LteRrcSap::ReestablishmentCause
GetReestablishmentCause
()
const
;
560
561
private
:
562
LteRrcSap::ReestabUeIdentity
m_ueIdentity
;
563
LteRrcSap::ReestablishmentCause
m_reestablishmentCause
;
564
};
565
569
class
RrcConnectionReestablishmentHeader
:
public
RrcDlCcchMessage
570
{
571
public
:
572
RrcConnectionReestablishmentHeader
();
573
~RrcConnectionReestablishmentHeader
();
574
575
// Inherited from RrcAsn1Header
576
void
PreSerialize
()
const
;
577
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
578
void
Print
(std::ostream &os)
const
;
579
584
void
SetMessage
(
LteRrcSap::RrcConnectionReestablishment
msg);
585
590
LteRrcSap::RrcConnectionReestablishment
GetMessage
()
const
;
591
596
uint8_t
GetRrcTransactionIdentifier
()
const
;
597
602
LteRrcSap::RadioResourceConfigDedicated
GetRadioResourceConfigDedicated
()
const
;
603
604
private
:
605
uint8_t
m_rrcTransactionIdentifier
;
606
LteRrcSap::RadioResourceConfigDedicated
m_radioResourceConfigDedicated
;
607
};
608
612
class
RrcConnectionReestablishmentCompleteHeader
:
public
RrcUlDcchMessage
613
{
614
public
:
615
RrcConnectionReestablishmentCompleteHeader
();
616
617
// Inherited from RrcAsn1Header
618
void
PreSerialize
()
const
;
619
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
620
void
Print
(std::ostream &os)
const
;
621
626
void
SetMessage
(
LteRrcSap::RrcConnectionReestablishmentComplete
msg);
627
632
LteRrcSap::RrcConnectionReestablishmentComplete
GetMessage
()
const
;
633
638
uint8_t
GetRrcTransactionIdentifier
()
const
;
639
640
private
:
641
uint8_t
m_rrcTransactionIdentifier
;
642
};
643
647
class
RrcConnectionReestablishmentRejectHeader
:
public
RrcDlCcchMessage
648
{
649
public
:
650
RrcConnectionReestablishmentRejectHeader
();
651
~RrcConnectionReestablishmentRejectHeader
();
652
653
// Inherited from RrcAsn1Header
654
void
PreSerialize
()
const
;
655
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
656
void
Print
(std::ostream &os)
const
;
657
662
void
SetMessage
(
LteRrcSap::RrcConnectionReestablishmentReject
msg);
663
668
LteRrcSap::RrcConnectionReestablishmentReject
GetMessage
()
const
;
669
670
private
:
671
LteRrcSap::RrcConnectionReestablishmentReject
m_rrcConnectionReestablishmentReject
;
672
};
673
677
class
RrcConnectionReleaseHeader
:
public
RrcDlDcchMessage
678
{
679
public
:
680
RrcConnectionReleaseHeader
();
681
~RrcConnectionReleaseHeader
();
682
683
// Inherited from RrcAsn1Header
684
void
PreSerialize
()
const
;
685
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
686
void
Print
(std::ostream &os)
const
;
687
692
void
SetMessage
(
LteRrcSap::RrcConnectionRelease
msg);
693
698
LteRrcSap::RrcConnectionRelease
GetMessage
()
const
;
699
700
private
:
701
LteRrcSap::RrcConnectionRelease
m_rrcConnectionRelease
;
702
};
703
707
class
RrcConnectionRejectHeader
:
public
RrcDlCcchMessage
708
{
709
public
:
710
RrcConnectionRejectHeader
();
711
~RrcConnectionRejectHeader
();
712
713
// Inherited from RrcAsn1Header
714
void
PreSerialize
()
const
;
715
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
716
void
Print
(std::ostream &os)
const
;
717
722
void
SetMessage
(
LteRrcSap::RrcConnectionReject
msg);
723
728
LteRrcSap::RrcConnectionReject
GetMessage
()
const
;
729
730
private
:
731
LteRrcSap::RrcConnectionReject
m_rrcConnectionReject
;
732
};
733
737
class
MeasurementReportHeader
:
public
RrcUlDcchMessage
738
{
739
public
:
740
MeasurementReportHeader
();
741
~MeasurementReportHeader
();
742
743
// Inherited from RrcAsn1Header
744
void
PreSerialize
()
const
;
745
uint32_t
Deserialize
(
Buffer::Iterator
bIterator);
746
void
Print
(std::ostream &os)
const
;
747
752
void
SetMessage
(
LteRrcSap::MeasurementReport
msg);
753
758
LteRrcSap::MeasurementReport
GetMessage
()
const
;
759
760
private
:
761
LteRrcSap::MeasurementReport
m_measurementReport
;
762
763
};
764
765
}
// namespace ns3
766
767
#endif // RRC_HEADER_H
768
src
lte
model
lte-rrc-header.h
Generated on Tue May 14 2013 11:08:26 for ns-3 by
1.8.1.2