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 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Lluis Parcerisa <lparcerisa@cttc.cat>
7 */
8
9#include "ns3/boolean.h"
10#include "ns3/double.h"
11#include "ns3/enum.h"
12#include "ns3/log.h"
13#include "ns3/lte-rrc-header.h"
14#include "ns3/lte-rrc-sap.h"
15#include "ns3/packet.h"
16#include "ns3/ptr.h"
17#include "ns3/string.h"
18#include "ns3/test.h"
19
20#include <iomanip>
21#include <vector>
22
23using namespace ns3;
24
25NS_LOG_COMPONENT_DEFINE("Asn1EncodingTest");
26
27/**
28 * @ingroup lte-test
29 *
30 * @brief Contains ASN encoding test utility functions.
31 */
33{
34 public:
35 /**
36 * Function to convert packet contents in hex format
37 * @param pkt the packet
38 * @returns the text string
39 */
40 static std::string sprintPacketContentsHex(Ptr<Packet> pkt)
41 {
42 std::vector<uint8_t> buffer(pkt->GetSize());
43 std::ostringstream oss(std::ostringstream::out);
44 pkt->CopyData(buffer.data(), buffer.size());
45 for (auto b : buffer)
46 {
47 oss << std::setfill('0') << std::setw(2) << std::hex << +b << " ";
48 }
49 return std::string(oss.str() + "\n");
50 }
51
52 /**
53 * Function to convert packet contents in binary format
54 * @param pkt the packet
55 * @returns the text string
56 */
57 static std::string sprintPacketContentsBin(Ptr<Packet> pkt)
58 {
59 std::vector<uint8_t> buffer(pkt->GetSize());
60 std::ostringstream oss(std::ostringstream::out);
61 pkt->CopyData(buffer.data(), buffer.size());
62 for (auto b : buffer)
63 {
64 oss << (std::bitset<8>(b));
65 }
66 return std::string(oss.str() + "\n");
67 }
68
69 /**
70 * Function to log packet contents
71 * @param pkt the packet
72 */
74 {
75 NS_LOG_DEBUG("---- SERIALIZED PACKET CONTENTS (HEX): -------");
78 }
79
80 /**
81 * Function to log packet info
82 * @param source T
83 * @param s the string
84 */
85 template <class T>
86 static void LogPacketInfo(T source, std::string s)
87 {
88 NS_LOG_DEBUG("--------- " << s.data() << " INFO: -------");
89 std::ostringstream oss(std::ostringstream::out);
90 source.Print(oss);
91 NS_LOG_DEBUG(oss.str());
92 }
93};
94
95// --------------------------- CLASS RrcHeaderTestCase -----------------------------
96/**
97 * @ingroup lte-test
98 *
99 * @brief This class provides common functions to be inherited
100 * by the children TestCases
101 */
103{
104 public:
105 /**
106 * Constructor
107 * @param s the reference name
108 */
109 RrcHeaderTestCase(std::string s);
110 void DoRun() override = 0;
111 /**
112 * @brief Create radio resource config dedicated
113 * @returns LteRrcSap::RadioResourceConfigDedicated
114 */
116 /**
117 * @brief Assert equal radio resource config dedicated
118 * @param rrcd1 LteRrcSap::RadioResourceConfigDedicated # 1
119 * @param rrcd2 LteRrcSap::RadioResourceConfigDedicated # 2
120 */
123
124 protected:
125 Ptr<Packet> packet; ///< the packet
126};
127
129 : TestCase(s)
130{
131}
132
135{
137
138 rrd.drbToReleaseList = std::list<uint8_t>(4, 2);
139
140 LteRrcSap::SrbToAddMod srbToAddMod;
141 srbToAddMod.srbIdentity = 2;
142
143 LteRrcSap::LogicalChannelConfig logicalChannelConfig;
144 logicalChannelConfig.priority = 9;
145 logicalChannelConfig.prioritizedBitRateKbps = 128;
146 logicalChannelConfig.bucketSizeDurationMs = 100;
147 logicalChannelConfig.logicalChannelGroup = 3;
148 srbToAddMod.logicalChannelConfig = logicalChannelConfig;
149
150 rrd.srbToAddModList.insert(rrd.srbToAddModList.begin(), srbToAddMod);
151
152 LteRrcSap::DrbToAddMod drbToAddMod;
153 drbToAddMod.epsBearerIdentity = 1;
154 drbToAddMod.drbIdentity = 1;
155 drbToAddMod.logicalChannelIdentity = 5;
156 LteRrcSap::RlcConfig rlcConfig;
158 drbToAddMod.rlcConfig = rlcConfig;
159
160 LteRrcSap::LogicalChannelConfig logicalChannelConfig2;
161 logicalChannelConfig2.priority = 7;
162 logicalChannelConfig2.prioritizedBitRateKbps = 256;
163 logicalChannelConfig2.bucketSizeDurationMs = 50;
164 logicalChannelConfig2.logicalChannelGroup = 2;
165 drbToAddMod.logicalChannelConfig = logicalChannelConfig2;
166
167 rrd.drbToAddModList.insert(rrd.drbToAddModList.begin(), drbToAddMod);
168
170 LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated;
171 physicalConfigDedicated.haveSoundingRsUlConfigDedicated = true;
172 physicalConfigDedicated.soundingRsUlConfigDedicated.type =
174 physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth = 2;
175 physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = 12;
176
177 physicalConfigDedicated.haveAntennaInfoDedicated = true;
178 physicalConfigDedicated.antennaInfo.transmissionMode = 2;
179
180 physicalConfigDedicated.havePdschConfigDedicated = true;
182
183 rrd.physicalConfigDedicated = physicalConfigDedicated;
184
185 return rrd;
186}
187
188void
192{
194 rrcd2.srbToAddModList.size(),
195 "SrbToAddModList different sizes");
196
197 std::list<LteRrcSap::SrbToAddMod> srcSrbToAddModList = rrcd1.srbToAddModList;
198 auto it1 = srcSrbToAddModList.begin();
199 std::list<LteRrcSap::SrbToAddMod> dstSrbToAddModList = rrcd2.srbToAddModList;
200 auto it2 = dstSrbToAddModList.begin();
201
202 for (; it1 != srcSrbToAddModList.end(); it1++, it2++)
203 {
204 NS_TEST_ASSERT_MSG_EQ(it1->srbIdentity, it2->srbIdentity, "srbIdentity");
205 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.priority,
206 it2->logicalChannelConfig.priority,
207 "logicalChannelConfig.priority");
208 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.prioritizedBitRateKbps,
209 it2->logicalChannelConfig.prioritizedBitRateKbps,
210 "logicalChannelConfig.prioritizedBitRateKbps");
211 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.bucketSizeDurationMs,
212 it2->logicalChannelConfig.bucketSizeDurationMs,
213 "logicalChannelConfig.bucketSizeDurationMs");
214 NS_TEST_ASSERT_MSG_EQ(it1->logicalChannelConfig.logicalChannelGroup,
215 it2->logicalChannelConfig.logicalChannelGroup,
216 "logicalChannelConfig.logicalChannelGroup");
217 }
218
220 rrcd2.drbToAddModList.size(),
221 "DrbToAddModList different sizes");
222
223 std::list<LteRrcSap::DrbToAddMod> srcDrbToAddModList = rrcd1.drbToAddModList;
224 auto it3 = srcDrbToAddModList.begin();
225 std::list<LteRrcSap::DrbToAddMod> dstDrbToAddModList = rrcd2.drbToAddModList;
226 auto it4 = dstDrbToAddModList.begin();
227
228 for (; it3 != srcDrbToAddModList.end(); it3++, it4++)
229 {
230 NS_TEST_ASSERT_MSG_EQ(it3->epsBearerIdentity, it4->epsBearerIdentity, "epsBearerIdentity");
231 NS_TEST_ASSERT_MSG_EQ(it3->drbIdentity, it4->drbIdentity, "drbIdentity");
232 NS_TEST_ASSERT_MSG_EQ(it3->rlcConfig.choice, it4->rlcConfig.choice, "rlcConfig.choice");
233 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelIdentity,
234 it4->logicalChannelIdentity,
235 "logicalChannelIdentity");
236 NS_TEST_ASSERT_MSG_EQ(it3->epsBearerIdentity, it4->epsBearerIdentity, "epsBearerIdentity");
237
238 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.priority,
239 it4->logicalChannelConfig.priority,
240 "logicalChannelConfig.priority");
241 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.prioritizedBitRateKbps,
242 it4->logicalChannelConfig.prioritizedBitRateKbps,
243 "logicalChannelConfig.prioritizedBitRateKbps");
244 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.bucketSizeDurationMs,
245 it4->logicalChannelConfig.bucketSizeDurationMs,
246 "logicalChannelConfig.bucketSizeDurationMs");
247 NS_TEST_ASSERT_MSG_EQ(it3->logicalChannelConfig.logicalChannelGroup,
248 it4->logicalChannelConfig.logicalChannelGroup,
249 "logicalChannelConfig.logicalChannelGroup");
250 }
251
253 rrcd2.drbToReleaseList.size(),
254 "DrbToReleaseList different sizes");
255
256 std::list<uint8_t> srcDrbToReleaseList = rrcd1.drbToReleaseList;
257 std::list<uint8_t> dstDrbToReleaseList = rrcd2.drbToReleaseList;
258 auto it5 = srcDrbToReleaseList.begin();
259 auto it6 = dstDrbToReleaseList.begin();
260
261 for (; it5 != srcDrbToReleaseList.end(); it5++, it6++)
262 {
263 NS_TEST_ASSERT_MSG_EQ(*it5, *it6, "element != in DrbToReleaseList");
264 }
265
268 "HavePhysicalConfigDedicated");
269
271 {
274 "haveSoundingRsUlConfigDedicated");
275
278 "soundingRsUlConfigDedicated.type");
282 "soundingRsUlConfigDedicated.srsBandwidth");
283
287 "soundingRsUlConfigDedicated.srsConfigIndex");
288
291 "haveAntennaInfoDedicated");
292
294 {
297 "antennaInfo.transmissionMode");
298 }
299
302 "havePdschConfigDedicated");
303
305 {
308 "pdschConfigDedicated.pa");
309 }
310 }
311}
312
313/**
314 * @ingroup lte-test
315 *
316 * @brief Rrc Connection Request Test Case
317 */
319{
320 public:
322 void DoRun() override;
323};
324
329
330void
332{
334 NS_LOG_DEBUG("============= RrcConnectionRequestTestCase ===========");
335
337 msg.ueIdentity = 0x83fecafecaULL;
338
340 source.SetMessage(msg);
341
342 // Log source info
344
345 // Add header
346 packet->AddHeader(source);
347
348 // Log serialized packet contents
350
351 // Remove header
352 RrcConnectionRequestHeader destination;
353 packet->RemoveHeader(destination);
354
355 // Log destination info
357
358 // Check that the destination and source headers contain the same values
359 NS_TEST_ASSERT_MSG_EQ(source.GetMmec(), destination.GetMmec(), "Different m_mmec!");
360 NS_TEST_ASSERT_MSG_EQ(source.GetMtmsi(), destination.GetMtmsi(), "Different m_mTmsi!");
361
362 packet = nullptr;
363}
364
365/**
366 * @ingroup lte-test
367 *
368 * @brief Rrc Connection Setup Test Case
369 */
371{
372 public:
374 void DoRun() override;
375};
376
378 : RrcHeaderTestCase("Testing RrcConnectionSetupTestCase")
379{
380}
381
382void
384{
386 NS_LOG_DEBUG("============= RrcConnectionSetupTestCase ===========");
387
391
393 source.SetMessage(msg);
394
395 // Log source info
397
398 // Add header
399 packet->AddHeader(source);
400
401 // Log serialized packet contents
403
404 // remove header
405 RrcConnectionSetupHeader destination;
406 packet->RemoveHeader(destination);
407
408 // Log destination info
409 TestUtils::LogPacketInfo<RrcConnectionSetupHeader>(destination, "DESTINATION");
410
411 // Check that the destination and source headers contain the same values
413 destination.GetRrcTransactionIdentifier(),
414 "RrcTransactionIdentifier");
415
417 destination.GetRadioResourceConfigDedicated());
418
419 packet = nullptr;
420}
421
422/**
423 * @ingroup lte-test
424 *
425 * @brief Rrc Connection Setup Complete Test Case
426 */
428{
429 public:
431 void DoRun() override;
432};
433
435 : RrcHeaderTestCase("Testing RrcConnectionSetupCompleteTestCase")
436{
437}
438
439void
441{
443 NS_LOG_DEBUG("============= RrcConnectionSetupCompleteTestCase ===========");
444
447
449 source.SetMessage(msg);
450
451 // Log source info
453
454 // Add header
455 packet->AddHeader(source);
456
457 // Log serialized packet contents
459
460 // Remove header
462 packet->RemoveHeader(destination);
463
464 // Log destination info
466
467 // Check that the destination and source headers contain the same values
469 destination.GetRrcTransactionIdentifier(),
470 "RrcTransactionIdentifier");
471
472 packet = nullptr;
473}
474
475/**
476 * @ingroup lte-test
477 *
478 * @brief Rrc Connection Reconfiguration Complete Test Case
479 */
486
488 : RrcHeaderTestCase("Testing RrcConnectionReconfigurationCompleteTestCase")
489{
490}
491
492void
494{
496 NS_LOG_DEBUG("============= RrcConnectionReconfigurationCompleteTestCase ===========");
497
500
502 source.SetMessage(msg);
503
504 // Log source info
506
507 // Add header
508 packet->AddHeader(source);
509
510 // Log serialized packet contents
512
513 // remove header
515 packet->RemoveHeader(destination);
516
517 // Log destination info
519 "DESTINATION");
520
521 // Check that the destination and source headers contain the same values
523 destination.GetRrcTransactionIdentifier(),
524 "RrcTransactionIdentifier");
525
526 packet = nullptr;
527}
528
529/**
530 * @ingroup lte-test
531 *
532 * @brief Rrc Connection Reconfiguration Test Case
533 */
535{
536 public:
538 void DoRun() override;
539};
540
542 : RrcHeaderTestCase("Testing RrcConnectionReconfigurationTestCase")
543{
544}
545
546void
548{
550 NS_LOG_DEBUG("============= RrcConnectionReconfigurationTestCase ===========");
551
554
555 msg.haveMeasConfig = true;
556
557 msg.measConfig.haveQuantityConfig = true;
558 msg.measConfig.quantityConfig.filterCoefficientRSRP = 8;
559 msg.measConfig.quantityConfig.filterCoefficientRSRQ = 7;
560
561 msg.measConfig.haveMeasGapConfig = true;
562 msg.measConfig.measGapConfig.type = LteRrcSap::MeasGapConfig::SETUP;
563 msg.measConfig.measGapConfig.gapOffsetChoice = LteRrcSap::MeasGapConfig::GP0;
564 msg.measConfig.measGapConfig.gapOffsetValue = 21;
565
566 msg.measConfig.haveSmeasure = true;
567 msg.measConfig.sMeasure = 57;
568
569 msg.measConfig.haveSpeedStatePars = true;
570 msg.measConfig.speedStatePars.type = LteRrcSap::SpeedStatePars::SETUP;
571 msg.measConfig.speedStatePars.mobilityStateParameters.tEvaluation = 240;
572 msg.measConfig.speedStatePars.mobilityStateParameters.tHystNormal = 60;
573 msg.measConfig.speedStatePars.mobilityStateParameters.nCellChangeMedium = 5;
574 msg.measConfig.speedStatePars.mobilityStateParameters.nCellChangeHigh = 13;
575 msg.measConfig.speedStatePars.timeToTriggerSf.sfMedium = 25;
576 msg.measConfig.speedStatePars.timeToTriggerSf.sfHigh = 75;
577
578 msg.measConfig.measObjectToRemoveList.push_back(23);
579 msg.measConfig.measObjectToRemoveList.push_back(13);
580
581 msg.measConfig.reportConfigToRemoveList.push_back(7);
582 msg.measConfig.reportConfigToRemoveList.push_back(16);
583
584 msg.measConfig.measIdToRemoveList.push_back(4);
585 msg.measConfig.measIdToRemoveList.push_back(18);
586
587 // Set measObjectToAddModList
588 LteRrcSap::MeasObjectToAddMod measObjectToAddMod;
589 measObjectToAddMod.measObjectId = 3;
590 measObjectToAddMod.measObjectEutra.carrierFreq = 21;
591 measObjectToAddMod.measObjectEutra.allowedMeasBandwidth = 15;
592 measObjectToAddMod.measObjectEutra.presenceAntennaPort1 = true;
593 measObjectToAddMod.measObjectEutra.neighCellConfig = 3;
594 measObjectToAddMod.measObjectEutra.offsetFreq = -12;
595 measObjectToAddMod.measObjectEutra.cellsToRemoveList.push_back(5);
596 measObjectToAddMod.measObjectEutra.cellsToRemoveList.push_back(2);
597 measObjectToAddMod.measObjectEutra.blackCellsToRemoveList.push_back(1);
598 measObjectToAddMod.measObjectEutra.haveCellForWhichToReportCGI = true;
599 measObjectToAddMod.measObjectEutra.cellForWhichToReportCGI = 250;
600 LteRrcSap::CellsToAddMod cellsToAddMod;
601 cellsToAddMod.cellIndex = 20;
602 cellsToAddMod.physCellId = 14;
603 cellsToAddMod.cellIndividualOffset = 22;
604 measObjectToAddMod.measObjectEutra.cellsToAddModList.push_back(cellsToAddMod);
605 LteRrcSap::BlackCellsToAddMod blackCellsToAddMod;
606 blackCellsToAddMod.cellIndex = 18;
607 blackCellsToAddMod.physCellIdRange.start = 128;
608 blackCellsToAddMod.physCellIdRange.haveRange = true;
609 blackCellsToAddMod.physCellIdRange.range = 128;
610 measObjectToAddMod.measObjectEutra.blackCellsToAddModList.push_back(blackCellsToAddMod);
611 msg.measConfig.measObjectToAddModList.push_back(measObjectToAddMod);
612
613 // Set reportConfigToAddModList
614 LteRrcSap::ReportConfigToAddMod reportConfigToAddMod;
615 reportConfigToAddMod.reportConfigId = 22;
618 reportConfigToAddMod.reportConfigEutra.threshold1.choice =
620 reportConfigToAddMod.reportConfigEutra.threshold1.range = 15;
621 reportConfigToAddMod.reportConfigEutra.threshold2.choice =
623 reportConfigToAddMod.reportConfigEutra.threshold2.range = 10;
624 reportConfigToAddMod.reportConfigEutra.reportOnLeave = true;
625 reportConfigToAddMod.reportConfigEutra.a3Offset = -25;
626 reportConfigToAddMod.reportConfigEutra.hysteresis = 18;
627 reportConfigToAddMod.reportConfigEutra.timeToTrigger = 100;
628 reportConfigToAddMod.reportConfigEutra.purpose =
631 reportConfigToAddMod.reportConfigEutra.reportQuantity =
633 reportConfigToAddMod.reportConfigEutra.maxReportCells = 5;
635 reportConfigToAddMod.reportConfigEutra.reportAmount = 16;
636 msg.measConfig.reportConfigToAddModList.push_back(reportConfigToAddMod);
637
638 // Set measIdToAddModList
639 LteRrcSap::MeasIdToAddMod measIdToAddMod;
640 LteRrcSap::MeasIdToAddMod measIdToAddMod2;
641 measIdToAddMod.measId = 7;
642 measIdToAddMod.measObjectId = 6;
643 measIdToAddMod.reportConfigId = 5;
644 measIdToAddMod2.measId = 4;
645 measIdToAddMod2.measObjectId = 8;
646 measIdToAddMod2.reportConfigId = 12;
647 msg.measConfig.measIdToAddModList.push_back(measIdToAddMod);
648 msg.measConfig.measIdToAddModList.push_back(measIdToAddMod2);
649
650 msg.haveMobilityControlInfo = true;
651 msg.mobilityControlInfo.targetPhysCellId = 4;
652 msg.mobilityControlInfo.haveCarrierFreq = true;
653 msg.mobilityControlInfo.carrierFreq.dlCarrierFreq = 3;
654 msg.mobilityControlInfo.carrierFreq.ulCarrierFreq = 5;
655 msg.mobilityControlInfo.haveCarrierBandwidth = true;
656 msg.mobilityControlInfo.carrierBandwidth.dlBandwidth = 50;
657 msg.mobilityControlInfo.carrierBandwidth.ulBandwidth = 25;
658 msg.mobilityControlInfo.newUeIdentity = 11;
659 msg.mobilityControlInfo.haveRachConfigDedicated = true;
660 msg.mobilityControlInfo.rachConfigDedicated.raPreambleIndex = 2;
661 msg.mobilityControlInfo.rachConfigDedicated.raPrachMaskIndex = 2;
662 msg.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.preambleInfo
663 .numberOfRaPreambles = 4;
664 msg.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo
665 .preambleTransMax = 3;
666 msg.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo
667 .raResponseWindowSize = 6;
668
669 msg.haveRadioResourceConfigDedicated = true;
670
671 msg.radioResourceConfigDedicated = CreateRadioResourceConfigDedicated();
672
673 msg.haveNonCriticalExtension = false; // Danilo
675 source.SetMessage(msg);
676
677 // Log source info
679
680 // Add header
681 packet->AddHeader(source);
682
683 // Log serialized packet contents
685
686 // remove header
688 packet->RemoveHeader(destination);
689
690 // Log destination info
692
693 // Check that the destination and source headers contain the same values
695 destination.GetRrcTransactionIdentifier(),
696 "RrcTransactionIdentifier");
698 destination.GetHaveMeasConfig(),
699 "GetHaveMeasConfig");
701 destination.GetHaveMobilityControlInfo(),
702 "GetHaveMobilityControlInfo");
705 "GetHaveRadioResourceConfigDedicated");
706
707 if (source.GetHaveMobilityControlInfo())
708 {
711 "GetMobilityControlInfo().targetPhysCellId");
714 "GetMobilityControlInfo().haveCarrierFreq");
717 "GetMobilityControlInfo().haveCarrierBandwidth");
720 "GetMobilityControlInfo().newUeIdentity");
723 "GetMobilityControlInfo().haveRachConfigDedicated");
724
726 {
729 "GetMobilityControlInfo().carrierFreq.dlCarrierFreq");
732 "GetMobilityControlInfo().carrierFreq.ulCarrierFreq");
733 }
734
736 {
739 "GetMobilityControlInfo().carrierBandwidth.dlBandwidth");
742 "GetMobilityControlInfo().carrierBandwidth.ulBandwidth");
743 }
744
746 {
750 "GetMobilityControlInfo().rachConfigDedicated.raPreambleIndex");
754 "GetMobilityControlInfo().rachConfigDedicated.raPrachMaskIndex");
755 }
756 }
757
759 {
761 destination.GetRadioResourceConfigDedicated());
762 }
763
764 packet = nullptr;
765}
766
767/**
768 * @ingroup lte-test
769 *
770 * @brief Handover Preparation Info Test Case
771 */
773{
774 public:
776 void DoRun() override;
777};
778
780 : RrcHeaderTestCase("Testing HandoverPreparationInfoTestCase")
781{
782}
783
784void
786{
788 NS_LOG_DEBUG("============= HandoverPreparationInfoTestCase ===========");
789
792 msg.asConfig.sourceUeIdentity = 11;
796
801 .plmnIdentity = 123;
802
811
816
818 source.SetMessage(msg);
819
820 // Log source info
822
823 // Add header
824 packet->AddHeader(source);
825
826 // Log serialized packet contents
828
829 // remove header
831 packet->RemoveHeader(destination);
832
833 // Log destination info
835
836 // Check that the destination and source headers contain the same values
840 destination.GetAsConfig().sourceUeIdentity,
841 "sourceUeIdentity");
844 "dlBandwidth");
847 "systemFrameNumber");
849 source.GetAsConfig()
851 destination.GetAsConfig()
853 "plmnIdentity");
856 destination.GetAsConfig()
858 "csgIndication");
861 destination.GetAsConfig()
863 "cellIdentity");
866 destination.GetAsConfig()
868 "csgIdentity");
870 destination.GetAsConfig().sourceDlCarrierFreq,
871 "sourceDlCarrierFreq");
872
873 packet = nullptr;
874}
875
876/**
877 * @ingroup lte-test
878 *
879 * @brief Rrc Connection Reestablishment Request Test Case
880 */
887
889 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentRequestTestCase")
890{
891}
892
893void
895{
897 NS_LOG_DEBUG("============= RrcConnectionReestablishmentRequestTestCase ===========");
898
900 msg.ueIdentity.cRnti = 12;
901 msg.ueIdentity.physCellId = 21;
903
905 source.SetMessage(msg);
906
907 // Log source info
909
910 // Add header
911 packet->AddHeader(source);
912
913 // Log serialized packet contents
915
916 // remove header
918 packet->RemoveHeader(destination);
919
920 // Log destination info
922
923 // Check that the destination and source headers contain the same values
924 NS_TEST_ASSERT_MSG_EQ(source.GetUeIdentity().cRnti, destination.GetUeIdentity().cRnti, "cRnti");
926 destination.GetUeIdentity().physCellId,
927 "physCellId");
929 destination.GetReestablishmentCause(),
930 "ReestablishmentCause");
931
932 packet = nullptr;
933}
934
935/**
936 * @ingroup lte-test
937 *
938 * @brief Rrc Connection Reestablishment Test Case
939 */
941{
942 public:
944 void DoRun() override;
945};
946
948 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentTestCase")
949{
950}
951
952void
954{
956 NS_LOG_DEBUG("============= RrcConnectionReestablishmentTestCase ===========");
957
961
963 source.SetMessage(msg);
964
965 // Log source info
967
968 // Add header
969 packet->AddHeader(source);
970
971 // Log serialized packet contents
973
974 // remove header
976 packet->RemoveHeader(destination);
977
978 // Log destination info
980
981 // Check that the destination and source headers contain the same values
983 destination.GetRrcTransactionIdentifier(),
984 "rrcTransactionIdentifier");
986 destination.GetRadioResourceConfigDedicated());
987
988 packet = nullptr;
989}
990
991/**
992 * @ingroup lte-test
993 *
994 * @brief Rrc Connection Reestablishment Complete Test Case
995 */
1002
1004 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentCompleteTestCase")
1005{
1006}
1007
1008void
1010{
1012 NS_LOG_DEBUG("============= RrcConnectionReestablishmentCompleteTestCase ===========");
1013
1016
1018 source.SetMessage(msg);
1019
1020 // Log source info
1022
1023 // Add header
1024 packet->AddHeader(source);
1025
1026 // Log serialized packet contents
1028
1029 // remove header
1031 packet->RemoveHeader(destination);
1032
1033 // Log destination info
1035 "DESTINATION");
1036
1037 // Check that the destination and source headers contain the same values
1039 destination.GetRrcTransactionIdentifier(),
1040 "rrcTransactionIdentifier");
1041
1042 packet = nullptr;
1043}
1044
1045/**
1046 * @ingroup lte-test
1047 *
1048 * @brief Rrc Connection Reject Test Case
1049 */
1051{
1052 public:
1054 void DoRun() override;
1055};
1056
1058 : RrcHeaderTestCase("Testing RrcConnectionRejectTestCase")
1059{
1060}
1061
1062void
1064{
1066 NS_LOG_DEBUG("============= RrcConnectionRejectTestCase ===========");
1067
1069 msg.waitTime = 2;
1070
1072 source.SetMessage(msg);
1073
1074 // Log source info
1076
1077 // Add header
1078 packet->AddHeader(source);
1079
1080 // Log serialized packet contents
1082
1083 // remove header
1084 RrcConnectionRejectHeader destination;
1085 packet->RemoveHeader(destination);
1086
1087 // Log destination info
1088 TestUtils::LogPacketInfo<RrcConnectionRejectHeader>(destination, "DESTINATION");
1089
1090 // Check that the destination and source headers contain the same values
1092 destination.GetMessage().waitTime,
1093 "Different waitTime!");
1094
1095 packet = nullptr;
1096}
1097
1098/**
1099 * @ingroup lte-test
1100 *
1101 * @brief Measurement Report Test Case
1102 */
1104{
1105 public:
1107 void DoRun() override;
1108};
1109
1111 : RrcHeaderTestCase("Testing MeasurementReportTestCase")
1112{
1113}
1114
1115void
1117{
1119 NS_LOG_DEBUG("============= MeasurementReportTestCase ===========");
1120
1122 msg.measResults.measId = 5;
1126
1128 mResEutra.physCellId = 9;
1129 mResEutra.haveRsrpResult = true;
1130 mResEutra.rsrpResult = 33;
1131 mResEutra.haveRsrqResult = true;
1132 mResEutra.rsrqResult = 22;
1133 mResEutra.haveCgiInfo = true;
1134 mResEutra.cgiInfo.plmnIdentity = 7;
1135 mResEutra.cgiInfo.cellIdentity = 6;
1136 mResEutra.cgiInfo.trackingAreaCode = 5;
1137 msg.measResults.measResultListEutra.push_back(mResEutra);
1138
1140
1142 source.SetMessage(msg);
1143
1144 // Log source info
1146
1147 // Add header
1148 packet->AddHeader(source);
1149
1150 // Log serialized packet contents
1152
1153 // remove header
1154 MeasurementReportHeader destination;
1155 packet->RemoveHeader(destination);
1156
1157 // Log destination info
1158 TestUtils::LogPacketInfo<MeasurementReportHeader>(destination, "DESTINATION");
1159
1160 // Check that the destination and source headers contain the same values
1162 LteRrcSap::MeasResults dstMeas = destination.GetMessage().measResults;
1163
1164 NS_TEST_ASSERT_MSG_EQ(srcMeas.measId, dstMeas.measId, "Different measId!");
1167 "Different rsrpResult!");
1170 "Different rsrqResult!");
1173 "Different haveMeasResultNeighCells!");
1174
1175 if (srcMeas.haveMeasResultNeighCells)
1176 {
1177 auto itsrc = srcMeas.measResultListEutra.begin();
1178 auto itdst = dstMeas.measResultListEutra.begin();
1179 for (; itsrc != srcMeas.measResultListEutra.end(); itsrc++, itdst++)
1180 {
1181 NS_TEST_ASSERT_MSG_EQ(itsrc->physCellId, itdst->physCellId, "Different physCellId!");
1182
1183 NS_TEST_ASSERT_MSG_EQ(itsrc->haveCgiInfo, itdst->haveCgiInfo, "Different haveCgiInfo!");
1184 if (itsrc->haveCgiInfo)
1185 {
1186 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.plmnIdentity,
1187 itdst->cgiInfo.plmnIdentity,
1188 "Different cgiInfo.plmnIdentity!");
1189 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.cellIdentity,
1190 itdst->cgiInfo.cellIdentity,
1191 "Different cgiInfo.cellIdentity!");
1192 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.trackingAreaCode,
1193 itdst->cgiInfo.trackingAreaCode,
1194 "Different cgiInfo.trackingAreaCode!");
1195 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.plmnIdentityList.size(),
1196 itdst->cgiInfo.plmnIdentityList.size(),
1197 "Different cgiInfo.plmnIdentityList.size()!");
1198
1199 if (!itsrc->cgiInfo.plmnIdentityList.empty())
1200 {
1201 auto itsrc2 = itsrc->cgiInfo.plmnIdentityList.begin();
1202 auto itdst2 = itdst->cgiInfo.plmnIdentityList.begin();
1203 for (; itsrc2 != itsrc->cgiInfo.plmnIdentityList.begin(); itsrc2++, itdst2++)
1204 {
1205 NS_TEST_ASSERT_MSG_EQ(*itsrc2, *itdst2, "Different plmnId elements!");
1206 }
1207 }
1208 }
1209
1210 NS_TEST_ASSERT_MSG_EQ(itsrc->haveRsrpResult,
1211 itdst->haveRsrpResult,
1212 "Different haveRsrpResult!");
1213 if (itsrc->haveRsrpResult)
1214 {
1215 NS_TEST_ASSERT_MSG_EQ(itsrc->rsrpResult,
1216 itdst->rsrpResult,
1217 "Different rsrpResult!");
1218 }
1219
1220 NS_TEST_ASSERT_MSG_EQ(itsrc->haveRsrqResult,
1221 itdst->haveRsrqResult,
1222 "Different haveRsrqResult!");
1223 if (itsrc->haveRsrqResult)
1224 {
1225 NS_TEST_ASSERT_MSG_EQ(itsrc->rsrqResult,
1226 itdst->rsrqResult,
1227 "Different rsrqResult!");
1228 }
1229 }
1230 }
1231
1232 packet = nullptr;
1233}
1234
1235/**
1236 * @ingroup lte-test
1237 *
1238 * @brief Asn1Encoding Test Suite
1239 */
1241{
1242 public:
1244};
1245
1247 : TestSuite("test-asn1-encoding", Type::UNIT)
1248{
1249 NS_LOG_FUNCTION(this);
1250 AddTestCase(new RrcConnectionRequestTestCase(), TestCase::Duration::QUICK);
1251 AddTestCase(new RrcConnectionSetupTestCase(), TestCase::Duration::QUICK);
1252 AddTestCase(new RrcConnectionSetupCompleteTestCase(), TestCase::Duration::QUICK);
1253 AddTestCase(new RrcConnectionReconfigurationCompleteTestCase(), TestCase::Duration::QUICK);
1254 AddTestCase(new RrcConnectionReconfigurationTestCase(), TestCase::Duration::QUICK);
1255 AddTestCase(new HandoverPreparationInfoTestCase(), TestCase::Duration::QUICK);
1256 AddTestCase(new RrcConnectionReestablishmentRequestTestCase(), TestCase::Duration::QUICK);
1257 AddTestCase(new RrcConnectionReestablishmentTestCase(), TestCase::Duration::QUICK);
1258 AddTestCase(new RrcConnectionReestablishmentCompleteTestCase(), TestCase::Duration::QUICK);
1259 AddTestCase(new RrcConnectionRejectTestCase(), TestCase::Duration::QUICK);
1260 AddTestCase(new MeasurementReportTestCase(), TestCase::Duration::QUICK);
1261}
1262
1263/**
1264 * @ingroup lte-test
1265 * Static variable for test initialization
1266 */
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.
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:283
void AddHeader(const Header &header)
Add header to this packet.
Definition packet.cc:257
Smart pointer class similar to boost::intrusive_ptr.
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:1050
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
Definition test.cc:292
A suite of tests to run.
Definition test.h:1267
Type
Type of test.
Definition test.h:1274
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition log.h:191
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Definition log.h:257
#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.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
#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:134
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t transmissionMode
transmission mode
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config
MasterInformationBlock sourceMasterInformationBlock
source master information block
uint16_t sourceUeIdentity
source UE identity
MeasConfig sourceMeasConfig
source measure config
uint32_t sourceDlCarrierFreq
source DL carrier frequency
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2
BlackCellsToAddMod structure.
PhysCellIdRange physCellIdRange
Phy cell ID range.
uint32_t dlCarrierFreq
DL carrier frequency.
uint32_t ulCarrierFreq
UL carrier frequency.
CellsToAddMod structure.
int8_t cellIndividualOffset
cell individual offset
uint8_t cellIndex
cell index
uint16_t physCellId
Phy cell ID.
uint32_t cellIdentity
cell identity
uint32_t plmnIdentity
PLMN identity.
uint16_t trackingAreaCode
tracking area code
DrbToAddMod structure.
uint8_t epsBearerIdentity
EPS bearer identity.
RlcConfig rlcConfig
RLC config.
uint8_t logicalChannelIdentity
logical channel identify
uint8_t drbIdentity
DRB identity.
LogicalChannelConfig logicalChannelConfig
logical channel config
uint32_t ulCarrierFreq
UL carrier frequency.
Definition lte-rrc-sap.h:77
uint16_t ulBandwidth
UL bandwidth.
Definition lte-rrc-sap.h:78
HandoverPreparationInfo structure.
LogicalChannelConfig structure.
Definition lte-rrc-sap.h:98
uint16_t bucketSizeDurationMs
bucket size duration ms
uint16_t prioritizedBitRateKbps
prioritized bit rate Kbps
uint8_t logicalChannelGroup
logical channel group
uint16_t systemFrameNumber
system frame number
bool haveMeasGapConfig
have measure gap config?
bool haveSmeasure
have S measure?
bool haveSpeedStatePars
have speed state parameters?
bool haveQuantityConfig
have quantity config?
MeasIdToAddMod structure.
uint8_t measObjectId
measure object ID
uint8_t reportConfigId
report config ID
std::list< uint8_t > cellsToRemoveList
cells to remove list
bool haveCellForWhichToReportCGI
have cell for which to report CGI?
std::list< CellsToAddMod > cellsToAddModList
cells to add mod list
uint16_t allowedMeasBandwidth
allowed measure bandwidth
int8_t offsetFreq
offset frequency
uint8_t neighCellConfig
neighbor cell config
uint16_t cellForWhichToReportCGI
cell for which to report CGI
bool presenceAntennaPort1
antenna port 1 present?
std::list< uint8_t > blackCellsToRemoveList
black cells to remove list
std::list< BlackCellsToAddMod > blackCellsToAddModList
black cells to add mod list
uint32_t carrierFreq
carrier frequency
MeasObjectToAddMod structure.
uint8_t measObjectId
measure object ID
MeasObjectEutra measObjectEutra
measure object eutra
MeasResultEutra structure.
uint8_t rsrqResult
RSRQ result.
uint8_t rsrpResult
RSRP result.
bool haveRsrpResult
have RSRP result
bool haveRsrqResult
have RSRQ result?
uint16_t physCellId
Phy cell ID.
bool haveCgiInfo
have CGI info?
uint8_t rsrqResult
the RSRQ result
uint8_t rsrpResult
the RSRP result
MeasResults structure.
uint8_t measId
measure ID
bool haveMeasResultNeighCells
have measure result neighbor cells
std::list< MeasResultEutra > measResultListEutra
measure result list eutra
bool haveMeasResultServFreqList
has measResultServFreqList-r10
MeasResultPCell measResultPCell
measurement result primary cell
MeasurementReport structure.
MeasResults measResults
measure results
RachConfigDedicated rachConfigDedicated
RACH config dedicated.
bool haveRachConfigDedicated
Have RACH config dedicated?
uint16_t newUeIdentity
new UE identity
bool haveCarrierBandwidth
have carrier bandwidth?
bool haveCarrierFreq
have carrier frequency?
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth
CarrierFreqEutra carrierFreq
carrier frequency
uint16_t targetPhysCellId
target Phy cell ID
uint16_t start
starting cell ID
PhysicalConfigDedicated structure.
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
bool haveAntennaInfoDedicated
have antenna info dedicated?
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
bool havePdschConfigDedicated
have PDSCH config dedicated?
AntennaInfoDedicated antennaInfo
antenna info
uint32_t plmnIdentity
PLMN identity.
Definition lte-rrc-sap.h:55
uint8_t numberOfRaPreambles
number of RA preambles
uint8_t raResponseWindowSize
RA response window size.
uint8_t preambleTransMax
preamble transmit maximum
PreambleInfo preambleInfo
preamble info
RaSupervisionInfo raSupervisionInfo
RA supervision info.
uint8_t raPreambleIndex
RA preamble index.
uint8_t raPrachMaskIndex
RA PRACH mask index.
RachConfigCommon rachConfigCommon
RACH config common.
RadioResourceConfigDedicated structure.
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated
std::list< uint8_t > drbToReleaseList
DRB to release list.
bool havePhysicalConfigDedicated
have physical config dedicated?
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list.
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list.
uint16_t physCellId
Phy cell ID.
bool reportOnLeave
Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving c...
uint8_t maxReportCells
Maximum number of cells, excluding the serving cell, to be included in the measurement report.
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.
@ RSRQ
Reference Signal Received Quality.
@ EVENT_A2
Event A2: Serving becomes worse than absolute threshold.
uint8_t reportAmount
Number of measurement reports applicable, always assumed to be infinite.
enum ns3::LteRrcSap::ReportConfigEutra::@65 reportInterval
Report interval enumeration.
ThresholdEutra threshold2
Threshold for event A5.
enum ns3::LteRrcSap::ReportConfigEutra::@63 triggerQuantity
Trigger type enumeration.
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
enum ns3::LteRrcSap::ReportConfigEutra::@64 reportQuantity
Report type enumeration.
int8_t a3Offset
Offset value for Event A3.
uint16_t timeToTrigger
Time during which specific criteria for the event needs to be met in order to trigger a measurement r...
ReportConfigToAddMod structure.
uint8_t reportConfigId
report config ID
ReportConfigEutra reportConfigEutra
report config eutra
RlcConfig structure.
Definition lte-rrc-sap.h:83
Direction choice
direction choice
Definition lte-rrc-sap.h:93
RrcConnectionReconfigurationCompleted structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionReconfiguration structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionReestablishmentComplete structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionReestablishment structure.
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionReestablishmentRequest structure.
ReestablishmentCause reestablishmentCause
reestablishment cause
RrcConnectionReject structure.
RrcConnectionRequest structure.
RrcConnectionSetupCompleted structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionSetup structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
uint16_t srsConfigIndex
SRS config index.
SrbToAddMod structure.
LogicalChannelConfig logicalChannelConfig
logical channel config
uint8_t srbIdentity
SB identity.
CellAccessRelatedInfo cellAccessRelatedInfo
cell access related info
RadioResourceConfigCommonSib radioResourceConfigCommon
radio resource config common
@ THRESHOLD_RSRP
RSRP is used for the threshold.
@ THRESHOLD_RSRQ
RSRQ is used for the threshold.
enum ns3::LteRrcSap::ThresholdEutra::@60 choice
Threshold enumeration.
uint8_t range
Value range used in RSRP/RSRQ threshold.