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