A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
test-asn1-encoding.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Lluis Parcerisa <lparcerisa@cttc.cat>
18 */
19
20#include "ns3/boolean.h"
21#include "ns3/double.h"
22#include "ns3/enum.h"
23#include "ns3/log.h"
24#include "ns3/lte-rrc-header.h"
25#include "ns3/lte-rrc-sap.h"
26#include "ns3/packet.h"
27#include "ns3/ptr.h"
28#include "ns3/string.h"
29#include "ns3/test.h"
30
31#include <iomanip>
32
33using namespace ns3;
34
35NS_LOG_COMPONENT_DEFINE("Asn1EncodingTest");
36
43{
44 public:
50 static std::string sprintPacketContentsHex(Ptr<Packet> pkt)
51 {
52 uint32_t psize = pkt->GetSize();
53 uint8_t buffer[psize];
54 std::ostringstream oss(std::ostringstream::out);
55 pkt->CopyData(buffer, psize);
56 for (uint32_t i = 0; i < psize; i++)
57 {
58 oss << std::setfill('0') << std::setw(2) << std::hex << +(buffer[i]) << " ";
59 }
60 return std::string(oss.str() + "\n");
61 }
62
68 static std::string sprintPacketContentsBin(Ptr<Packet> pkt)
69 {
70 uint32_t psize = pkt->GetSize();
71 uint8_t buffer[psize];
72 std::ostringstream oss(std::ostringstream::out);
73 pkt->CopyData(buffer, psize);
74 for (uint32_t i = 0; i < psize; i++)
75 {
76 oss << (std::bitset<8>(buffer[i]));
77 }
78 return std::string(oss.str() + "\n");
79 }
80
86 {
87 NS_LOG_DEBUG("---- SERIALIZED PACKET CONTENTS (HEX): -------");
90 }
91
97 template <class T>
98 static void LogPacketInfo(T source, std::string s)
99 {
100 NS_LOG_DEBUG("--------- " << s.data() << " INFO: -------");
101 std::ostringstream oss(std::ostringstream::out);
102 source.Print(oss);
103 NS_LOG_DEBUG(oss.str());
104 }
105};
106
107// --------------------------- CLASS RrcHeaderTestCase -----------------------------
115{
116 public:
121 RrcHeaderTestCase(std::string s);
122 void DoRun() override = 0;
135
136 protected:
138};
139
141 : TestCase(s)
142{
143}
144
147{
149
150 rrd.drbToReleaseList = std::list<uint8_t>(4, 2);
151
152 LteRrcSap::SrbToAddMod srbToAddMod;
153 srbToAddMod.srbIdentity = 2;
154
155 LteRrcSap::LogicalChannelConfig logicalChannelConfig;
156 logicalChannelConfig.priority = 9;
157 logicalChannelConfig.prioritizedBitRateKbps = 128;
158 logicalChannelConfig.bucketSizeDurationMs = 100;
159 logicalChannelConfig.logicalChannelGroup = 3;
160 srbToAddMod.logicalChannelConfig = logicalChannelConfig;
161
162 rrd.srbToAddModList.insert(rrd.srbToAddModList.begin(), srbToAddMod);
163
164 LteRrcSap::DrbToAddMod drbToAddMod;
165 drbToAddMod.epsBearerIdentity = 1;
166 drbToAddMod.drbIdentity = 1;
167 drbToAddMod.logicalChannelIdentity = 5;
168 LteRrcSap::RlcConfig rlcConfig;
170 drbToAddMod.rlcConfig = rlcConfig;
171
172 LteRrcSap::LogicalChannelConfig logicalChannelConfig2;
173 logicalChannelConfig2.priority = 7;
174 logicalChannelConfig2.prioritizedBitRateKbps = 256;
175 logicalChannelConfig2.bucketSizeDurationMs = 50;
176 logicalChannelConfig2.logicalChannelGroup = 2;
177 drbToAddMod.logicalChannelConfig = logicalChannelConfig2;
178
179 rrd.drbToAddModList.insert(rrd.drbToAddModList.begin(), drbToAddMod);
180
182 LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated;
183 physicalConfigDedicated.haveSoundingRsUlConfigDedicated = true;
184 physicalConfigDedicated.soundingRsUlConfigDedicated.type =
186 physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth = 2;
187 physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = 12;
188
189 physicalConfigDedicated.haveAntennaInfoDedicated = true;
190 physicalConfigDedicated.antennaInfo.transmissionMode = 2;
191
192 physicalConfigDedicated.havePdschConfigDedicated = true;
194
195 rrd.physicalConfigDedicated = physicalConfigDedicated;
196
197 return rrd;
198}
199
200void
204{
206 rrcd2.srbToAddModList.size(),
207 "SrbToAddModList different sizes");
208
209 std::list<LteRrcSap::SrbToAddMod> srcSrbToAddModList = rrcd1.srbToAddModList;
210 auto it1 = srcSrbToAddModList.begin();
211 std::list<LteRrcSap::SrbToAddMod> dstSrbToAddModList = rrcd2.srbToAddModList;
212 auto it2 = dstSrbToAddModList.begin();
213
214 for (; it1 != srcSrbToAddModList.end(); it1++, it2++)
215 {
216 NS_TEST_ASSERT_MSG_EQ(it1->srbIdentity, it2->srbIdentity, "srbIdentity");
217 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.priority,
218 it2->logicalChannelConfig.priority,
219 "logicalChannelConfig.priority");
220 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.prioritizedBitRateKbps,
221 it2->logicalChannelConfig.prioritizedBitRateKbps,
222 "logicalChannelConfig.prioritizedBitRateKbps");
223 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.bucketSizeDurationMs,
224 it2->logicalChannelConfig.bucketSizeDurationMs,
225 "logicalChannelConfig.bucketSizeDurationMs");
226 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.logicalChannelGroup,
227 it2->logicalChannelConfig.logicalChannelGroup,
228 "logicalChannelConfig.logicalChannelGroup");
229 }
230
232 rrcd2.drbToAddModList.size(),
233 "DrbToAddModList different sizes");
234
235 std::list<LteRrcSap::DrbToAddMod> srcDrbToAddModList = rrcd1.drbToAddModList;
236 auto it3 = srcDrbToAddModList.begin();
237 std::list<LteRrcSap::DrbToAddMod> dstDrbToAddModList = rrcd2.drbToAddModList;
238 auto it4 = dstDrbToAddModList.begin();
239
240 for (; it3 != srcDrbToAddModList.end(); it3++, it4++)
241 {
242 NS_TEST_ASSERT_MSG_EQ(it3->epsBearerIdentity, it4->epsBearerIdentity, "epsBearerIdentity");
243 NS_TEST_ASSERT_MSG_EQ(it3->drbIdentity, it4->drbIdentity, "drbIdentity");
244 NS_TEST_ASSERT_MSG_EQ(it3->rlcConfig.choice, it4->rlcConfig.choice, "rlcConfig.choice");
245 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelIdentity,
246 it4->logicalChannelIdentity,
247 "logicalChannelIdentity");
248 NS_TEST_ASSERT_MSG_EQ(it3->epsBearerIdentity, it4->epsBearerIdentity, "epsBearerIdentity");
249
250 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.priority,
251 it4->logicalChannelConfig.priority,
252 "logicalChannelConfig.priority");
253 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.prioritizedBitRateKbps,
254 it4->logicalChannelConfig.prioritizedBitRateKbps,
255 "logicalChannelConfig.prioritizedBitRateKbps");
256 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.bucketSizeDurationMs,
257 it4->logicalChannelConfig.bucketSizeDurationMs,
258 "logicalChannelConfig.bucketSizeDurationMs");
259 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.logicalChannelGroup,
260 it4->logicalChannelConfig.logicalChannelGroup,
261 "logicalChannelConfig.logicalChannelGroup");
262 }
263
265 rrcd2.drbToReleaseList.size(),
266 "DrbToReleaseList different sizes");
267
268 std::list<uint8_t> srcDrbToReleaseList = rrcd1.drbToReleaseList;
269 std::list<uint8_t> dstDrbToReleaseList = rrcd2.drbToReleaseList;
270 auto it5 = srcDrbToReleaseList.begin();
271 auto it6 = dstDrbToReleaseList.begin();
272
273 for (; it5 != srcDrbToReleaseList.end(); it5++, it6++)
274 {
275 NS_TEST_ASSERT_MSG_EQ(*it5, *it6, "element != in DrbToReleaseList");
276 }
277
280 "HavePhysicalConfigDedicated");
281
283 {
286 "haveSoundingRsUlConfigDedicated");
287
290 "soundingRsUlConfigDedicated.type");
294 "soundingRsUlConfigDedicated.srsBandwidth");
295
299 "soundingRsUlConfigDedicated.srsConfigIndex");
300
303 "haveAntennaInfoDedicated");
304
306 {
309 "antennaInfo.transmissionMode");
310 }
311
314 "havePdschConfigDedicated");
315
317 {
320 "pdschConfigDedicated.pa");
321 }
322 }
323}
324
331{
332 public:
334 void DoRun() override;
335};
336
338 : RrcHeaderTestCase("Testing RrcConnectionRequest")
339{
340}
341
342void
344{
345 packet = Create<Packet>();
346 NS_LOG_DEBUG("============= RrcConnectionRequestTestCase ===========");
347
349 msg.ueIdentity = 0x83fecafecaULL;
350
352 source.SetMessage(msg);
353
354 // Log source info
355 TestUtils::LogPacketInfo<RrcConnectionRequestHeader>(source, "SOURCE");
356
357 // Add header
358 packet->AddHeader(source);
359
360 // Log serialized packet contents
362
363 // Remove header
364 RrcConnectionRequestHeader destination;
365 packet->RemoveHeader(destination);
366
367 // Log destination info
368 TestUtils::LogPacketInfo<RrcConnectionRequestHeader>(destination, "DESTINATION");
369
370 // Check that the destination and source headers contain the same values
371 NS_TEST_ASSERT_MSG_EQ(source.GetMmec(), destination.GetMmec(), "Different m_mmec!");
372 NS_TEST_ASSERT_MSG_EQ(source.GetMtmsi(), destination.GetMtmsi(), "Different m_mTmsi!");
373
374 packet = nullptr;
375}
376
383{
384 public:
386 void DoRun() override;
387};
388
390 : RrcHeaderTestCase("Testing RrcConnectionSetupTestCase")
391{
392}
393
394void
396{
397 packet = Create<Packet>();
398 NS_LOG_DEBUG("============= RrcConnectionSetupTestCase ===========");
399
403
405 source.SetMessage(msg);
406
407 // Log source info
408 TestUtils::LogPacketInfo<RrcConnectionSetupHeader>(source, "SOURCE");
409
410 // Add header
411 packet->AddHeader(source);
412
413 // Log serialized packet contents
415
416 // remove header
417 RrcConnectionSetupHeader destination;
418 packet->RemoveHeader(destination);
419
420 // Log destination info
421 TestUtils::LogPacketInfo<RrcConnectionSetupHeader>(destination, "DESTINATION");
422
423 // Check that the destination and source headers contain the same values
425 destination.GetRrcTransactionIdentifier(),
426 "RrcTransactionIdentifier");
427
429 destination.GetRadioResourceConfigDedicated());
430
431 packet = nullptr;
432}
433
440{
441 public:
443 void DoRun() override;
444};
445
447 : RrcHeaderTestCase("Testing RrcConnectionSetupCompleteTestCase")
448{
449}
450
451void
453{
454 packet = Create<Packet>();
455 NS_LOG_DEBUG("============= RrcConnectionSetupCompleteTestCase ===========");
456
459
461 source.SetMessage(msg);
462
463 // Log source info
464 TestUtils::LogPacketInfo<RrcConnectionSetupCompleteHeader>(source, "SOURCE");
465
466 // Add header
467 packet->AddHeader(source);
468
469 // Log serialized packet contents
471
472 // Remove header
474 packet->RemoveHeader(destination);
475
476 // Log destination info
477 TestUtils::LogPacketInfo<RrcConnectionSetupCompleteHeader>(destination, "DESTINATION");
478
479 // Check that the destination and source headers contain the same values
481 destination.GetRrcTransactionIdentifier(),
482 "RrcTransactionIdentifier");
483
484 packet = nullptr;
485}
486
493{
494 public:
496 void DoRun() override;
497};
498
500 : RrcHeaderTestCase("Testing RrcConnectionReconfigurationCompleteTestCase")
501{
502}
503
504void
506{
507 packet = Create<Packet>();
508 NS_LOG_DEBUG("============= RrcConnectionReconfigurationCompleteTestCase ===========");
509
512
514 source.SetMessage(msg);
515
516 // Log source info
517 TestUtils::LogPacketInfo<RrcConnectionReconfigurationCompleteHeader>(source, "SOURCE");
518
519 // Add header
520 packet->AddHeader(source);
521
522 // Log serialized packet contents
524
525 // remove header
527 packet->RemoveHeader(destination);
528
529 // Log destination info
530 TestUtils::LogPacketInfo<RrcConnectionReconfigurationCompleteHeader>(destination,
531 "DESTINATION");
532
533 // Check that the destination and source headers contain the same values
535 destination.GetRrcTransactionIdentifier(),
536 "RrcTransactionIdentifier");
537
538 packet = nullptr;
539}
540
547{
548 public:
550 void DoRun() override;
551};
552
554 : RrcHeaderTestCase("Testing RrcConnectionReconfigurationTestCase")
555{
556}
557
558void
560{
561 packet = Create<Packet>();
562 NS_LOG_DEBUG("============= RrcConnectionReconfigurationTestCase ===========");
563
566
567 msg.haveMeasConfig = true;
568
572
573 msg.measConfig.haveMeasGapConfig = true;
577
578 msg.measConfig.haveSmeasure = true;
579 msg.measConfig.sMeasure = 57;
580
589
590 msg.measConfig.measObjectToRemoveList.push_back(23);
591 msg.measConfig.measObjectToRemoveList.push_back(13);
592
593 msg.measConfig.reportConfigToRemoveList.push_back(7);
594 msg.measConfig.reportConfigToRemoveList.push_back(16);
595
596 msg.measConfig.measIdToRemoveList.push_back(4);
597 msg.measConfig.measIdToRemoveList.push_back(18);
598
599 // Set measObjectToAddModList
600 LteRrcSap::MeasObjectToAddMod measObjectToAddMod;
601 measObjectToAddMod.measObjectId = 3;
602 measObjectToAddMod.measObjectEutra.carrierFreq = 21;
603 measObjectToAddMod.measObjectEutra.allowedMeasBandwidth = 15;
604 measObjectToAddMod.measObjectEutra.presenceAntennaPort1 = true;
605 measObjectToAddMod.measObjectEutra.neighCellConfig = 3;
606 measObjectToAddMod.measObjectEutra.offsetFreq = -12;
607 measObjectToAddMod.measObjectEutra.cellsToRemoveList.push_back(5);
608 measObjectToAddMod.measObjectEutra.cellsToRemoveList.push_back(2);
609 measObjectToAddMod.measObjectEutra.blackCellsToRemoveList.push_back(1);
610 measObjectToAddMod.measObjectEutra.haveCellForWhichToReportCGI = true;
611 measObjectToAddMod.measObjectEutra.cellForWhichToReportCGI = 250;
612 LteRrcSap::CellsToAddMod cellsToAddMod;
613 cellsToAddMod.cellIndex = 20;
614 cellsToAddMod.physCellId = 14;
615 cellsToAddMod.cellIndividualOffset = 22;
616 measObjectToAddMod.measObjectEutra.cellsToAddModList.push_back(cellsToAddMod);
617 LteRrcSap::BlackCellsToAddMod blackCellsToAddMod;
618 blackCellsToAddMod.cellIndex = 18;
619 blackCellsToAddMod.physCellIdRange.start = 128;
620 blackCellsToAddMod.physCellIdRange.haveRange = true;
621 blackCellsToAddMod.physCellIdRange.range = 128;
622 measObjectToAddMod.measObjectEutra.blackCellsToAddModList.push_back(blackCellsToAddMod);
623 msg.measConfig.measObjectToAddModList.push_back(measObjectToAddMod);
624
625 // Set reportConfigToAddModList
626 LteRrcSap::ReportConfigToAddMod reportConfigToAddMod;
627 reportConfigToAddMod.reportConfigId = 22;
630 reportConfigToAddMod.reportConfigEutra.threshold1.choice =
632 reportConfigToAddMod.reportConfigEutra.threshold1.range = 15;
633 reportConfigToAddMod.reportConfigEutra.threshold2.choice =
635 reportConfigToAddMod.reportConfigEutra.threshold2.range = 10;
636 reportConfigToAddMod.reportConfigEutra.reportOnLeave = true;
637 reportConfigToAddMod.reportConfigEutra.a3Offset = -25;
638 reportConfigToAddMod.reportConfigEutra.hysteresis = 18;
639 reportConfigToAddMod.reportConfigEutra.timeToTrigger = 100;
640 reportConfigToAddMod.reportConfigEutra.purpose =
643 reportConfigToAddMod.reportConfigEutra.reportQuantity =
645 reportConfigToAddMod.reportConfigEutra.maxReportCells = 5;
647 reportConfigToAddMod.reportConfigEutra.reportAmount = 16;
648 msg.measConfig.reportConfigToAddModList.push_back(reportConfigToAddMod);
649
650 // Set measIdToAddModList
651 LteRrcSap::MeasIdToAddMod measIdToAddMod;
652 LteRrcSap::MeasIdToAddMod measIdToAddMod2;
653 measIdToAddMod.measId = 7;
654 measIdToAddMod.measObjectId = 6;
655 measIdToAddMod.reportConfigId = 5;
656 measIdToAddMod2.measId = 4;
657 measIdToAddMod2.measObjectId = 8;
658 measIdToAddMod2.reportConfigId = 12;
659 msg.measConfig.measIdToAddModList.push_back(measIdToAddMod);
660 msg.measConfig.measIdToAddModList.push_back(measIdToAddMod2);
661
662 msg.haveMobilityControlInfo = true;
677 .preambleTransMax = 3;
680
682
684
685 msg.haveNonCriticalExtension = false; // Danilo
687 source.SetMessage(msg);
688
689 // Log source info
690 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader>(source, "SOURCE");
691
692 // Add header
693 packet->AddHeader(source);
694
695 // Log serialized packet contents
697
698 // remove header
700 packet->RemoveHeader(destination);
701
702 // Log destination info
703 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader>(destination, "DESTINATION");
704
705 // Check that the destination and source headers contain the same values
707 destination.GetRrcTransactionIdentifier(),
708 "RrcTransactionIdentifier");
710 destination.GetHaveMeasConfig(),
711 "GetHaveMeasConfig");
713 destination.GetHaveMobilityControlInfo(),
714 "GetHaveMobilityControlInfo");
717 "GetHaveRadioResourceConfigDedicated");
718
719 if (source.GetHaveMobilityControlInfo())
720 {
723 "GetMobilityControlInfo().targetPhysCellId");
726 "GetMobilityControlInfo().haveCarrierFreq");
729 "GetMobilityControlInfo().haveCarrierBandwidth");
732 "GetMobilityControlInfo().newUeIdentity");
735 "GetMobilityControlInfo().haveRachConfigDedicated");
736
738 {
741 "GetMobilityControlInfo().carrierFreq.dlCarrierFreq");
744 "GetMobilityControlInfo().carrierFreq.ulCarrierFreq");
745 }
746
748 {
751 "GetMobilityControlInfo().carrierBandwidth.dlBandwidth");
754 "GetMobilityControlInfo().carrierBandwidth.ulBandwidth");
755 }
756
758 {
762 "GetMobilityControlInfo().rachConfigDedicated.raPreambleIndex");
766 "GetMobilityControlInfo().rachConfigDedicated.raPrachMaskIndex");
767 }
768 }
769
771 {
773 destination.GetRadioResourceConfigDedicated());
774 }
775
776 packet = nullptr;
777}
778
785{
786 public:
788 void DoRun() override;
789};
790
792 : RrcHeaderTestCase("Testing HandoverPreparationInfoTestCase")
793{
794}
795
796void
798{
799 packet = Create<Packet>();
800 NS_LOG_DEBUG("============= HandoverPreparationInfoTestCase ===========");
801
804 msg.asConfig.sourceUeIdentity = 11;
808
813 .plmnIdentity = 123;
814
823
828
830 source.SetMessage(msg);
831
832 // Log source info
833 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader>(source, "SOURCE");
834
835 // Add header
836 packet->AddHeader(source);
837
838 // Log serialized packet contents
840
841 // remove header
843 packet->RemoveHeader(destination);
844
845 // Log destination info
846 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader>(destination, "DESTINATION");
847
848 // Check that the destination and source headers contain the same values
852 destination.GetAsConfig().sourceUeIdentity,
853 "sourceUeIdentity");
856 "dlBandwidth");
859 "systemFrameNumber");
861 source.GetAsConfig()
863 destination.GetAsConfig()
865 "plmnIdentity");
868 destination.GetAsConfig()
870 "csgIndication");
873 destination.GetAsConfig()
875 "cellIdentity");
878 destination.GetAsConfig()
880 "csgIdentity");
882 destination.GetAsConfig().sourceDlCarrierFreq,
883 "sourceDlCarrierFreq");
884
885 packet = nullptr;
886}
887
894{
895 public:
897 void DoRun() override;
898};
899
901 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentRequestTestCase")
902{
903}
904
905void
907{
908 packet = Create<Packet>();
909 NS_LOG_DEBUG("============= RrcConnectionReestablishmentRequestTestCase ===========");
910
912 msg.ueIdentity.cRnti = 12;
913 msg.ueIdentity.physCellId = 21;
915
917 source.SetMessage(msg);
918
919 // Log source info
920 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader>(source, "SOURCE");
921
922 // Add header
923 packet->AddHeader(source);
924
925 // Log serialized packet contents
927
928 // remove header
930 packet->RemoveHeader(destination);
931
932 // Log destination info
933 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader>(destination, "DESTINATION");
934
935 // Check that the destination and source headers contain the same values
936 NS_TEST_ASSERT_MSG_EQ(source.GetUeIdentity().cRnti, destination.GetUeIdentity().cRnti, "cRnti");
938 destination.GetUeIdentity().physCellId,
939 "physCellId");
941 destination.GetReestablishmentCause(),
942 "ReestablishmentCause");
943
944 packet = nullptr;
945}
946
953{
954 public:
956 void DoRun() override;
957};
958
960 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentTestCase")
961{
962}
963
964void
966{
967 packet = Create<Packet>();
968 NS_LOG_DEBUG("============= RrcConnectionReestablishmentTestCase ===========");
969
973
975 source.SetMessage(msg);
976
977 // Log source info
978 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader>(source, "SOURCE");
979
980 // Add header
981 packet->AddHeader(source);
982
983 // Log serialized packet contents
985
986 // remove header
988 packet->RemoveHeader(destination);
989
990 // Log destination info
991 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader>(destination, "DESTINATION");
992
993 // Check that the destination and source headers contain the same values
995 destination.GetRrcTransactionIdentifier(),
996 "rrcTransactionIdentifier");
998 destination.GetRadioResourceConfigDedicated());
999
1000 packet = nullptr;
1001}
1002
1009{
1010 public:
1012 void DoRun() override;
1013};
1014
1016 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentCompleteTestCase")
1017{
1018}
1019
1020void
1022{
1023 packet = Create<Packet>();
1024 NS_LOG_DEBUG("============= RrcConnectionReestablishmentCompleteTestCase ===========");
1025
1028
1030 source.SetMessage(msg);
1031
1032 // Log source info
1033 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader>(source, "SOURCE");
1034
1035 // Add header
1036 packet->AddHeader(source);
1037
1038 // Log serialized packet contents
1040
1041 // remove header
1043 packet->RemoveHeader(destination);
1044
1045 // Log destination info
1046 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader>(destination,
1047 "DESTINATION");
1048
1049 // Check that the destination and source headers contain the same values
1051 destination.GetRrcTransactionIdentifier(),
1052 "rrcTransactionIdentifier");
1053
1054 packet = nullptr;
1055}
1056
1063{
1064 public:
1066 void DoRun() override;
1067};
1068
1070 : RrcHeaderTestCase("Testing RrcConnectionRejectTestCase")
1071{
1072}
1073
1074void
1076{
1077 packet = Create<Packet>();
1078 NS_LOG_DEBUG("============= RrcConnectionRejectTestCase ===========");
1079
1081 msg.waitTime = 2;
1082
1084 source.SetMessage(msg);
1085
1086 // Log source info
1087 TestUtils::LogPacketInfo<RrcConnectionRejectHeader>(source, "SOURCE");
1088
1089 // Add header
1090 packet->AddHeader(source);
1091
1092 // Log serialized packet contents
1094
1095 // remove header
1096 RrcConnectionRejectHeader destination;
1097 packet->RemoveHeader(destination);
1098
1099 // Log destination info
1100 TestUtils::LogPacketInfo<RrcConnectionRejectHeader>(destination, "DESTINATION");
1101
1102 // Check that the destination and source headers contain the same values
1104 destination.GetMessage().waitTime,
1105 "Different waitTime!");
1106
1107 packet = nullptr;
1108}
1109
1116{
1117 public:
1119 void DoRun() override;
1120};
1121
1123 : RrcHeaderTestCase("Testing MeasurementReportTestCase")
1124{
1125}
1126
1127void
1129{
1130 packet = Create<Packet>();
1131 NS_LOG_DEBUG("============= MeasurementReportTestCase ===========");
1132
1134 msg.measResults.measId = 5;
1138
1140 mResEutra.physCellId = 9;
1141 mResEutra.haveRsrpResult = true;
1142 mResEutra.rsrpResult = 33;
1143 mResEutra.haveRsrqResult = true;
1144 mResEutra.rsrqResult = 22;
1145 mResEutra.haveCgiInfo = true;
1146 mResEutra.cgiInfo.plmnIdentity = 7;
1147 mResEutra.cgiInfo.cellIdentity = 6;
1148 mResEutra.cgiInfo.trackingAreaCode = 5;
1149 msg.measResults.measResultListEutra.push_back(mResEutra);
1150
1152
1154 source.SetMessage(msg);
1155
1156 // Log source info
1157 TestUtils::LogPacketInfo<MeasurementReportHeader>(source, "SOURCE");
1158
1159 // Add header
1160 packet->AddHeader(source);
1161
1162 // Log serialized packet contents
1164
1165 // remove header
1166 MeasurementReportHeader destination;
1167 packet->RemoveHeader(destination);
1168
1169 // Log destination info
1170 TestUtils::LogPacketInfo<MeasurementReportHeader>(destination, "DESTINATION");
1171
1172 // Check that the destination and source headers contain the same values
1174 LteRrcSap::MeasResults dstMeas = destination.GetMessage().measResults;
1175
1176 NS_TEST_ASSERT_MSG_EQ(srcMeas.measId, dstMeas.measId, "Different measId!");
1179 "Different rsrpResult!");
1182 "Different rsrqResult!");
1185 "Different haveMeasResultNeighCells!");
1186
1187 if (srcMeas.haveMeasResultNeighCells)
1188 {
1189 auto itsrc = srcMeas.measResultListEutra.begin();
1190 auto itdst = dstMeas.measResultListEutra.begin();
1191 for (; itsrc != srcMeas.measResultListEutra.end(); itsrc++, itdst++)
1192 {
1193 NS_TEST_ASSERT_MSG_EQ(itsrc->physCellId, itdst->physCellId, "Different physCellId!");
1194
1195 NS_TEST_ASSERT_MSG_EQ(itsrc->haveCgiInfo, itdst->haveCgiInfo, "Different haveCgiInfo!");
1196 if (itsrc->haveCgiInfo)
1197 {
1198 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.plmnIdentity,
1199 itdst->cgiInfo.plmnIdentity,
1200 "Different cgiInfo.plmnIdentity!");
1201 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.cellIdentity,
1202 itdst->cgiInfo.cellIdentity,
1203 "Different cgiInfo.cellIdentity!");
1204 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.trackingAreaCode,
1205 itdst->cgiInfo.trackingAreaCode,
1206 "Different cgiInfo.trackingAreaCode!");
1207 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.plmnIdentityList.size(),
1208 itdst->cgiInfo.plmnIdentityList.size(),
1209 "Different cgiInfo.plmnIdentityList.size()!");
1210
1211 if (!itsrc->cgiInfo.plmnIdentityList.empty())
1212 {
1213 auto itsrc2 = itsrc->cgiInfo.plmnIdentityList.begin();
1214 auto itdst2 = itdst->cgiInfo.plmnIdentityList.begin();
1215 for (; itsrc2 != itsrc->cgiInfo.plmnIdentityList.begin(); itsrc2++, itdst2++)
1216 {
1217 NS_TEST_ASSERT_MSG_EQ(*itsrc2, *itdst2, "Different plmnId elements!");
1218 }
1219 }
1220 }
1221
1222 NS_TEST_ASSERT_MSG_EQ(itsrc->haveRsrpResult,
1223 itdst->haveRsrpResult,
1224 "Different haveRsrpResult!");
1225 if (itsrc->haveRsrpResult)
1226 {
1227 NS_TEST_ASSERT_MSG_EQ(itsrc->rsrpResult,
1228 itdst->rsrpResult,
1229 "Different rsrpResult!");
1230 }
1231
1232 NS_TEST_ASSERT_MSG_EQ(itsrc->haveRsrqResult,
1233 itdst->haveRsrqResult,
1234 "Different haveRsrqResult!");
1235 if (itsrc->haveRsrqResult)
1236 {
1237 NS_TEST_ASSERT_MSG_EQ(itsrc->rsrqResult,
1238 itdst->rsrqResult,
1239 "Different rsrqResult!");
1240 }
1241 }
1242 }
1243
1244 packet = nullptr;
1245}
1246
1253{
1254 public:
1256};
1257
1259 : TestSuite("test-asn1-encoding", Type::UNIT)
1260{
1261 NS_LOG_FUNCTION(this);
1262 AddTestCase(new RrcConnectionRequestTestCase(), TestCase::Duration::QUICK);
1263 AddTestCase(new RrcConnectionSetupTestCase(), TestCase::Duration::QUICK);
1264 AddTestCase(new RrcConnectionSetupCompleteTestCase(), TestCase::Duration::QUICK);
1265 AddTestCase(new RrcConnectionReconfigurationCompleteTestCase(), TestCase::Duration::QUICK);
1266 AddTestCase(new RrcConnectionReconfigurationTestCase(), TestCase::Duration::QUICK);
1267 AddTestCase(new HandoverPreparationInfoTestCase(), TestCase::Duration::QUICK);
1268 AddTestCase(new RrcConnectionReestablishmentRequestTestCase(), TestCase::Duration::QUICK);
1269 AddTestCase(new RrcConnectionReestablishmentTestCase(), TestCase::Duration::QUICK);
1270 AddTestCase(new RrcConnectionReestablishmentCompleteTestCase(), TestCase::Duration::QUICK);
1271 AddTestCase(new RrcConnectionRejectTestCase(), TestCase::Duration::QUICK);
1272 AddTestCase(new MeasurementReportTestCase(), TestCase::Duration::QUICK);
1273}
1274
Asn1Encoding Test Suite.
Handover Preparation Info Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Measurement Report Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Reconfiguration Complete Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Reconfiguration Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Reestablishment Complete Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Reestablishment Request Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Reestablishment Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Reject Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Request Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Setup Complete Test Case.
void DoRun() override
Implementation to actually run this TestCase.
Rrc Connection Setup Test Case.
void DoRun() override
Implementation to actually run this TestCase.
This class provides common functions to be inherited by the children TestCases.
LteRrcSap::RadioResourceConfigDedicated CreateRadioResourceConfigDedicated()
Create radio resource config dedicated.
RrcHeaderTestCase(std::string s)
Constructor.
Ptr< Packet > packet
the packet
void DoRun() override=0
Implementation to actually run this TestCase.
void AssertEqualRadioResourceConfigDedicated(LteRrcSap::RadioResourceConfigDedicated rrcd1, LteRrcSap::RadioResourceConfigDedicated rrcd2)
Assert equal radio resource config dedicated.
Contains ASN encoding test utility functions.
static void LogPacketContents(Ptr< Packet > pkt)
Function to log packet contents.
static void LogPacketInfo(T source, std::string s)
Function to log packet info.
static std::string sprintPacketContentsHex(Ptr< Packet > pkt)
Function to convert packet contents in hex format.
static std::string sprintPacketContentsBin(Ptr< Packet > pkt)
Function to convert packet contents in binary format.
This class manages the serialization/deserialization of HandoverPreparationInfo IE.
void SetMessage(LteRrcSap::HandoverPreparationInfo msg)
Receives a HandoverPreparationInfo IE and stores the contents into the class attributes.
LteRrcSap::AsConfig GetAsConfig() const
Getter for m_asConfig.
This class manages the serialization/deserialization of MeasurementReport IE.
LteRrcSap::MeasurementReport GetMessage() const
Returns a MeasurementReport IE from the values in the class attributes.
void SetMessage(LteRrcSap::MeasurementReport msg)
Receives a MeasurementReport IE and stores the contents into the class attributes.
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
Definition: packet.cc:294
void AddHeader(const Header &header)
Add header to this packet.
Definition: packet.cc:268
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
This class manages the serialization/deserialization of RrcConnectionSetupComplete IE.
void SetMessage(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Receives a RrcConnectionReconfigurationCompleted IE and stores the contents into the class attributes...
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
This class manages the serialization/deserialization of RrcConnectionReconfiguration IE.
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated()
Getter for m_radioResourceConfigDedicated.
bool GetHaveRadioResourceConfigDedicated() const
Getter for m_haveRadioResourceConfigDedicated.
bool GetHaveMobilityControlInfo() const
Getter for m_haveMobilityControlInfo.
void SetMessage(LteRrcSap::RrcConnectionReconfiguration msg)
Receives a RrcConnectionReconfiguration IE and stores the contents into the class attributes.
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
bool GetHaveMeasConfig() const
Getter for m_haveMeasConfig.
LteRrcSap::MobilityControlInfo GetMobilityControlInfo()
Getter for m_mobilityControlInfo.
This class manages the serialization/deserialization of RrcConnectionReestablishmentComplete IE.
void SetMessage(LteRrcSap::RrcConnectionReestablishmentComplete msg)
Receives a RrcConnectionReestablishmentComplete IE and stores the contents into the class attributes.
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier attribute.
This class manages the serialization/deserialization of RrcConnectionReestablishment IE.
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier attribute.
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated() const
Getter for m_radioResourceConfigDedicated attribute.
void SetMessage(LteRrcSap::RrcConnectionReestablishment msg)
Receives a RrcConnectionReestablishment IE and stores the contents into the class attributes.
This class manages the serialization/deserialization of RRCConnectionReestablishmentRequest IE.
LteRrcSap::ReestablishmentCause GetReestablishmentCause() const
Getter for m_reestablishmentCause.
void SetMessage(LteRrcSap::RrcConnectionReestablishmentRequest msg)
Receives a RrcConnectionReestablishmentRequest IE and stores the contents into the class attributes.
LteRrcSap::ReestabUeIdentity GetUeIdentity() const
Getter for m_ueIdentity.
This class manages the serialization/deserialization of RrcConnectionReject IE.
LteRrcSap::RrcConnectionReject GetMessage() const
Returns a RrcConnectionReject IE from the values in the class attributes.
void SetMessage(LteRrcSap::RrcConnectionReject msg)
Receives a RrcConnectionReject IE and stores the contents into the class attributes.
This class manages the serialization/deserialization of RrcConnectionRequest IE.
std::bitset< 8 > GetMmec() const
Get MMEC attribute.
void SetMessage(LteRrcSap::RrcConnectionRequest msg)
Receives a RrcConnectionRequest IE and stores the contents into the class attributes.
std::bitset< 32 > GetMtmsi() const
Get M-TMSI attribute.
This class manages the serialization/deserialization of RrcConnectionSetupComplete IE.
void SetMessage(LteRrcSap::RrcConnectionSetupCompleted msg)
Receives a RrcConnectionSetupCompleted IE and stores the contents into the class attributes.
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
This class manages the serialization/deserialization of RrcConnectionSetup IE.
void SetMessage(LteRrcSap::RrcConnectionSetup msg)
Receives a RrcConnectionSetup IE and stores the contents into the class attributes.
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated() const
Getter for m_radioResourceConfigDedicated.
encapsulates test code
Definition: test.h:1061
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:301
A suite of tests to run.
Definition: test.h:1268
Type
Type of test.
Definition: test.h:1275
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:202
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Definition: log.h:268
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Asn1EncodingSuite g_asn1EncodingSuite
Static variable for test initialization.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
Definition: test.h:145
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t transmissionMode
transmission mode
Definition: lte-rrc-sap.h:151
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config
Definition: lte-rrc-sap.h:652
MasterInformationBlock sourceMasterInformationBlock
source master information block
Definition: lte-rrc-sap.h:654
uint16_t sourceUeIdentity
source UE identity
Definition: lte-rrc-sap.h:653
MeasConfig sourceMeasConfig
source measure config
Definition: lte-rrc-sap.h:651
uint32_t sourceDlCarrierFreq
source DL carrier frequency
Definition: lte-rrc-sap.h:659
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1
Definition: lte-rrc-sap.h:656
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2
Definition: lte-rrc-sap.h:658
BlackCellsToAddMod structure.
Definition: lte-rrc-sap.h:329
PhysCellIdRange physCellIdRange
Phy cell ID range.
Definition: lte-rrc-sap.h:331
uint16_t dlBandwidth
DL bandwidth.
Definition: lte-rrc-sap.h:580
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:581
uint32_t dlCarrierFreq
DL carrier frequency.
Definition: lte-rrc-sap.h:573
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:574
CellsToAddMod structure.
Definition: lte-rrc-sap.h:313
int8_t cellIndividualOffset
cell individual offset
Definition: lte-rrc-sap.h:316
uint8_t cellIndex
cell index
Definition: lte-rrc-sap.h:314
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:315
uint32_t cellIdentity
cell identity
Definition: lte-rrc-sap.h:666
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:665
uint16_t trackingAreaCode
tracking area code
Definition: lte-rrc-sap.h:667
DrbToAddMod structure.
Definition: lte-rrc-sap.h:245
uint8_t epsBearerIdentity
EPS bearer identity.
Definition: lte-rrc-sap.h:246
RlcConfig rlcConfig
RLC config.
Definition: lte-rrc-sap.h:248
uint8_t logicalChannelIdentity
logical channel identify
Definition: lte-rrc-sap.h:249
uint8_t drbIdentity
DRB identity.
Definition: lte-rrc-sap.h:247
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:250
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:88
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:89
HandoverPreparationInfo structure.
Definition: lte-rrc-sap.h:942
LogicalChannelConfig structure.
Definition: lte-rrc-sap.h:109
uint16_t bucketSizeDurationMs
bucket size duration ms
Definition: lte-rrc-sap.h:112
uint16_t prioritizedBitRateKbps
prioritized bit rate Kbps
Definition: lte-rrc-sap.h:111
uint8_t logicalChannelGroup
logical channel group
Definition: lte-rrc-sap.h:113
uint16_t systemFrameNumber
system frame number
Definition: lte-rrc-sap.h:624
std::list< uint8_t > measIdToRemoveList
measure ID to remove list
Definition: lte-rrc-sap.h:558
uint8_t sMeasure
S measure.
Definition: lte-rrc-sap.h:565
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list
Definition: lte-rrc-sap.h:555
std::list< uint8_t > reportConfigToRemoveList
report config to remove list
Definition: lte-rrc-sap.h:556
std::list< uint8_t > measObjectToRemoveList
measure object to remove list
Definition: lte-rrc-sap.h:554
SpeedStatePars speedStatePars
speed state parameters
Definition: lte-rrc-sap.h:567
bool haveMeasGapConfig
have measure gap config?
Definition: lte-rrc-sap.h:562
QuantityConfig quantityConfig
quantity config
Definition: lte-rrc-sap.h:561
bool haveSmeasure
have S measure?
Definition: lte-rrc-sap.h:564
bool haveSpeedStatePars
have speed state parameters?
Definition: lte-rrc-sap.h:566
std::list< ReportConfigToAddMod > reportConfigToAddModList
report config to add mod list
Definition: lte-rrc-sap.h:557
MeasGapConfig measGapConfig
measure gap config
Definition: lte-rrc-sap.h:563
std::list< MeasIdToAddMod > measIdToAddModList
measure ID to add mod list
Definition: lte-rrc-sap.h:559
bool haveQuantityConfig
have quantity config?
Definition: lte-rrc-sap.h:560
uint8_t gapOffsetValue
gap offset value
Definition: lte-rrc-sap.h:515
MeasIdToAddMod structure.
Definition: lte-rrc-sap.h:488
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:490
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:491
std::list< uint8_t > cellsToRemoveList
cells to remove list
Definition: lte-rrc-sap.h:342
bool haveCellForWhichToReportCGI
have cell for which to report CGI?
Definition: lte-rrc-sap.h:346
std::list< CellsToAddMod > cellsToAddModList
cells to add mod list
Definition: lte-rrc-sap.h:343
uint16_t allowedMeasBandwidth
allowed measure bandwidth
Definition: lte-rrc-sap.h:338
int8_t offsetFreq
offset frequency
Definition: lte-rrc-sap.h:341
uint8_t neighCellConfig
neighbor cell config
Definition: lte-rrc-sap.h:340
uint16_t cellForWhichToReportCGI
cell for which to report CGI
Definition: lte-rrc-sap.h:347
bool presenceAntennaPort1
antenna port 1 present?
Definition: lte-rrc-sap.h:339
std::list< uint8_t > blackCellsToRemoveList
black cells to remove list
Definition: lte-rrc-sap.h:344
std::list< BlackCellsToAddMod > blackCellsToAddModList
black cells to add mod list
Definition: lte-rrc-sap.h:345
uint32_t carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:337
MeasObjectToAddMod structure.
Definition: lte-rrc-sap.h:474
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:475
MeasObjectEutra measObjectEutra
measure object eutra
Definition: lte-rrc-sap.h:476
MeasResultEutra structure.
Definition: lte-rrc-sap.h:680
uint8_t rsrqResult
RSRQ result.
Definition: lte-rrc-sap.h:687
uint8_t rsrpResult
RSRP result.
Definition: lte-rrc-sap.h:685
bool haveRsrpResult
have RSRP result
Definition: lte-rrc-sap.h:684
bool haveRsrqResult
have RSRQ result?
Definition: lte-rrc-sap.h:686
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:681
bool haveCgiInfo
have CGI info?
Definition: lte-rrc-sap.h:682
uint8_t rsrqResult
the RSRQ result
Definition: lte-rrc-sap.h:675
uint8_t rsrpResult
the RSRP result
Definition: lte-rrc-sap.h:674
MeasResults structure.
Definition: lte-rrc-sap.h:717
uint8_t measId
measure ID
Definition: lte-rrc-sap.h:718
bool haveMeasResultNeighCells
have measure result neighbor cells
Definition: lte-rrc-sap.h:720
std::list< MeasResultEutra > measResultListEutra
measure result list eutra
Definition: lte-rrc-sap.h:721
bool haveMeasResultServFreqList
has measResultServFreqList-r10
Definition: lte-rrc-sap.h:722
MeasResultPCell measResultPCell
measurement result primary cell
Definition: lte-rrc-sap.h:719
MeasurementReport structure.
Definition: lte-rrc-sap.h:948
MeasResults measResults
measure results
Definition: lte-rrc-sap.h:949
RadioResourceConfigCommon radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:600
RachConfigDedicated rachConfigDedicated
RACH config dedicated.
Definition: lte-rrc-sap.h:602
bool haveRachConfigDedicated
Have RACH config dedicated?
Definition: lte-rrc-sap.h:601
uint16_t newUeIdentity
new UE identity
Definition: lte-rrc-sap.h:599
bool haveCarrierBandwidth
have carrier bandwidth?
Definition: lte-rrc-sap.h:597
bool haveCarrierFreq
have carrier frequency?
Definition: lte-rrc-sap.h:595
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth
Definition: lte-rrc-sap.h:598
CarrierFreqEutra carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:596
uint16_t targetPhysCellId
target Phy cell ID
Definition: lte-rrc-sap.h:594
uint8_t nCellChangeHigh
cell change high
Definition: lte-rrc-sap.h:524
uint8_t nCellChangeMedium
cell change medium
Definition: lte-rrc-sap.h:523
uint16_t start
starting cell ID
Definition: lte-rrc-sap.h:322
PhysicalConfigDedicated structure.
Definition: lte-rrc-sap.h:226
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
Definition: lte-rrc-sap.h:233
bool haveAntennaInfoDedicated
have antenna info dedicated?
Definition: lte-rrc-sap.h:230
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
Definition: lte-rrc-sap.h:229
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
Definition: lte-rrc-sap.h:227
bool havePdschConfigDedicated
have PDSCH config dedicated?
Definition: lte-rrc-sap.h:232
AntennaInfoDedicated antennaInfo
antenna info
Definition: lte-rrc-sap.h:231
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:66
uint8_t numberOfRaPreambles
number of RA preambles
Definition: lte-rrc-sap.h:256
uint8_t filterCoefficientRSRQ
filter coefficient RSRQ
Definition: lte-rrc-sap.h:308
uint8_t filterCoefficientRSRP
filter coefficient RSRP
Definition: lte-rrc-sap.h:307
uint8_t raResponseWindowSize
RA response window size.
Definition: lte-rrc-sap.h:263
uint8_t preambleTransMax
preamble transmit maximum
Definition: lte-rrc-sap.h:262
PreambleInfo preambleInfo
preamble info
Definition: lte-rrc-sap.h:276
RaSupervisionInfo raSupervisionInfo
RA supervision info.
Definition: lte-rrc-sap.h:277
uint8_t raPreambleIndex
RA preamble index.
Definition: lte-rrc-sap.h:587
uint8_t raPrachMaskIndex
RA PRACH mask index.
Definition: lte-rrc-sap.h:588
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:284
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:290
RadioResourceConfigDedicated structure.
Definition: lte-rrc-sap.h:296
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated
Definition: lte-rrc-sap.h:301
std::list< uint8_t > drbToReleaseList
DRB to release list.
Definition: lte-rrc-sap.h:299
bool havePhysicalConfigDedicated
have physical config dedicated?
Definition: lte-rrc-sap.h:300
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list.
Definition: lte-rrc-sap.h:298
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list.
Definition: lte-rrc-sap.h:297
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:609
bool reportOnLeave
Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving c...
Definition: lte-rrc-sap.h:399
uint8_t maxReportCells
Maximum number of cells, excluding the serving cell, to be included in the measurement report.
Definition: lte-rrc-sap.h:441
enum ns3::LteRrcSap::ReportConfigEutra::@62 eventId
Event enumeration.
enum ns3::LteRrcSap::ReportConfigEutra::@61 triggerType
Trigger enumeration.
uint8_t hysteresis
Parameter used within the entry and leave condition of an event triggered reporting condition.
Definition: lte-rrc-sap.h:407
@ RSRQ
Reference Signal Received Quality.
Definition: lte-rrc-sap.h:426
@ EVENT_A2
Event A2: Serving becomes worse than absolute threshold.
Definition: lte-rrc-sap.h:385
uint8_t reportAmount
Number of measurement reports applicable, always assumed to be infinite.
Definition: lte-rrc-sap.h:465
enum ns3::LteRrcSap::ReportConfigEutra::@65 reportInterval
Report interval enumeration.
ThresholdEutra threshold2
Threshold for event A5.
Definition: lte-rrc-sap.h:394
enum ns3::LteRrcSap::ReportConfigEutra::@63 triggerQuantity
Trigger type enumeration.
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
Definition: lte-rrc-sap.h:393
enum ns3::LteRrcSap::ReportConfigEutra::@64 reportQuantity
Report type enumeration.
int8_t a3Offset
Offset value for Event A3.
Definition: lte-rrc-sap.h:403
uint16_t timeToTrigger
Time during which specific criteria for the event needs to be met in order to trigger a measurement r...
Definition: lte-rrc-sap.h:411
ReportConfigToAddMod structure.
Definition: lte-rrc-sap.h:481
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:482
ReportConfigEutra reportConfigEutra
report config eutra
Definition: lte-rrc-sap.h:483
RlcConfig structure.
Definition: lte-rrc-sap.h:94
Direction choice
direction choice
Definition: lte-rrc-sap.h:104
RrcConnectionReconfigurationCompleted structure.
Definition: lte-rrc-sap.h:898
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:899
RrcConnectionReconfiguration structure.
Definition: lte-rrc-sap.h:881
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:882
bool haveMobilityControlInfo
have mobility control info
Definition: lte-rrc-sap.h:885
bool haveRadioResourceConfigDedicated
have radio resource config dedicated
Definition: lte-rrc-sap.h:887
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:889
bool haveNonCriticalExtension
have critical extension?
Definition: lte-rrc-sap.h:890
MobilityControlInfo mobilityControlInfo
mobility control info
Definition: lte-rrc-sap.h:886
RrcConnectionReestablishmentComplete structure.
Definition: lte-rrc-sap.h:919
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:920
RrcConnectionReestablishment structure.
Definition: lte-rrc-sap.h:911
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:914
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:912
RrcConnectionReestablishmentRequest structure.
Definition: lte-rrc-sap.h:904
ReestablishmentCause reestablishmentCause
reestablishment cause
Definition: lte-rrc-sap.h:906
RrcConnectionReject structure.
Definition: lte-rrc-sap.h:936
RrcConnectionRequest structure.
Definition: lte-rrc-sap.h:730
RrcConnectionSetupCompleted structure.
Definition: lte-rrc-sap.h:744
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:745
RrcConnectionSetup structure.
Definition: lte-rrc-sap.h:736
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:737
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:739
uint16_t srsConfigIndex
SRS config index.
Definition: lte-rrc-sap.h:145
SpeedStateScaleFactors timeToTriggerSf
time to trigger scale factors
Definition: lte-rrc-sap.h:548
MobilityStateParameters mobilityStateParameters
mobility state parameters
Definition: lte-rrc-sap.h:547
uint8_t sfHigh
scale factor high
Definition: lte-rrc-sap.h:532
uint8_t sfMedium
scale factor medium
Definition: lte-rrc-sap.h:531
SrbToAddMod structure.
Definition: lte-rrc-sap.h:238
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:240
uint8_t srbIdentity
SB identity.
Definition: lte-rrc-sap.h:239
CellAccessRelatedInfo cellAccessRelatedInfo
cell access related info
Definition: lte-rrc-sap.h:630
RadioResourceConfigCommonSib radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:637
@ THRESHOLD_RSRP
RSRP is used for the threshold.
Definition: lte-rrc-sap.h:364
@ THRESHOLD_RSRQ
RSRQ is used for the threshold.
Definition: lte-rrc-sap.h:365
enum ns3::LteRrcSap::ThresholdEutra::@60 choice
Threshold enumeration.
uint8_t range
Value range used in RSRP/RSRQ threshold.
Definition: lte-rrc-sap.h:368