A Discrete-Event Network Simulator
API
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
31using namespace ns3;
32
33NS_LOG_COMPONENT_DEFINE("Asn1EncodingTest");
34
42{
43 public:
49 static std::string sprintPacketContentsHex(Ptr<Packet> pkt)
50 {
51 uint32_t psize = pkt->GetSize();
52 uint8_t buffer[psize];
53 char sbuffer[psize * 3];
54 pkt->CopyData(buffer, psize);
55 for (uint32_t i = 0; i < psize; i++)
56 {
57 sprintf(&sbuffer[i * 3], "%02x ", buffer[i]);
58 }
59 return std::string(sbuffer);
60 }
61
67 static std::string sprintPacketContentsBin(Ptr<Packet> pkt)
68 {
69 uint32_t psize = pkt->GetSize();
70 uint8_t buffer[psize];
71 std::ostringstream oss(std::ostringstream::out);
72 pkt->CopyData(buffer, psize);
73 for (uint32_t i = 0; i < psize; i++)
74 {
75 oss << (std::bitset<8>(buffer[i]));
76 }
77 return std::string(oss.str() + "\n");
78 }
79
85 {
86 NS_LOG_DEBUG("---- SERIALIZED PACKET CONTENTS (HEX): -------");
89 }
90
96 template <class T>
97 static void LogPacketInfo(T source, std::string s)
98 {
99 NS_LOG_DEBUG("--------- " << s.data() << " INFO: -------");
100 std::ostringstream oss(std::ostringstream::out);
101 source.Print(oss);
102 NS_LOG_DEBUG(oss.str());
103 }
104};
105
106// --------------------------- 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;
169 rlcConfig.choice = LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL;
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 =
185 LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
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;
193 physicalConfigDedicated.pdschConfigDedicated.pa = LteRrcSap::PdschConfigDedicated::dB0;
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 std::list<LteRrcSap::SrbToAddMod>::iterator it1 = srcSrbToAddModList.begin();
211 std::list<LteRrcSap::SrbToAddMod> dstSrbToAddModList = rrcd2.srbToAddModList;
212 std::list<LteRrcSap::SrbToAddMod>::iterator 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 std::list<LteRrcSap::DrbToAddMod>::iterator it3 = srcDrbToAddModList.begin();
237 std::list<LteRrcSap::DrbToAddMod> dstDrbToAddModList = rrcd2.drbToAddModList;
238 std::list<LteRrcSap::DrbToAddMod>::iterator 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 std::list<uint8_t>::iterator it5 = srcDrbToReleaseList.begin();
271 std::list<uint8_t>::iterator 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
332{
333 public:
335 void DoRun() override;
336};
337
339 : RrcHeaderTestCase("Testing RrcConnectionRequest")
340{
341}
342
343void
345{
346 packet = Create<Packet>();
347 NS_LOG_DEBUG("============= RrcConnectionRequestTestCase ===========");
348
350 msg.ueIdentity = 0x83fecafecaULL;
351
353 source.SetMessage(msg);
354
355 // Log source info
356 TestUtils::LogPacketInfo<RrcConnectionRequestHeader>(source, "SOURCE");
357
358 // Add header
359 packet->AddHeader(source);
360
361 // Log serialized packet contents
363
364 // Remove header
365 RrcConnectionRequestHeader destination;
366 packet->RemoveHeader(destination);
367
368 // Log destination info
369 TestUtils::LogPacketInfo<RrcConnectionRequestHeader>(destination, "DESTINATION");
370
371 // Check that the destination and source headers contain the same values
372 NS_TEST_ASSERT_MSG_EQ(source.GetMmec(), destination.GetMmec(), "Different m_mmec!");
373 NS_TEST_ASSERT_MSG_EQ(source.GetMtmsi(), destination.GetMtmsi(), "Different m_mTmsi!");
374
375 packet = nullptr;
376}
377
385{
386 public:
388 void DoRun() override;
389};
390
392 : RrcHeaderTestCase("Testing RrcConnectionSetupTestCase")
393{
394}
395
396void
398{
399 packet = Create<Packet>();
400 NS_LOG_DEBUG("============= RrcConnectionSetupTestCase ===========");
401
405
407 source.SetMessage(msg);
408
409 // Log source info
410 TestUtils::LogPacketInfo<RrcConnectionSetupHeader>(source, "SOURCE");
411
412 // Add header
413 packet->AddHeader(source);
414
415 // Log serialized packet contents
417
418 // remove header
419 RrcConnectionSetupHeader destination;
420 packet->RemoveHeader(destination);
421
422 // Log destination info
423 TestUtils::LogPacketInfo<RrcConnectionSetupHeader>(destination, "DESTINATION");
424
425 // Check that the destination and source headers contain the same values
427 destination.GetRrcTransactionIdentifier(),
428 "RrcTransactionIdentifier");
429
431 destination.GetRadioResourceConfigDedicated());
432
433 packet = nullptr;
434}
435
443{
444 public:
446 void DoRun() override;
447};
448
450 : RrcHeaderTestCase("Testing RrcConnectionSetupCompleteTestCase")
451{
452}
453
454void
456{
457 packet = Create<Packet>();
458 NS_LOG_DEBUG("============= RrcConnectionSetupCompleteTestCase ===========");
459
462
464 source.SetMessage(msg);
465
466 // Log source info
467 TestUtils::LogPacketInfo<RrcConnectionSetupCompleteHeader>(source, "SOURCE");
468
469 // Add header
470 packet->AddHeader(source);
471
472 // Log serialized packet contents
474
475 // Remove header
477 packet->RemoveHeader(destination);
478
479 // Log destination info
480 TestUtils::LogPacketInfo<RrcConnectionSetupCompleteHeader>(destination, "DESTINATION");
481
482 // Check that the destination and source headers contain the same values
484 destination.GetRrcTransactionIdentifier(),
485 "RrcTransactionIdentifier");
486
487 packet = nullptr;
488}
489
497{
498 public:
500 void DoRun() override;
501};
502
504 : RrcHeaderTestCase("Testing RrcConnectionReconfigurationCompleteTestCase")
505{
506}
507
508void
510{
511 packet = Create<Packet>();
512 NS_LOG_DEBUG("============= RrcConnectionReconfigurationCompleteTestCase ===========");
513
516
518 source.SetMessage(msg);
519
520 // Log source info
521 TestUtils::LogPacketInfo<RrcConnectionReconfigurationCompleteHeader>(source, "SOURCE");
522
523 // Add header
524 packet->AddHeader(source);
525
526 // Log serialized packet contents
528
529 // remove header
531 packet->RemoveHeader(destination);
532
533 // Log destination info
534 TestUtils::LogPacketInfo<RrcConnectionReconfigurationCompleteHeader>(destination,
535 "DESTINATION");
536
537 // Check that the destination and source headers contain the same values
539 destination.GetRrcTransactionIdentifier(),
540 "RrcTransactionIdentifier");
541
542 packet = nullptr;
543}
544
552{
553 public:
555 void DoRun() override;
556};
557
559 : RrcHeaderTestCase("Testing RrcConnectionReconfigurationTestCase")
560{
561}
562
563void
565{
566 packet = Create<Packet>();
567 NS_LOG_DEBUG("============= RrcConnectionReconfigurationTestCase ===========");
568
571
572 msg.haveMeasConfig = true;
573
577
578 msg.measConfig.haveMeasGapConfig = true;
579 msg.measConfig.measGapConfig.type = LteRrcSap::MeasGapConfig::SETUP;
580 msg.measConfig.measGapConfig.gapOffsetChoice = LteRrcSap::MeasGapConfig::GP0;
582
583 msg.measConfig.haveSmeasure = true;
584 msg.measConfig.sMeasure = 57;
585
587 msg.measConfig.speedStatePars.type = LteRrcSap::SpeedStatePars::SETUP;
594
595 msg.measConfig.measObjectToRemoveList.push_back(23);
596 msg.measConfig.measObjectToRemoveList.push_back(13);
597
598 msg.measConfig.reportConfigToRemoveList.push_back(7);
599 msg.measConfig.reportConfigToRemoveList.push_back(16);
600
601 msg.measConfig.measIdToRemoveList.push_back(4);
602 msg.measConfig.measIdToRemoveList.push_back(18);
603
604 // Set measObjectToAddModList
605 LteRrcSap::MeasObjectToAddMod measObjectToAddMod;
606 measObjectToAddMod.measObjectId = 3;
607 measObjectToAddMod.measObjectEutra.carrierFreq = 21;
608 measObjectToAddMod.measObjectEutra.allowedMeasBandwidth = 15;
609 measObjectToAddMod.measObjectEutra.presenceAntennaPort1 = true;
610 measObjectToAddMod.measObjectEutra.neighCellConfig = 3;
611 measObjectToAddMod.measObjectEutra.offsetFreq = -12;
612 measObjectToAddMod.measObjectEutra.cellsToRemoveList.push_back(5);
613 measObjectToAddMod.measObjectEutra.cellsToRemoveList.push_back(2);
614 measObjectToAddMod.measObjectEutra.blackCellsToRemoveList.push_back(1);
615 measObjectToAddMod.measObjectEutra.haveCellForWhichToReportCGI = true;
616 measObjectToAddMod.measObjectEutra.cellForWhichToReportCGI = 250;
617 LteRrcSap::CellsToAddMod cellsToAddMod;
618 cellsToAddMod.cellIndex = 20;
619 cellsToAddMod.physCellId = 14;
620 cellsToAddMod.cellIndividualOffset = 22;
621 measObjectToAddMod.measObjectEutra.cellsToAddModList.push_back(cellsToAddMod);
622 LteRrcSap::BlackCellsToAddMod blackCellsToAddMod;
623 blackCellsToAddMod.cellIndex = 18;
624 blackCellsToAddMod.physCellIdRange.start = 128;
625 blackCellsToAddMod.physCellIdRange.haveRange = true;
626 blackCellsToAddMod.physCellIdRange.range = 128;
627 measObjectToAddMod.measObjectEutra.blackCellsToAddModList.push_back(blackCellsToAddMod);
628 msg.measConfig.measObjectToAddModList.push_back(measObjectToAddMod);
629
630 // Set reportConfigToAddModList
631 LteRrcSap::ReportConfigToAddMod reportConfigToAddMod;
632 reportConfigToAddMod.reportConfigId = 22;
633 reportConfigToAddMod.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::EVENT;
634 reportConfigToAddMod.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A2;
635 reportConfigToAddMod.reportConfigEutra.threshold1.choice =
636 LteRrcSap::ThresholdEutra::THRESHOLD_RSRP;
637 reportConfigToAddMod.reportConfigEutra.threshold1.range = 15;
638 reportConfigToAddMod.reportConfigEutra.threshold2.choice =
639 LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
640 reportConfigToAddMod.reportConfigEutra.threshold2.range = 10;
641 reportConfigToAddMod.reportConfigEutra.reportOnLeave = true;
642 reportConfigToAddMod.reportConfigEutra.a3Offset = -25;
643 reportConfigToAddMod.reportConfigEutra.hysteresis = 18;
644 reportConfigToAddMod.reportConfigEutra.timeToTrigger = 100;
645 reportConfigToAddMod.reportConfigEutra.purpose =
646 LteRrcSap::ReportConfigEutra::REPORT_STRONGEST_CELLS;
647 reportConfigToAddMod.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
648 reportConfigToAddMod.reportConfigEutra.reportQuantity =
649 LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY;
650 reportConfigToAddMod.reportConfigEutra.maxReportCells = 5;
651 reportConfigToAddMod.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MIN60;
652 reportConfigToAddMod.reportConfigEutra.reportAmount = 16;
653 msg.measConfig.reportConfigToAddModList.push_back(reportConfigToAddMod);
654
655 // Set measIdToAddModList
656 LteRrcSap::MeasIdToAddMod measIdToAddMod;
657 LteRrcSap::MeasIdToAddMod measIdToAddMod2;
658 measIdToAddMod.measId = 7;
659 measIdToAddMod.measObjectId = 6;
660 measIdToAddMod.reportConfigId = 5;
661 measIdToAddMod2.measId = 4;
662 measIdToAddMod2.measObjectId = 8;
663 measIdToAddMod2.reportConfigId = 12;
664 msg.measConfig.measIdToAddModList.push_back(measIdToAddMod);
665 msg.measConfig.measIdToAddModList.push_back(measIdToAddMod2);
666
667 msg.haveMobilityControlInfo = true;
682 .preambleTransMax = 3;
685
687
689
690 msg.haveNonCriticalExtension = false; // Danilo
692 source.SetMessage(msg);
693
694 // Log source info
695 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader>(source, "SOURCE");
696
697 // Add header
698 packet->AddHeader(source);
699
700 // Log serialized packet contents
702
703 // remove header
705 packet->RemoveHeader(destination);
706
707 // Log destination info
708 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader>(destination, "DESTINATION");
709
710 // Check that the destination and source headers contain the same values
712 destination.GetRrcTransactionIdentifier(),
713 "RrcTransactionIdentifier");
715 destination.GetHaveMeasConfig(),
716 "GetHaveMeasConfig");
718 destination.GetHaveMobilityControlInfo(),
719 "GetHaveMobilityControlInfo");
722 "GetHaveRadioResourceConfigDedicated");
723
724 if (source.GetHaveMobilityControlInfo())
725 {
728 "GetMobilityControlInfo().targetPhysCellId");
731 "GetMobilityControlInfo().haveCarrierFreq");
734 "GetMobilityControlInfo().haveCarrierBandwidth");
737 "GetMobilityControlInfo().newUeIdentity");
740 "GetMobilityControlInfo().haveRachConfigDedicated");
741
743 {
746 "GetMobilityControlInfo().carrierFreq.dlCarrierFreq");
749 "GetMobilityControlInfo().carrierFreq.ulCarrierFreq");
750 }
751
753 {
756 "GetMobilityControlInfo().carrierBandwidth.dlBandwidth");
759 "GetMobilityControlInfo().carrierBandwidth.ulBandwidth");
760 }
761
763 {
767 "GetMobilityControlInfo().rachConfigDedicated.raPreambleIndex");
771 "GetMobilityControlInfo().rachConfigDedicated.raPrachMaskIndex");
772 }
773 }
774
776 {
778 destination.GetRadioResourceConfigDedicated());
779 }
780
781 packet = nullptr;
782}
783
791{
792 public:
794 void DoRun() override;
795};
796
798 : RrcHeaderTestCase("Testing HandoverPreparationInfoTestCase")
799{
800}
801
802void
804{
805 packet = Create<Packet>();
806 NS_LOG_DEBUG("============= HandoverPreparationInfoTestCase ===========");
807
810 msg.asConfig.sourceUeIdentity = 11;
814
819 .plmnIdentity = 123;
820
829
834
836 source.SetMessage(msg);
837
838 // Log source info
839 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader>(source, "SOURCE");
840
841 // Add header
842 packet->AddHeader(source);
843
844 // Log serialized packet contents
846
847 // remove header
849 packet->RemoveHeader(destination);
850
851 // Log destination info
852 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader>(destination, "DESTINATION");
853
854 // Check that the destination and source headers contain the same values
858 destination.GetAsConfig().sourceUeIdentity,
859 "sourceUeIdentity");
862 "dlBandwidth");
865 "systemFrameNumber");
867 source.GetAsConfig()
869 destination.GetAsConfig()
871 "plmnIdentity");
874 destination.GetAsConfig()
876 "csgIndication");
879 destination.GetAsConfig()
881 "cellIdentity");
884 destination.GetAsConfig()
886 "csgIdentity");
888 destination.GetAsConfig().sourceDlCarrierFreq,
889 "sourceDlCarrierFreq");
890
891 packet = nullptr;
892}
893
901{
902 public:
904 void DoRun() override;
905};
906
908 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentRequestTestCase")
909{
910}
911
912void
914{
915 packet = Create<Packet>();
916 NS_LOG_DEBUG("============= RrcConnectionReestablishmentRequestTestCase ===========");
917
919 msg.ueIdentity.cRnti = 12;
920 msg.ueIdentity.physCellId = 21;
921 msg.reestablishmentCause = LteRrcSap::HANDOVER_FAILURE;
922
924 source.SetMessage(msg);
925
926 // Log source info
927 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader>(source, "SOURCE");
928
929 // Add header
930 packet->AddHeader(source);
931
932 // Log serialized packet contents
934
935 // remove header
937 packet->RemoveHeader(destination);
938
939 // Log destination info
940 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader>(destination, "DESTINATION");
941
942 // Check that the destination and source headers contain the same values
943 NS_TEST_ASSERT_MSG_EQ(source.GetUeIdentity().cRnti, destination.GetUeIdentity().cRnti, "cRnti");
945 destination.GetUeIdentity().physCellId,
946 "physCellId");
948 destination.GetReestablishmentCause(),
949 "ReestablishmentCause");
950
951 packet = nullptr;
952}
953
961{
962 public:
964 void DoRun() override;
965};
966
968 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentTestCase")
969{
970}
971
972void
974{
975 packet = Create<Packet>();
976 NS_LOG_DEBUG("============= RrcConnectionReestablishmentTestCase ===========");
977
981
983 source.SetMessage(msg);
984
985 // Log source info
986 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader>(source, "SOURCE");
987
988 // Add header
989 packet->AddHeader(source);
990
991 // Log serialized packet contents
993
994 // remove header
996 packet->RemoveHeader(destination);
997
998 // Log destination info
999 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader>(destination, "DESTINATION");
1000
1001 // Check that the destination and source headers contain the same values
1003 destination.GetRrcTransactionIdentifier(),
1004 "rrcTransactionIdentifier");
1006 destination.GetRadioResourceConfigDedicated());
1007
1008 packet = nullptr;
1009}
1010
1018{
1019 public:
1021 void DoRun() override;
1022};
1023
1025 : RrcHeaderTestCase("Testing RrcConnectionReestablishmentCompleteTestCase")
1026{
1027}
1028
1029void
1031{
1032 packet = Create<Packet>();
1033 NS_LOG_DEBUG("============= RrcConnectionReestablishmentCompleteTestCase ===========");
1034
1037
1039 source.SetMessage(msg);
1040
1041 // Log source info
1042 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader>(source, "SOURCE");
1043
1044 // Add header
1045 packet->AddHeader(source);
1046
1047 // Log serialized packet contents
1049
1050 // remove header
1052 packet->RemoveHeader(destination);
1053
1054 // Log destination info
1055 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader>(destination,
1056 "DESTINATION");
1057
1058 // Check that the destination and source headers contain the same values
1060 destination.GetRrcTransactionIdentifier(),
1061 "rrcTransactionIdentifier");
1062
1063 packet = nullptr;
1064}
1065
1073{
1074 public:
1076 void DoRun() override;
1077};
1078
1080 : RrcHeaderTestCase("Testing RrcConnectionRejectTestCase")
1081{
1082}
1083
1084void
1086{
1087 packet = Create<Packet>();
1088 NS_LOG_DEBUG("============= RrcConnectionRejectTestCase ===========");
1089
1091 msg.waitTime = 2;
1092
1094 source.SetMessage(msg);
1095
1096 // Log source info
1097 TestUtils::LogPacketInfo<RrcConnectionRejectHeader>(source, "SOURCE");
1098
1099 // Add header
1100 packet->AddHeader(source);
1101
1102 // Log serialized packet contents
1104
1105 // remove header
1106 RrcConnectionRejectHeader destination;
1107 packet->RemoveHeader(destination);
1108
1109 // Log destination info
1110 TestUtils::LogPacketInfo<RrcConnectionRejectHeader>(destination, "DESTINATION");
1111
1112 // Check that the destination and source headers contain the same values
1114 destination.GetMessage().waitTime,
1115 "Different waitTime!");
1116
1117 packet = nullptr;
1118}
1119
1127{
1128 public:
1130 void DoRun() override;
1131};
1132
1134 : RrcHeaderTestCase("Testing MeasurementReportTestCase")
1135{
1136}
1137
1138void
1140{
1141 packet = Create<Packet>();
1142 NS_LOG_DEBUG("============= MeasurementReportTestCase ===========");
1143
1145 msg.measResults.measId = 5;
1149
1151 mResEutra.physCellId = 9;
1152 mResEutra.haveRsrpResult = true;
1153 mResEutra.rsrpResult = 33;
1154 mResEutra.haveRsrqResult = true;
1155 mResEutra.rsrqResult = 22;
1156 mResEutra.haveCgiInfo = true;
1157 mResEutra.cgiInfo.plmnIdentity = 7;
1158 mResEutra.cgiInfo.cellIdentity = 6;
1159 mResEutra.cgiInfo.trackingAreaCode = 5;
1160 msg.measResults.measResultListEutra.push_back(mResEutra);
1161
1163
1165 source.SetMessage(msg);
1166
1167 // Log source info
1168 TestUtils::LogPacketInfo<MeasurementReportHeader>(source, "SOURCE");
1169
1170 // Add header
1171 packet->AddHeader(source);
1172
1173 // Log serialized packet contents
1175
1176 // remove header
1177 MeasurementReportHeader destination;
1178 packet->RemoveHeader(destination);
1179
1180 // Log destination info
1181 TestUtils::LogPacketInfo<MeasurementReportHeader>(destination, "DESTINATION");
1182
1183 // Check that the destination and source headers contain the same values
1185 LteRrcSap::MeasResults dstMeas = destination.GetMessage().measResults;
1186
1187 NS_TEST_ASSERT_MSG_EQ(srcMeas.measId, dstMeas.measId, "Different measId!");
1190 "Different rsrpResult!");
1193 "Different rsrqResult!");
1196 "Different haveMeasResultNeighCells!");
1197
1198 if (srcMeas.haveMeasResultNeighCells)
1199 {
1200 std::list<LteRrcSap::MeasResultEutra>::iterator itsrc = srcMeas.measResultListEutra.begin();
1201 std::list<LteRrcSap::MeasResultEutra>::iterator itdst = dstMeas.measResultListEutra.begin();
1202 for (; itsrc != srcMeas.measResultListEutra.end(); itsrc++, itdst++)
1203 {
1204 NS_TEST_ASSERT_MSG_EQ(itsrc->physCellId, itdst->physCellId, "Different physCellId!");
1205
1206 NS_TEST_ASSERT_MSG_EQ(itsrc->haveCgiInfo, itdst->haveCgiInfo, "Different haveCgiInfo!");
1207 if (itsrc->haveCgiInfo)
1208 {
1209 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.plmnIdentity,
1210 itdst->cgiInfo.plmnIdentity,
1211 "Different cgiInfo.plmnIdentity!");
1212 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.cellIdentity,
1213 itdst->cgiInfo.cellIdentity,
1214 "Different cgiInfo.cellIdentity!");
1215 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.trackingAreaCode,
1216 itdst->cgiInfo.trackingAreaCode,
1217 "Different cgiInfo.trackingAreaCode!");
1218 NS_TEST_ASSERT_MSG_EQ(itsrc->cgiInfo.plmnIdentityList.size(),
1219 itdst->cgiInfo.plmnIdentityList.size(),
1220 "Different cgiInfo.plmnIdentityList.size()!");
1221
1222 if (!itsrc->cgiInfo.plmnIdentityList.empty())
1223 {
1224 std::list<uint32_t>::iterator itsrc2 = itsrc->cgiInfo.plmnIdentityList.begin();
1225 std::list<uint32_t>::iterator itdst2 = itdst->cgiInfo.plmnIdentityList.begin();
1226 for (; itsrc2 != itsrc->cgiInfo.plmnIdentityList.begin(); itsrc2++, itdst2++)
1227 {
1228 NS_TEST_ASSERT_MSG_EQ(*itsrc2, *itdst2, "Different plmnId elements!");
1229 }
1230 }
1231 }
1232
1233 NS_TEST_ASSERT_MSG_EQ(itsrc->haveRsrpResult,
1234 itdst->haveRsrpResult,
1235 "Different haveRsrpResult!");
1236 if (itsrc->haveRsrpResult)
1237 {
1238 NS_TEST_ASSERT_MSG_EQ(itsrc->rsrpResult,
1239 itdst->rsrpResult,
1240 "Different rsrpResult!");
1241 }
1242
1243 NS_TEST_ASSERT_MSG_EQ(itsrc->haveRsrqResult,
1244 itdst->haveRsrqResult,
1245 "Different haveRsrqResult!");
1246 if (itsrc->haveRsrqResult)
1247 {
1248 NS_TEST_ASSERT_MSG_EQ(itsrc->rsrqResult,
1249 itdst->rsrqResult,
1250 "Different rsrqResult!");
1251 }
1252 }
1253 }
1254
1255 packet = nullptr;
1256}
1257
1265{
1266 public:
1268};
1269
1271 : TestSuite("test-asn1-encoding", UNIT)
1272{
1273 NS_LOG_FUNCTION(this);
1274 AddTestCase(new RrcConnectionRequestTestCase(), TestCase::QUICK);
1275 AddTestCase(new RrcConnectionSetupTestCase(), TestCase::QUICK);
1276 AddTestCase(new RrcConnectionSetupCompleteTestCase(), TestCase::QUICK);
1278 AddTestCase(new RrcConnectionReconfigurationTestCase(), TestCase::QUICK);
1279 AddTestCase(new HandoverPreparationInfoTestCase(), TestCase::QUICK);
1281 AddTestCase(new RrcConnectionReestablishmentTestCase(), TestCase::QUICK);
1283 AddTestCase(new RrcConnectionRejectTestCase(), TestCase::QUICK);
1284 AddTestCase(new MeasurementReportTestCase(), TestCase::QUICK);
1285}
1286
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:294
void AddHeader(const Header &header)
Add header to this packet.
Definition: packet.cc:268
uint32_t GetSize() const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
Definition: packet.h:863
uint32_t CopyData(uint8_t *buffer, uint32_t size) const
Copy the packet contents to a byte buffer.
Definition: packet.cc:400
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.
bool GetHaveMobilityControlInfo()
Getter for m_haveMobilityControlInfo.
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated()
Getter for m_radioResourceConfigDedicated.
bool GetHaveMeasConfig()
Getter for m_haveMeasConfig.
bool GetHaveRadioResourceConfigDedicated()
Getter for m_haveRadioResourceConfigDedicated.
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.
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:1060
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:305
A suite of tests to run.
Definition: test.h:1256
#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 ",...
#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:144
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t transmissionMode
transmission mode
Definition: lte-rrc-sap.h:145
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config
Definition: lte-rrc-sap.h:638
MasterInformationBlock sourceMasterInformationBlock
source master information block
Definition: lte-rrc-sap.h:640
uint16_t sourceUeIdentity
source UE identity
Definition: lte-rrc-sap.h:639
MeasConfig sourceMeasConfig
source measure config
Definition: lte-rrc-sap.h:637
uint32_t sourceDlCarrierFreq
source DL carrier frequency
Definition: lte-rrc-sap.h:645
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1
Definition: lte-rrc-sap.h:642
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2
Definition: lte-rrc-sap.h:644
BlackCellsToAddMod structure.
Definition: lte-rrc-sap.h:323
PhysCellIdRange physCellIdRange
Phy cell ID range.
Definition: lte-rrc-sap.h:325
uint16_t dlBandwidth
DL bandwidth.
Definition: lte-rrc-sap.h:566
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:567
uint32_t dlCarrierFreq
DL carrier frequency.
Definition: lte-rrc-sap.h:559
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:560
CellsToAddMod structure.
Definition: lte-rrc-sap.h:307
int8_t cellIndividualOffset
cell individual offset
Definition: lte-rrc-sap.h:310
uint8_t cellIndex
cell index
Definition: lte-rrc-sap.h:308
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:309
uint32_t cellIdentity
cell identity
Definition: lte-rrc-sap.h:652
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:651
uint16_t trackingAreaCode
tracking area code
Definition: lte-rrc-sap.h:653
DrbToAddMod structure.
Definition: lte-rrc-sap.h:239
uint8_t epsBearerIdentity
EPS bearer identity.
Definition: lte-rrc-sap.h:240
RlcConfig rlcConfig
RLC config.
Definition: lte-rrc-sap.h:242
uint8_t logicalChannelIdentity
logical channel identify
Definition: lte-rrc-sap.h:243
uint8_t drbIdentity
DRB identity.
Definition: lte-rrc-sap.h:241
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:244
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:928
LogicalChannelConfig structure.
Definition: lte-rrc-sap.h:107
uint16_t bucketSizeDurationMs
bucket size duration ms
Definition: lte-rrc-sap.h:110
uint16_t prioritizedBitRateKbps
prioritized bit rate Kbps
Definition: lte-rrc-sap.h:109
uint8_t logicalChannelGroup
logical channel group
Definition: lte-rrc-sap.h:111
uint16_t systemFrameNumber
system frame number
Definition: lte-rrc-sap.h:610
std::list< uint8_t > measIdToRemoveList
measure ID to remove list
Definition: lte-rrc-sap.h:544
uint8_t sMeasure
S measure.
Definition: lte-rrc-sap.h:551
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list
Definition: lte-rrc-sap.h:541
std::list< uint8_t > reportConfigToRemoveList
report config to remove list
Definition: lte-rrc-sap.h:542
std::list< uint8_t > measObjectToRemoveList
measure object to remove list
Definition: lte-rrc-sap.h:540
SpeedStatePars speedStatePars
speed state parameters
Definition: lte-rrc-sap.h:553
bool haveMeasGapConfig
have measure gap config?
Definition: lte-rrc-sap.h:548
QuantityConfig quantityConfig
quantity config
Definition: lte-rrc-sap.h:547
bool haveSmeasure
have S measure?
Definition: lte-rrc-sap.h:550
bool haveSpeedStatePars
have speed state parameters?
Definition: lte-rrc-sap.h:552
std::list< ReportConfigToAddMod > reportConfigToAddModList
report config to add mod list
Definition: lte-rrc-sap.h:543
MeasGapConfig measGapConfig
measure gap config
Definition: lte-rrc-sap.h:549
std::list< MeasIdToAddMod > measIdToAddModList
measure ID to add mod list
Definition: lte-rrc-sap.h:545
bool haveQuantityConfig
have quantity config?
Definition: lte-rrc-sap.h:546
enum ns3::LteRrcSap::MeasGapConfig::action type
action type
enum ns3::LteRrcSap::MeasGapConfig::gap gapOffsetChoice
gap offset
uint8_t gapOffsetValue
gap offset value
Definition: lte-rrc-sap.h:503
MeasIdToAddMod structure.
Definition: lte-rrc-sap.h:480
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:482
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:483
std::list< uint8_t > cellsToRemoveList
cells to remove list
Definition: lte-rrc-sap.h:336
bool haveCellForWhichToReportCGI
have cell for which to report CGI?
Definition: lte-rrc-sap.h:340
std::list< CellsToAddMod > cellsToAddModList
cells to add mod list
Definition: lte-rrc-sap.h:337
uint16_t allowedMeasBandwidth
allowed measure bandwidth
Definition: lte-rrc-sap.h:332
int8_t offsetFreq
offset frequency
Definition: lte-rrc-sap.h:335
uint8_t neighCellConfig
neighbor cell config
Definition: lte-rrc-sap.h:334
uint16_t cellForWhichToReportCGI
cell for which to report CGI
Definition: lte-rrc-sap.h:341
bool presenceAntennaPort1
antenna port 1 present?
Definition: lte-rrc-sap.h:333
std::list< uint8_t > blackCellsToRemoveList
black cells to remove list
Definition: lte-rrc-sap.h:338
std::list< BlackCellsToAddMod > blackCellsToAddModList
black cells to add mod list
Definition: lte-rrc-sap.h:339
uint32_t carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:331
MeasObjectToAddMod structure.
Definition: lte-rrc-sap.h:466
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:467
MeasObjectEutra measObjectEutra
measure object eutra
Definition: lte-rrc-sap.h:468
MeasResultEutra structure.
Definition: lte-rrc-sap.h:666
uint8_t rsrqResult
RSRQ result.
Definition: lte-rrc-sap.h:673
uint8_t rsrpResult
RSRP result.
Definition: lte-rrc-sap.h:671
bool haveRsrpResult
have RSRP result
Definition: lte-rrc-sap.h:670
bool haveRsrqResult
have RSRQ result?
Definition: lte-rrc-sap.h:672
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:667
bool haveCgiInfo
have CGI info?
Definition: lte-rrc-sap.h:668
uint8_t rsrqResult
the RSRQ result
Definition: lte-rrc-sap.h:661
uint8_t rsrpResult
the RSRP result
Definition: lte-rrc-sap.h:660
MeasResults structure.
Definition: lte-rrc-sap.h:703
uint8_t measId
measure ID
Definition: lte-rrc-sap.h:704
bool haveMeasResultNeighCells
have measure result neighbor cells
Definition: lte-rrc-sap.h:706
std::list< MeasResultEutra > measResultListEutra
measure result list eutra
Definition: lte-rrc-sap.h:707
bool haveMeasResultServFreqList
has measResultServFreqList-r10
Definition: lte-rrc-sap.h:708
MeasResultPCell measResultPCell
measurement result primary cell
Definition: lte-rrc-sap.h:705
MeasurementReport structure.
Definition: lte-rrc-sap.h:934
MeasResults measResults
measure results
Definition: lte-rrc-sap.h:935
RadioResourceConfigCommon radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:586
RachConfigDedicated rachConfigDedicated
RACH config dedicated.
Definition: lte-rrc-sap.h:588
bool haveRachConfigDedicated
Have RACH config dedicated?
Definition: lte-rrc-sap.h:587
uint16_t newUeIdentity
new UE identity
Definition: lte-rrc-sap.h:585
bool haveCarrierBandwidth
have carrier bandwidth?
Definition: lte-rrc-sap.h:583
bool haveCarrierFreq
have carrier frequency?
Definition: lte-rrc-sap.h:581
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth
Definition: lte-rrc-sap.h:584
CarrierFreqEutra carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:582
uint16_t targetPhysCellId
target Phy cell ID
Definition: lte-rrc-sap.h:580
uint8_t nCellChangeHigh
cell change high
Definition: lte-rrc-sap.h:512
uint8_t nCellChangeMedium
cell change medium
Definition: lte-rrc-sap.h:511
uint16_t start
starting cell ID
Definition: lte-rrc-sap.h:316
PhysicalConfigDedicated structure.
Definition: lte-rrc-sap.h:220
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
Definition: lte-rrc-sap.h:227
bool haveAntennaInfoDedicated
have antenna info dedicated?
Definition: lte-rrc-sap.h:224
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
Definition: lte-rrc-sap.h:223
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
Definition: lte-rrc-sap.h:221
bool havePdschConfigDedicated
have PDSCH config dedicated?
Definition: lte-rrc-sap.h:226
AntennaInfoDedicated antennaInfo
antenna info
Definition: lte-rrc-sap.h:225
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:66
uint8_t numberOfRaPreambles
number of RA preambles
Definition: lte-rrc-sap.h:250
uint8_t filterCoefficientRSRQ
filter coefficient RSRQ
Definition: lte-rrc-sap.h:302
uint8_t filterCoefficientRSRP
filter coefficient RSRP
Definition: lte-rrc-sap.h:301
uint8_t raResponseWindowSize
RA response window size.
Definition: lte-rrc-sap.h:257
uint8_t preambleTransMax
preamble transmit maximum
Definition: lte-rrc-sap.h:256
PreambleInfo preambleInfo
preamble info
Definition: lte-rrc-sap.h:270
RaSupervisionInfo raSupervisionInfo
RA supervision info.
Definition: lte-rrc-sap.h:271
uint8_t raPreambleIndex
RA preamble index.
Definition: lte-rrc-sap.h:573
uint8_t raPrachMaskIndex
RA PRACH mask index.
Definition: lte-rrc-sap.h:574
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:278
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:284
RadioResourceConfigDedicated structure.
Definition: lte-rrc-sap.h:290
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated
Definition: lte-rrc-sap.h:295
std::list< uint8_t > drbToReleaseList
DRB to release list.
Definition: lte-rrc-sap.h:293
bool havePhysicalConfigDedicated
have physical config dedicated?
Definition: lte-rrc-sap.h:294
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list.
Definition: lte-rrc-sap.h:292
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list.
Definition: lte-rrc-sap.h:291
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:595
bool reportOnLeave
Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving c...
Definition: lte-rrc-sap.h:393
uint8_t maxReportCells
Maximum number of cells, excluding the serving cell, to be included in the measurement report.
Definition: lte-rrc-sap.h:433
uint8_t hysteresis
Parameter used within the entry and leave condition of an event triggered reporting condition.
Definition: lte-rrc-sap.h:401
enum ns3::LteRrcSap::ReportConfigEutra::@68 reportInterval
Report interval enumeration.
uint8_t reportAmount
Number of measurement reports applicable, always assumed to be infinite.
Definition: lte-rrc-sap.h:457
ThresholdEutra threshold2
Threshold for event A5.
Definition: lte-rrc-sap.h:388
enum ns3::LteRrcSap::ReportConfigEutra::@64 triggerType
Trigger enumeration.
enum ns3::LteRrcSap::ReportConfigEutra::@65 eventId
Event enumeration.
enum ns3::LteRrcSap::ReportConfigEutra::@67 reportQuantity
Report type enumeration.
enum ns3::LteRrcSap::ReportConfigEutra::@66 triggerQuantity
Trigger type enumeration.
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
Definition: lte-rrc-sap.h:387
enum ns3::LteRrcSap::ReportConfigEutra::report purpose
purpose
int8_t a3Offset
Offset value for Event A3.
Definition: lte-rrc-sap.h:397
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:405
ReportConfigToAddMod structure.
Definition: lte-rrc-sap.h:473
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:474
ReportConfigEutra reportConfigEutra
report config eutra
Definition: lte-rrc-sap.h:475
RlcConfig structure.
Definition: lte-rrc-sap.h:94
enum ns3::LteRrcSap::RlcConfig::direction choice
direction choice
RrcConnectionReconfigurationCompleted structure.
Definition: lte-rrc-sap.h:884
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:885
RrcConnectionReconfiguration structure.
Definition: lte-rrc-sap.h:867
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:868
bool haveMobilityControlInfo
have mobility control info
Definition: lte-rrc-sap.h:871
bool haveRadioResourceConfigDedicated
have radio resource config dedicated
Definition: lte-rrc-sap.h:873
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:875
bool haveNonCriticalExtension
have critical extension?
Definition: lte-rrc-sap.h:876
MobilityControlInfo mobilityControlInfo
mobility control info
Definition: lte-rrc-sap.h:872
RrcConnectionReestablishmentComplete structure.
Definition: lte-rrc-sap.h:905
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:906
RrcConnectionReestablishment structure.
Definition: lte-rrc-sap.h:897
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:900
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:898
RrcConnectionReestablishmentRequest structure.
Definition: lte-rrc-sap.h:890
ReestablishmentCause reestablishmentCause
reestablishment cause
Definition: lte-rrc-sap.h:892
RrcConnectionReject structure.
Definition: lte-rrc-sap.h:922
RrcConnectionRequest structure.
Definition: lte-rrc-sap.h:716
RrcConnectionSetupCompleted structure.
Definition: lte-rrc-sap.h:730
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:731
RrcConnectionSetup structure.
Definition: lte-rrc-sap.h:722
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:723
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:725
enum ns3::LteRrcSap::SoundingRsUlConfigDedicated::action type
action type
uint16_t srsConfigIndex
SRS config index.
Definition: lte-rrc-sap.h:139
SpeedStateScaleFactors timeToTriggerSf
time to trigger scale factors
Definition: lte-rrc-sap.h:534
MobilityStateParameters mobilityStateParameters
mobility state parameters
Definition: lte-rrc-sap.h:533
enum ns3::LteRrcSap::SpeedStatePars::action type
action type
uint8_t sfHigh
scale factor high
Definition: lte-rrc-sap.h:520
uint8_t sfMedium
scale factor medium
Definition: lte-rrc-sap.h:519
SrbToAddMod structure.
Definition: lte-rrc-sap.h:232
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:234
uint8_t srbIdentity
SB identity.
Definition: lte-rrc-sap.h:233
CellAccessRelatedInfo cellAccessRelatedInfo
cell access related info
Definition: lte-rrc-sap.h:616
RadioResourceConfigCommonSib radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:623
uint8_t range
Value range used in RSRP/RSRQ threshold.
Definition: lte-rrc-sap.h:362
enum ns3::LteRrcSap::ThresholdEutra::@63 choice
Threshold enumeration.
Asn1EncodingSuite asn1EncodingSuite