A Discrete-Event Network Simulator
API
lte-rrc-header.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Lluis Parcerisa <lparcerisa@cttc.cat>
19  * Modified by:
20  * Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015)
21  * Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
22  */
23 
24 #include "ns3/log.h"
25 #include "ns3/lte-rrc-header.h"
26 
27 #include <stdio.h>
28 #include <sstream>
29 
30 #define MAX_DRB 11 // According to section 6.4 3GPP TS 36.331
31 #define MAX_EARFCN 262143
32 #define MAX_RAT_CAPABILITIES 8
33 #define MAX_SI_MESSAGE 32
34 #define MAX_SIB 32
35 
36 #define MAX_REPORT_CONFIG_ID 32
37 #define MAX_OBJECT_ID 32
38 #define MAX_MEAS_ID 32
39 #define MAX_CELL_MEAS 32
40 #define MAX_CELL_REPORT 8
41 
42 #define MAX_SCELL_REPORT 5
43 #define MAX_SCELL_CONF 5
44 namespace ns3 {
45 
46 NS_LOG_COMPONENT_DEFINE ("RrcHeader");
47 
48 
51 {
52 }
53 
54 TypeId
56 {
57  static TypeId tid = TypeId ("ns3::RrcAsn1Header")
58  .SetParent<Header> ()
59  .SetGroupName("Lte")
60  ;
61  return tid;
62 }
63 
64 TypeId
66 {
67  return GetTypeId ();
68 }
69 
70 int
72 {
73  return m_messageType;
74 }
75 
76 int
77 RrcAsn1Header::BandwidthToEnum (uint16_t bandwidth) const
78 {
79  int n;
80  switch (bandwidth)
81  {
82  case 6: n = 0; break;
83  case 15: n = 1; break;
84  case 25: n = 2; break;
85  case 50: n = 3; break;
86  case 75: n = 4; break;
87  case 100: n = 5; break;
88  default:
89  NS_FATAL_ERROR ("Wrong bandwidth: " << bandwidth);
90  }
91  return n;
92 }
93 
94 uint16_t
96 {
97  uint16_t bw;
98  switch (n)
99  {
100  case 0: bw = 6; break;
101  case 1: bw = 15; break;
102  case 2: bw = 25; break;
103  case 3: bw = 50; break;
104  case 4: bw = 75; break;
105  case 5: bw = 100; break;
106  default:
107  NS_FATAL_ERROR ("Wrong enum value for bandwidth: " << n);
108  }
109  return bw;
110 }
111 
112 void
113 RrcAsn1Header::SerializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> drbToAddModList) const
114 {
115  // Serialize DRB-ToAddModList sequence-of
116  SerializeSequenceOf (drbToAddModList.size (),MAX_DRB,1);
117 
118  // Serialize the elements in the sequence-of list
119  std::list<LteRrcSap::DrbToAddMod>::iterator it = drbToAddModList.begin ();
120  for (; it != drbToAddModList.end (); it++)
121  {
122  // Serialize DRB-ToAddMod sequence
123  // 5 otional fields. Extension marker is present.
124  std::bitset<5> drbToAddModListOptionalFieldsPresent = std::bitset<5> ();
125  drbToAddModListOptionalFieldsPresent.set (4,1); // eps-BearerIdentity present
126  drbToAddModListOptionalFieldsPresent.set (3,0); // pdcp-Config not present
127  drbToAddModListOptionalFieldsPresent.set (2,1); // rlc-Config present
128  drbToAddModListOptionalFieldsPresent.set (1,1); // logicalChannelIdentity present
129  drbToAddModListOptionalFieldsPresent.set (0,1); // logicalChannelConfig present
130  SerializeSequence (drbToAddModListOptionalFieldsPresent,true);
131 
132  // Serialize eps-BearerIdentity::=INTEGER (0..15)
133  SerializeInteger (it->epsBearerIdentity,0,15);
134 
135  // Serialize drb-Identity ::= INTEGER (1..32)
136  SerializeInteger (it->drbIdentity,1,32);
137 
138  switch (it->rlcConfig.choice)
139  {
141  // Serialize rlc-Config choice
142  SerializeChoice (4,1,true);
143 
144  // Serialize UL-UM-RLC
145  SerializeSequence (std::bitset<0> (),false);
146  SerializeEnum (2,0); // sn-FieldLength
147 
148  // Serialize DL-UM-RLC
149  SerializeSequence (std::bitset<0> (),false);
150  SerializeEnum (2,0); // sn-FieldLength
151  SerializeEnum (32,0); // t-Reordering
152  break;
153 
155  // Serialize rlc-Config choice
156  SerializeChoice (4,2,true);
157 
158  // Serialize UL-UM-RLC
159  SerializeSequence (std::bitset<0> (),false);
160  SerializeEnum (2,0); // sn-FieldLength
161  break;
162 
164  // Serialize rlc-Config choice
165  SerializeChoice (4,3,true);
166 
167  // Serialize DL-UM-RLC
168  SerializeSequence (std::bitset<0> (),false);
169  SerializeEnum (2,0); // sn-FieldLength
170  SerializeEnum (32,0); // t-Reordering
171  break;
172 
174  default:
175  // Serialize rlc-Config choice
176  SerializeChoice (4,0,true);
177 
178  // Serialize UL-AM-RLC
179  SerializeSequence (std::bitset<0> (),false);
180  SerializeEnum (64,0); // t-PollRetransmit
181  SerializeEnum (8,0); // pollPDU
182  SerializeEnum (16,0); // pollByte
183  SerializeEnum (8,0); // maxRetxThreshold
184 
185  // Serialize DL-AM-RLC
186  SerializeSequence (std::bitset<0> (),false);
187  SerializeEnum (32,0); // t-Reordering
188  SerializeEnum (64,0); // t-StatusProhibit
189  break;
190  }
191 
192  // Serialize logicalChannelIdentity ::=INTEGER (3..10)
193  SerializeInteger (it->logicalChannelIdentity,3,10);
194 
195  // Serialize logicalChannelConfig
196  SerializeLogicalChannelConfig (it->logicalChannelConfig);
197  }
198 }
199 
200 void
201 RrcAsn1Header::SerializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> srbToAddModList) const
202 {
203  // Serialize SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod
204  SerializeSequenceOf (srbToAddModList.size (),2,1);
205 
206  // Serialize the elements in the sequence-of list
207  std::list<LteRrcSap::SrbToAddMod>::iterator it = srbToAddModList.begin ();
208  for (; it != srbToAddModList.end (); it++)
209  {
210  // Serialize SRB-ToAddMod sequence
211  // 2 otional fields. Extension marker is present.
212  std::bitset<2> srbToAddModListOptionalFieldsPresent = std::bitset<2> ();
213  srbToAddModListOptionalFieldsPresent.set (1,0); // rlc-Config not present
214  srbToAddModListOptionalFieldsPresent.set (0,1); // logicalChannelConfig present
215  SerializeSequence (srbToAddModListOptionalFieldsPresent,true);
216 
217  // Serialize srb-Identity ::= INTEGER (1..2)
218  SerializeInteger (it->srbIdentity,1,2);
219 
220  // Serialize logicalChannelConfig choice
221  // 2 options, selected option 0 (var "explicitValue", of type LogicalChannelConfig)
222  SerializeChoice (2,0,false);
223 
224  // Serialize LogicalChannelConfig
225  SerializeLogicalChannelConfig (it->logicalChannelConfig);
226  }
227 }
228 
229 void
231 {
232  // Serialize LogicalChannelConfig sequence
233  // 1 optional field (ul-SpecificParameters), which is present. Extension marker present.
234  SerializeSequence (std::bitset<1> (1),true);
235 
236  // Serialize ul-SpecificParameters sequence
237  // 1 optional field (logicalChannelGroup), which is present. No extension marker.
238  SerializeSequence (std::bitset<1> (1),false);
239 
240  // Serialize priority ::= INTEGER (1..16)
241  SerializeInteger (logicalChannelConfig.priority,1,16);
242 
243  // Serialize prioritisedBitRate
244  int prioritizedBitRate;
245  switch (logicalChannelConfig.prioritizedBitRateKbps)
246  {
247  case 0:
248  prioritizedBitRate = 0;
249  break;
250  case 8:
251  prioritizedBitRate = 1;
252  break;
253  case 16:
254  prioritizedBitRate = 2;
255  break;
256  case 32:
257  prioritizedBitRate = 3;
258  break;
259  case 64:
260  prioritizedBitRate = 4;
261  break;
262  case 128:
263  prioritizedBitRate = 5;
264  break;
265  case 256:
266  prioritizedBitRate = 6;
267  break;
268  default:
269  prioritizedBitRate = 7; // Infinity
270  }
271  SerializeEnum (16,prioritizedBitRate);
272 
273  // Serialize bucketSizeDuration
274  int bucketSizeDuration;
275  switch (logicalChannelConfig.bucketSizeDurationMs)
276  {
277  case 50:
278  bucketSizeDuration = 0;
279  break;
280  case 100:
281  bucketSizeDuration = 1;
282  break;
283  case 150:
284  bucketSizeDuration = 2;
285  break;
286  case 300:
287  bucketSizeDuration = 3;
288  break;
289  case 500:
290  bucketSizeDuration = 4;
291  break;
292  case 1000:
293  bucketSizeDuration = 5;
294  break;
295  default:
296  bucketSizeDuration = 5;
297  }
298  SerializeEnum (8,bucketSizeDuration);
299 
300  // Serialize logicalChannelGroup ::= INTEGER (0..3)
301  SerializeInteger (logicalChannelConfig.logicalChannelGroup,0,3);
302 }
303 
304 void
306 {
307  // Serialize PhysicalConfigDedicated Sequence
308  std::bitset<10> optionalFieldsPhysicalConfigDedicated;
309  optionalFieldsPhysicalConfigDedicated.set (9,physicalConfigDedicated.havePdschConfigDedicated); // pdsch-ConfigDedicated
310  optionalFieldsPhysicalConfigDedicated.set (8,0); // pucch-ConfigDedicated not present
311  optionalFieldsPhysicalConfigDedicated.set (7,0); // pusch-ConfigDedicated not present
312  optionalFieldsPhysicalConfigDedicated.set (6,0); // uplinkPowerControlDedicated not present
313  optionalFieldsPhysicalConfigDedicated.set (5,0); // tpc-PDCCH-ConfigPUCCH not present
314  optionalFieldsPhysicalConfigDedicated.set (4,0); // tpc-PDCCH-ConfigPUSCH not present
315  optionalFieldsPhysicalConfigDedicated.set (3,0); // cqi-ReportConfig not present
316  optionalFieldsPhysicalConfigDedicated.set (2,physicalConfigDedicated.haveSoundingRsUlConfigDedicated); // soundingRS-UL-ConfigDedicated
317  optionalFieldsPhysicalConfigDedicated.set (1,physicalConfigDedicated.haveAntennaInfoDedicated); // antennaInfo
318  optionalFieldsPhysicalConfigDedicated.set (0,0); // schedulingRequestConfig not present
319  SerializeSequence (optionalFieldsPhysicalConfigDedicated,true);
320 
321  if (physicalConfigDedicated.havePdschConfigDedicated)
322  {
323  // Serialize Pdsch-ConfigDedicated Sequence:
324  // 0 optional / default fields, no extension marker.
325  SerializeSequence (std::bitset<0> (),false);
326 
327  // Serialize p-a
328  // Assuming the value in the struct is the enum index
329  SerializeEnum (8,physicalConfigDedicated.pdschConfigDedicated.pa);
330 
331  // Serialize release
332  SerializeNull ();
333  }
334 
335  if (physicalConfigDedicated.haveSoundingRsUlConfigDedicated)
336  {
337  // Serialize SoundingRS-UL-ConfigDedicated choice:
338  switch (physicalConfigDedicated.soundingRsUlConfigDedicated.type)
339  {
341  SerializeChoice (2,0,false);
342  SerializeNull ();
343  break;
344 
346  default:
347  // 2 options, selected: 1 (setup)
348  SerializeChoice (2,1,false);
349 
350  // Serialize setup sequence
351  // 0 optional / default fields, no extension marker.
352  SerializeSequence (std::bitset<0> (),false);
353 
354  // Serialize srs-Bandwidth
355  SerializeEnum (4,physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth);
356 
357  // Serialize srs-HoppingBandwidth
358  SerializeEnum (4,0);
359 
360  // Serialize freqDomainPosition
361  SerializeInteger (0,0,23);
362 
363  // Serialize duration
364  SerializeBoolean (false);
365 
366  // Serialize srs-ConfigIndex
367  SerializeInteger (physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex,0,1023);
368 
369  // Serialize transmissionComb
370  SerializeInteger (0,0,1);
371 
372  // Serialize cyclicShift
373  SerializeEnum (8,0);
374 
375  break;
376  }
377  }
378 
379  if (physicalConfigDedicated.haveAntennaInfoDedicated)
380  {
381  // Serialize antennaInfo choice
382  // 2 options. Selected: 0 ("explicitValue" of type "AntennaInfoDedicated")
383  SerializeChoice (2,0,false);
384 
385  // Serialize AntennaInfoDedicated sequence
386  // 1 optional parameter, not present. No extension marker.
387  SerializeSequence (std::bitset<1> (0),false);
388 
389  // Serialize transmissionMode
390  // Assuming the value in the struct is the enum index
391  SerializeEnum (8,physicalConfigDedicated.antennaInfo.transmissionMode);
392 
393  // Serialize ue-TransmitAntennaSelection choice
394  SerializeChoice (2,0,false);
395 
396  // Serialize release
397  SerializeNull ();
398  }
399 }
400 
401 void
403 {
404  bool isSrbToAddModListPresent = !radioResourceConfigDedicated.srbToAddModList.empty ();
405  bool isDrbToAddModListPresent = !radioResourceConfigDedicated.drbToAddModList.empty ();
406  bool isDrbToReleaseListPresent = !radioResourceConfigDedicated.drbToReleaseList.empty ();
407 
408  // 6 optional fields. Extension marker is present.
409  std::bitset<6> optionalFieldsPresent = std::bitset<6> ();
410  optionalFieldsPresent.set (5,isSrbToAddModListPresent); // srb-ToAddModList present
411  optionalFieldsPresent.set (4,isDrbToAddModListPresent); // drb-ToAddModList present
412  optionalFieldsPresent.set (3,isDrbToReleaseListPresent); // drb-ToReleaseList present
413  optionalFieldsPresent.set (2,0); // mac-MainConfig not present
414  optionalFieldsPresent.set (1,0); // sps-Config not present
415  optionalFieldsPresent.set (0,(radioResourceConfigDedicated.havePhysicalConfigDedicated) ? 1 : 0);
416  SerializeSequence (optionalFieldsPresent,true);
417 
418  // Serialize srbToAddModList
419  if (isSrbToAddModListPresent)
420  {
421  SerializeSrbToAddModList (radioResourceConfigDedicated.srbToAddModList);
422  }
423 
424  // Serialize drbToAddModList
425  if (isDrbToAddModListPresent)
426  {
427  SerializeDrbToAddModList (radioResourceConfigDedicated.drbToAddModList);
428  }
429 
430  // Serialize drbToReleaseList
431  if (isDrbToReleaseListPresent)
432  {
433  SerializeSequenceOf (radioResourceConfigDedicated.drbToReleaseList.size (),MAX_DRB,1);
434  std::list<uint8_t>::iterator it = radioResourceConfigDedicated.drbToReleaseList.begin ();
435  for (; it != radioResourceConfigDedicated.drbToReleaseList.end (); it++)
436  {
437  // DRB-Identity ::= INTEGER (1..32)
438  SerializeInteger (*it,1,32);
439  }
440  }
441 
442  if (radioResourceConfigDedicated.havePhysicalConfigDedicated)
443  {
444  SerializePhysicalConfigDedicated (radioResourceConfigDedicated.physicalConfigDedicated);
445  }
446 }
447 
448 void
450 {
451  // 3 optional fields, no extension marker.
452  std::bitset<3> sysInfoBlk1Opts;
453  sysInfoBlk1Opts.set (2,0); // p-Max absent
454  sysInfoBlk1Opts.set (1,0); // tdd-Config absent
455  sysInfoBlk1Opts.set (0,0); // nonCriticalExtension absent
456  SerializeSequence (sysInfoBlk1Opts,false);
457 
458  // Serialize cellAccessRelatedInfo
459  // 1 optional field (csgIdentity) which is present, no extension marker.
460  SerializeSequence (std::bitset<1> (1),false);
461 
462  // Serialize plmn-IdentityList
463  SerializeSequenceOf (1,6,1);
464 
465  // PLMN-IdentityInfo
466  SerializeSequence (std::bitset<0> (),false);
467 
469 
470  // Serialize trackingAreaCode
471  SerializeBitstring (std::bitset<16> (0));
472  // Serialize cellIdentity
473  SerializeBitstring (std::bitset<28> (systemInformationBlockType1.cellAccessRelatedInfo.cellIdentity));
474  // Serialize cellBarred
475  SerializeEnum (2,0);
476  // Serialize intraFreqReselection
477  SerializeEnum (2,0);
478  // Serialize csg-Indication
479  SerializeBoolean (systemInformationBlockType1.cellAccessRelatedInfo.csgIndication);
480  // Serialize csg-Identity
481  SerializeBitstring (std::bitset<27> (systemInformationBlockType1.cellAccessRelatedInfo.csgIdentity));
482 
483  // Serialize cellSelectionInfo
484  SerializeSequence (std::bitset<1> (0),false);
485  // Serialize q-RxLevMin
486  SerializeInteger (-50,-70,-22);
487 
488  // Serialize freqBandIndicator
489  SerializeInteger (1,1,64);
490 
491  // Serialize schedulingInfoList
493  // SchedulingInfo
494  SerializeSequence (std::bitset<0> (),false);
495  // si-Periodicity
496  SerializeEnum (7,0);
497  // sib-MappingInfo
498  SerializeSequenceOf (0,MAX_SIB - 1,0);
499 
500  // Serialize si-WindowLength
501  SerializeEnum (7,0);
502 
503  // Serialize systemInfoValueTag
504  SerializeInteger (0,0,31);
505 }
506 
507 void
509 {
510  // 9 optional fields. Extension marker yes.
511  std::bitset<9> rrCfgCmmOpts;
512  rrCfgCmmOpts.set (8,1); // rach-ConfigCommon is present
513  rrCfgCmmOpts.set (7,0); // pdsch-ConfigCommon not present
514  rrCfgCmmOpts.set (6,0); // phich-Config not present
515  rrCfgCmmOpts.set (5,0); // pucch-ConfigCommon not present
516  rrCfgCmmOpts.set (4,0); // soundingRS-UL-ConfigCommon not present
517  rrCfgCmmOpts.set (3,0); // uplinkPowerControlCommon not present
518  rrCfgCmmOpts.set (2,0); // antennaInfoCommon not present
519  rrCfgCmmOpts.set (1,0); // p-Max not present
520  rrCfgCmmOpts.set (0,0); // tdd-Config not present
521 
522  SerializeSequence (rrCfgCmmOpts,true);
523 
524  if (rrCfgCmmOpts[8])
525  {
526  // Serialize RACH-ConfigCommon
527  SerializeRachConfigCommon (radioResourceConfigCommon.rachConfigCommon);
528  }
529 
530  // Serialize PRACH-Config
531  // 1 optional, 0 extension marker.
532  SerializeSequence (std::bitset<1> (0),false);
533 
534  // Serialize PRACH-Config rootSequenceIndex
535  SerializeInteger (0,0,1023);
536 
537  // Serialize PUSCH-ConfigCommon
538  SerializeSequence (std::bitset<0> (),false);
539 
540  // Serialize pusch-ConfigBasic
541  SerializeSequence (std::bitset<0> (),false);
542  SerializeInteger (1,1,4);
543  SerializeEnum (2,0);
544  SerializeInteger (0,0,98);
545  SerializeBoolean (false);
546 
547  // Serialize UL-ReferenceSignalsPUSCH
548  SerializeSequence (std::bitset<0> (),false);
549  SerializeBoolean (false);
550  SerializeInteger (0,0,29);
551  SerializeBoolean (false);
552  SerializeInteger (4,0,7);
553 
554  // Serialize UL-CyclicPrefixLength
555  SerializeEnum (2,0);
556 }
557 
558 void
560 {
561  SerializeSequence (std::bitset<0> (0),true);
562 
563  // rach-ConfigCommon
564  SerializeRachConfigCommon (radioResourceConfigCommonSib.rachConfigCommon);
565 
566  // bcch-Config
567  SerializeSequence (std::bitset<0> (0),false);
568  SerializeEnum (4,0); // modificationPeriodCoeff
569  // pcch-Config
570  SerializeSequence (std::bitset<0> (0),false);
571  SerializeEnum (4,0); // defaultPagingCycle
572  SerializeEnum (8,0); // nB
573  // prach-Config
574  SerializeSequence (std::bitset<1> (0),false);
575  SerializeInteger (0,0,1023); // rootSequenceIndex
576  // pdsch-ConfigCommon
577  SerializeSequence (std::bitset<0> (0),false);
578  SerializeInteger (0,-60,50); // referenceSignalPower
579  SerializeInteger (0,0,3); // p-b
580  // pusch-ConfigCommon
581  SerializeSequence (std::bitset<0> (0),false);
582  SerializeSequence (std::bitset<0> (0),false); // pusch-ConfigBasic
583  SerializeInteger (1,1,4); // n-SB
584  SerializeEnum (2,0); // hoppingMode
585  SerializeInteger (0,0,98); // pusch-HoppingOffset
586  SerializeBoolean (false); // enable64QAM
587  SerializeSequence (std::bitset<0> (0),false); // UL-ReferenceSignalsPUSCH
588  SerializeBoolean (false); // groupHoppingEnabled
589  SerializeInteger (0,0,29); // groupAssignmentPUSCH
590  SerializeBoolean (false); // sequenceHoppingEnabled
591  SerializeInteger (0,0,7); // cyclicShift
592  // pucch-ConfigCommon
593  SerializeSequence (std::bitset<0> (0),false);
594  SerializeEnum (3,0); // deltaPUCCH-Shift
595  SerializeInteger (0,0,98); // nRB-CQI
596  SerializeInteger (0,0,7); // nCS-AN
597  SerializeInteger (0,0,2047); // n1PUCCH-AN
598  // soundingRS-UL-ConfigCommon
599  SerializeChoice (2,0,false);
600  SerializeNull (); // release
601  // uplinkPowerControlCommon
602  SerializeSequence (std::bitset<0> (0),false);
603  SerializeInteger (0,-126,24); // p0-NominalPUSCH
604  SerializeEnum (8,0); // alpha
605  SerializeInteger (-110,-127,-96); // p0-NominalPUCCH
606  SerializeSequence (std::bitset<0> (0),false); // deltaFList-PUCCH
607  SerializeEnum (3,0); // deltaF-PUCCH-Format1
608  SerializeEnum (3,0); // deltaF-PUCCH-Format1b
609  SerializeEnum (4,0); // deltaF-PUCCH-Format2
610  SerializeEnum (3,0); // deltaF-PUCCH-Format2a
611  SerializeEnum (3,0); // deltaF-PUCCH-Format2b
612  SerializeInteger (0,-1,6);
613  // ul-CyclicPrefixLength
614  SerializeEnum (2,0);
615 }
616 
617 void
619 {
620  SerializeSequence (std::bitset<2> (0),true);
621 
622  // RadioResourceConfigCommonSib
624 
625  // ue-TimersAndConstants
626  SerializeSequence (std::bitset<0> (0),true);
627  SerializeEnum (8,0); // t300
628  SerializeEnum (8,0); // t301
629  SerializeEnum (7,0); // t310
630  SerializeEnum (8,0); // n310
631  SerializeEnum (7,0); // t311
632  SerializeEnum (8,0); // n311
633 
634  // freqInfo
635  SerializeSequence (std::bitset<2> (3),false);
636  SerializeInteger ((int) systemInformationBlockType2.freqInfo.ulCarrierFreq, 0, MAX_EARFCN);
637  SerializeEnum (6, BandwidthToEnum (systemInformationBlockType2.freqInfo.ulBandwidth));
638 
639  SerializeInteger (29,1,32); // additionalSpectrumEmission
640  // timeAlignmentTimerCommon
641  SerializeEnum (8,0);
642 }
643 
644 void
646 {
647  // Watchdog: if list has 0 elements, set boolean to false
648  if (measResults.measResultListEutra.empty ())
649  {
650  measResults.haveMeasResultNeighCells = false;
651  }
652 
653  std::bitset<4> measResultOptional;
654  measResultOptional.set (3, measResults.haveScellsMeas);
655  measResultOptional.set (2, false); //LocationInfo-r10
656  measResultOptional.set (1, false); // MeasResultForECID-r9
657  measResultOptional.set (0, measResults.haveMeasResultNeighCells);
658  SerializeSequence(measResultOptional,true);
659 
660  // Serialize measId
661  SerializeInteger (measResults.measId,1,MAX_MEAS_ID);
662 
663  // Serialize measResultServCell sequence
664  SerializeSequence (std::bitset<0> (0),false);
665 
666  // Serialize rsrpResult
667  SerializeInteger (measResults.rsrpResult,0,97);
668 
669  // Serialize rsrqResult
670  SerializeInteger (measResults.rsrqResult,0,34);
671 
672  if (measResults.haveMeasResultNeighCells)
673  {
674  // Serialize Choice = 0 (MeasResultListEUTRA)
675  SerializeChoice (4,0,false);
676 
677  // Serialize measResultNeighCells
679 
680  // serialize MeasResultEutra elements in the list
681  std::list<LteRrcSap::MeasResultEutra>::iterator it;
682  for (it = measResults.measResultListEutra.begin (); it != measResults.measResultListEutra.end (); it++)
683  {
684  SerializeSequence (std::bitset<1> (it->haveCgiInfo),false);
685 
686  // Serialize PhysCellId
687  SerializeInteger (it->physCellId, 0, 503);
688 
689  // Serialize CgiInfo
690  if (it->haveCgiInfo)
691  {
692  SerializeSequence (std::bitset<1> (it->cgiInfo.plmnIdentityList.size ()),false);
693 
694  // Serialize cellGlobalId
695  SerializeSequence (std::bitset<0> (0),false);
696  SerializePlmnIdentity (it->cgiInfo.plmnIdentity);
697  SerializeBitstring (std::bitset<28> (it->cgiInfo.cellIdentity));
698 
699  // Serialize trackingAreaCode
700  SerializeBitstring (std::bitset<16> (it->cgiInfo.trackingAreaCode));
701 
702  // Serialize plmn-IdentityList
703  if (!it->cgiInfo.plmnIdentityList.empty ())
704  {
705  SerializeSequenceOf (it->cgiInfo.plmnIdentityList.size (),5,1);
706  std::list<uint32_t>::iterator it2;
707  for (it2 = it->cgiInfo.plmnIdentityList.begin (); it2 != it->cgiInfo.plmnIdentityList.end (); it2++)
708  {
709  SerializePlmnIdentity (*it2);
710  }
711  }
712  }
713 
714  // Serialize measResult
715  std::bitset<2> measResultFieldsPresent;
716  measResultFieldsPresent[1] = it->haveRsrpResult;
717  measResultFieldsPresent[0] = it->haveRsrqResult;
718  SerializeSequence (measResultFieldsPresent,true);
719 
720  if (it->haveRsrpResult)
721  {
722  SerializeInteger (it->rsrpResult,0,97);
723  }
724 
725  if (it->haveRsrqResult)
726  {
727  SerializeInteger (it->rsrqResult,0,34);
728  }
729  }
730  }
731  if (measResults.haveScellsMeas)
732  {
733  // Serialize measResultNeighCells
735  // serialize MeasResultServFreqList-r10 elements in the list
736  std::list<LteRrcSap::MeasResultScell>::iterator it;
737  for (it = measResults.measScellResultList.measResultScell.begin (); it != measResults.measScellResultList.measResultScell.end (); it++)
738  {
739  // Serialize measId
740  SerializeInteger (it->servFreqId,0,MAX_MEAS_ID); // ToDo: change with FreqId, currently is the componentCarrierId
741  // Serialize MeasResultServFreqList
742  std::bitset<2> measResultScellPresent;
743  measResultScellPresent[0] = measResults.measScellResultList.haveMeasurementResultsServingSCells;
744  measResultScellPresent[1] = measResults.measScellResultList.haveMeasurementResultsNeighCell; // Not implemented
745  SerializeSequence (measResultScellPresent,true);
746 
747  // Serialize measResult
748  std::bitset<2> measResultScellFieldsPresent;
749  measResultScellFieldsPresent[1] = it->haveRsrpResult;
750  measResultScellFieldsPresent[0] = it->haveRsrqResult;
751  SerializeSequence (measResultScellFieldsPresent,true);
752 
753  if (it->haveRsrpResult)
754  {
755  SerializeInteger (it->rsrpResult,0,97);
756  }
757 
758  if (it->haveRsrqResult)
759  {
760  SerializeInteger (it->rsrqResult,0,34);
761  }
762 
763  }
764  }
765 }
766 
767 void
769 {
770  // plmn-Identity sequence, mcc is optional, no extension marker
771  SerializeSequence (std::bitset<1> (0), false);
772 
773  // Serialize mnc
774  int nDig = (plmnId > 99) ? 3 : 2;
775 
776  SerializeSequenceOf (nDig,3,2);
777  for (int i = nDig - 1; i >= 0; i--)
778  {
779  int n = floor (plmnId / pow (10,i));
780  SerializeInteger (n,0,9);
781  plmnId -= n * pow (10,i);
782  }
783 
784  // cellReservedForOperatorUse
785  SerializeEnum (2,0);
786 }
787 
788 void
790 {
791  // rach-ConfigCommon
792  SerializeSequence (std::bitset<0> (0),true);
793 
794  // preambleInfo
795  SerializeSequence (std::bitset<1> (0),false);
796 
797  // numberOfRA-Preambles
798  switch (rachConfigCommon.preambleInfo.numberOfRaPreambles)
799  {
800  case 4:
801  SerializeEnum (16,0);
802  break;
803  case 8:
804  SerializeEnum (16,1);
805  break;
806  case 12:
807  SerializeEnum (16,2);
808  break;
809  case 16:
810  SerializeEnum (16,3);
811  break;
812  case 20:
813  SerializeEnum (16,4);
814  break;
815  case 24:
816  SerializeEnum (16,5);
817  break;
818  case 28:
819  SerializeEnum (16,6);
820  break;
821  case 32:
822  SerializeEnum (16,7);
823  break;
824  case 36:
825  SerializeEnum (16,8);
826  break;
827  case 40:
828  SerializeEnum (16,9);
829  break;
830  case 44:
831  SerializeEnum (16,10);
832  break;
833  case 48:
834  SerializeEnum (16,11);
835  break;
836  case 52:
837  SerializeEnum (16,12);
838  break;
839  case 56:
840  SerializeEnum (16,13);
841  break;
842  case 60:
843  SerializeEnum (16,14);
844  break;
845  case 64:
846  SerializeEnum (16,15);
847  break;
848  default:
849  NS_FATAL_ERROR ("Wrong numberOfRA-Preambles value");
850  }
851 
852  SerializeSequence (std::bitset<0> (0),false); // powerRampingParameters
853  SerializeEnum (4,0); // powerRampingStep
854  SerializeEnum (16,0); // preambleInitialReceivedTargetPower
855  SerializeSequence (std::bitset<0> (0),false); // ra-SupervisionInfo
856 
857  // preambleTransMax
858  switch (rachConfigCommon.raSupervisionInfo.preambleTransMax)
859  {
860  case 3:
861  SerializeEnum (11,0);
862  break;
863  case 4:
864  SerializeEnum (11,1);
865  break;
866  case 5:
867  SerializeEnum (11,2);
868  break;
869  case 6:
870  SerializeEnum (11,3);
871  break;
872  case 7:
873  SerializeEnum (11,4);
874  break;
875  case 8:
876  SerializeEnum (11,5);
877  break;
878  case 10:
879  SerializeEnum (11,6);
880  break;
881  case 20:
882  SerializeEnum (11,7);
883  break;
884  case 50:
885  SerializeEnum (11,8);
886  break;
887  case 100:
888  SerializeEnum (11,9);
889  break;
890  case 200:
891  SerializeEnum (11,10);
892  break;
893  default:
894  SerializeEnum (11,0);
895  }
896 
897  // ra-ResponseWindowSize
898  switch (rachConfigCommon.raSupervisionInfo.raResponseWindowSize)
899  {
900  case 2:
901  SerializeEnum (8,0);
902  break;
903  case 3:
904  SerializeEnum (8,1);
905  break;
906  case 4:
907  SerializeEnum (8,2);
908  break;
909  case 5:
910  SerializeEnum (8,3);
911  break;
912  case 6:
913  SerializeEnum (8,4);
914  break;
915  case 7:
916  SerializeEnum (8,5);
917  break;
918  case 8:
919  SerializeEnum (8,6);
920  break;
921  case 10:
922  SerializeEnum (8,7);
923  break;
924  default:
925  SerializeEnum (8,0);
926  }
927 
928  SerializeEnum (8,0); // mac-ContentionResolutionTimer
929  SerializeInteger (1,1,8); // maxHARQ-Msg3Tx
930 
931  // connEstFailCount
932  switch (rachConfigCommon.txFailParam.connEstFailCount)
933  {
934  case 1:
935  SerializeEnum (8,1);
936  break;
937  case 2:
938  SerializeEnum (8,2);
939  break;
940  case 3:
941  SerializeEnum (8,3);
942  break;
943  case 4:
944  SerializeEnum (8,4);
945  break;
946  default:
947  SerializeEnum (8,1);
948  }
949 }
950 
951 void
952 RrcAsn1Header::SerializeQoffsetRange (int8_t qOffsetRange) const
953 {
954  switch (qOffsetRange)
955  {
956  case -24:
957  SerializeEnum (31,0);
958  break;
959  case -22:
960  SerializeEnum (31,1);
961  break;
962  case -20:
963  SerializeEnum (31,2);
964  break;
965  case -18:
966  SerializeEnum (31,3);
967  break;
968  case -16:
969  SerializeEnum (31,4);
970  break;
971  case -14:
972  SerializeEnum (31,5);
973  break;
974  case -12:
975  SerializeEnum (31,6);
976  break;
977  case -10:
978  SerializeEnum (31,7);
979  break;
980  case -8:
981  SerializeEnum (31,8);
982  break;
983  case -6:
984  SerializeEnum (31,9);
985  break;
986  case -5:
987  SerializeEnum (31,10);
988  break;
989  case -4:
990  SerializeEnum (31,11);
991  break;
992  case -3:
993  SerializeEnum (31,12);
994  break;
995  case -2:
996  SerializeEnum (31,13);
997  break;
998  case -1:
999  SerializeEnum (31,14);
1000  break;
1001  case 0:
1002  SerializeEnum (31,15);
1003  break;
1004  case 1:
1005  SerializeEnum (31,16);
1006  break;
1007  case 2:
1008  SerializeEnum (31,17);
1009  break;
1010  case 3:
1011  SerializeEnum (31,18);
1012  break;
1013  case 4:
1014  SerializeEnum (31,19);
1015  break;
1016  case 5:
1017  SerializeEnum (31,20);
1018  break;
1019  case 6:
1020  SerializeEnum (31,21);
1021  break;
1022  case 8:
1023  SerializeEnum (31,22);
1024  break;
1025  case 10:
1026  SerializeEnum (31,23);
1027  break;
1028  case 12:
1029  SerializeEnum (31,24);
1030  break;
1031  case 14:
1032  SerializeEnum (31,25);
1033  break;
1034  case 16:
1035  SerializeEnum (31,26);
1036  break;
1037  case 18:
1038  SerializeEnum (31,27);
1039  break;
1040  case 20:
1041  SerializeEnum (31,28);
1042  break;
1043  case 22:
1044  SerializeEnum (31,29);
1045  break;
1046  case 24:
1047  SerializeEnum (31,30);
1048  break;
1049  default:
1050  SerializeEnum (31,15);
1051  }
1052 }
1053 
1054 void
1056 {
1057  switch (thresholdEutra.choice)
1058  {
1060  SerializeChoice (2,0,false);
1061  SerializeInteger (thresholdEutra.range, 0, 97);
1062  break;
1064  default:
1065  SerializeChoice (2,1,false);
1066  SerializeInteger (thresholdEutra.range, 0, 34);
1067  }
1068 }
1069 
1070 void
1072 {
1073  // Serialize MeasConfig sequence
1074  // 11 optional fields, extension marker present
1075  std::bitset<11> measConfigOptional;
1076  measConfigOptional.set (10, !measConfig.measObjectToRemoveList.empty () );
1077  measConfigOptional.set (9, !measConfig.measObjectToAddModList.empty () );
1078  measConfigOptional.set (8, !measConfig.reportConfigToRemoveList.empty () );
1079  measConfigOptional.set (7, !measConfig.reportConfigToAddModList.empty () );
1080  measConfigOptional.set (6, !measConfig.measIdToRemoveList.empty () );
1081  measConfigOptional.set (5, !measConfig.measIdToAddModList.empty () );
1082  measConfigOptional.set (4, measConfig.haveQuantityConfig );
1083  measConfigOptional.set (3, measConfig.haveMeasGapConfig );
1084  measConfigOptional.set (2, measConfig.haveSmeasure );
1085  measConfigOptional.set (1, false ); // preRegistrationInfoHRPD
1086  measConfigOptional.set (0, measConfig.haveSpeedStatePars );
1087  SerializeSequence (measConfigOptional,true);
1088 
1089  if (!measConfig.measObjectToRemoveList.empty ())
1090  {
1092  for (std::list<uint8_t>::iterator it = measConfig.measObjectToRemoveList.begin (); it != measConfig.measObjectToRemoveList.end (); it++)
1093  {
1094  SerializeInteger (*it, 1, MAX_OBJECT_ID);
1095  }
1096  }
1097 
1098  if (!measConfig.measObjectToAddModList.empty ())
1099  {
1101  for (std::list<LteRrcSap::MeasObjectToAddMod>::iterator it = measConfig.measObjectToAddModList.begin (); it != measConfig.measObjectToAddModList.end (); it++)
1102  {
1103  SerializeSequence (std::bitset<0> (), false);
1104  SerializeInteger (it->measObjectId, 1, MAX_OBJECT_ID);
1105  SerializeChoice (4, 0, true); // Select MeasObjectEUTRA
1106 
1107  // Serialize measObjectEutra
1108  std::bitset<5> measObjOpts;
1109  measObjOpts.set (4,!it->measObjectEutra.cellsToRemoveList.empty () );
1110  measObjOpts.set (3,!it->measObjectEutra.cellsToAddModList.empty () );
1111  measObjOpts.set (2,!it->measObjectEutra.blackCellsToRemoveList.empty () );
1112  measObjOpts.set (1,!it->measObjectEutra.blackCellsToAddModList.empty () );
1113  measObjOpts.set (0,it->measObjectEutra.haveCellForWhichToReportCGI);
1114  SerializeSequence (measObjOpts, true);
1115 
1116  // Serialize carrierFreq
1117  SerializeInteger (it->measObjectEutra.carrierFreq, 0, MAX_EARFCN);
1118 
1119  // Serialize allowedMeasBandwidth
1120  SerializeEnum (6, BandwidthToEnum (it->measObjectEutra.allowedMeasBandwidth));
1121 
1122  SerializeBoolean (it->measObjectEutra.presenceAntennaPort1);
1123  SerializeBitstring (std::bitset<2> (it->measObjectEutra.neighCellConfig));
1124  SerializeQoffsetRange (it->measObjectEutra.offsetFreq);
1125 
1126  if (!it->measObjectEutra.cellsToRemoveList.empty ())
1127  {
1128  SerializeSequenceOf (it->measObjectEutra.cellsToRemoveList.size (),MAX_CELL_MEAS,1);
1129  for (std::list<uint8_t>::iterator it2 = it->measObjectEutra.cellsToRemoveList.begin (); it2 != it->measObjectEutra.cellsToRemoveList.end (); it2++)
1130  {
1131  SerializeInteger (*it2, 1, MAX_CELL_MEAS);
1132  }
1133  }
1134 
1135  if (!it->measObjectEutra.cellsToAddModList.empty ())
1136  {
1137  SerializeSequenceOf (it->measObjectEutra.cellsToAddModList.size (), MAX_CELL_MEAS, 1);
1138  for (std::list<LteRrcSap::CellsToAddMod>::iterator it2 = it->measObjectEutra.cellsToAddModList.begin (); it2 != it->measObjectEutra.cellsToAddModList.end (); it2++)
1139  {
1140  SerializeSequence (std::bitset<0> (), false);
1141 
1142  // Serialize cellIndex
1143  SerializeInteger (it2->cellIndex, 1, MAX_CELL_MEAS);
1144 
1145  // Serialize PhysCellId
1146  SerializeInteger (it2->physCellId,0,503);
1147 
1148  // Serialize cellIndividualOffset
1149  SerializeQoffsetRange (it2->cellIndividualOffset);
1150  }
1151  }
1152 
1153  if (!it->measObjectEutra.blackCellsToRemoveList.empty () )
1154  {
1155  SerializeSequenceOf (it->measObjectEutra.blackCellsToRemoveList.size (),MAX_CELL_MEAS,1);
1156  for (std::list<uint8_t>::iterator it2 = it->measObjectEutra.blackCellsToRemoveList.begin (); it2 != it->measObjectEutra.blackCellsToRemoveList.end (); it2++)
1157  {
1158  SerializeInteger (*it2, 1, MAX_CELL_MEAS);
1159  }
1160  }
1161 
1162  if (!it->measObjectEutra.blackCellsToAddModList.empty () )
1163  {
1164  SerializeSequenceOf (it->measObjectEutra.blackCellsToAddModList.size (), MAX_CELL_MEAS, 1);
1165  for (std::list<LteRrcSap::BlackCellsToAddMod>::iterator it2 = it->measObjectEutra.blackCellsToAddModList.begin (); it2 != it->measObjectEutra.blackCellsToAddModList.end (); it2++)
1166  {
1167  SerializeSequence (std::bitset<0> (),false);
1168  SerializeInteger (it2->cellIndex, 1, MAX_CELL_MEAS);
1169 
1170  // Serialize PhysCellIdRange
1171  // range optional
1172  std::bitset<1> rangePresent = std::bitset<1> (it2->physCellIdRange.haveRange);
1173  SerializeSequence (rangePresent,false);
1174  SerializeInteger (it2->physCellIdRange.start,0,503);
1175  if (it2->physCellIdRange.haveRange)
1176  {
1177  switch (it2->physCellIdRange.range)
1178  {
1179  case 4:
1180  SerializeEnum (16, 0);
1181  break;
1182  case 8:
1183  SerializeEnum (16, 1);
1184  break;
1185  case 12:
1186  SerializeEnum (16, 2);
1187  break;
1188  case 16:
1189  SerializeEnum (16, 3);
1190  break;
1191  case 24:
1192  SerializeEnum (16, 4);
1193  break;
1194  case 32:
1195  SerializeEnum (16, 5);
1196  break;
1197  case 48:
1198  SerializeEnum (16, 6);
1199  break;
1200  case 64:
1201  SerializeEnum (16, 7);
1202  break;
1203  case 84:
1204  SerializeEnum (16, 8);
1205  break;
1206  case 96:
1207  SerializeEnum (16, 9);
1208  break;
1209  case 128:
1210  SerializeEnum (16, 10);
1211  break;
1212  case 168:
1213  SerializeEnum (16, 11);
1214  break;
1215  case 252:
1216  SerializeEnum (16, 12);
1217  break;
1218  case 504:
1219  SerializeEnum (16, 13);
1220  break;
1221  default:
1222  SerializeEnum (16, 0);
1223  }
1224  }
1225  }
1226 
1227  }
1228 
1229  if (it->measObjectEutra.haveCellForWhichToReportCGI)
1230  {
1231  SerializeInteger (it->measObjectEutra.cellForWhichToReportCGI,0,503);
1232  }
1233  }
1234  }
1235 
1236 
1237  if (!measConfig.reportConfigToRemoveList.empty () )
1238  {
1240  for (std::list<uint8_t>::iterator it = measConfig.reportConfigToRemoveList.begin (); it != measConfig.reportConfigToRemoveList.end (); it++)
1241  {
1243  }
1244  }
1245 
1246  if (!measConfig.reportConfigToAddModList.empty () )
1247  {
1249  for (std::list<LteRrcSap::ReportConfigToAddMod>::iterator it = measConfig.reportConfigToAddModList.begin (); it != measConfig.reportConfigToAddModList.end (); it++)
1250  {
1251  SerializeSequence (std::bitset<0> (), false);
1252  SerializeInteger (it->reportConfigId,1,MAX_REPORT_CONFIG_ID);
1253  SerializeChoice (2,0,false); // reportConfigEUTRA
1254 
1255  // Serialize ReportConfigEUTRA
1256  SerializeSequence (std::bitset<0> (), true);
1257  switch (it->reportConfigEutra.triggerType)
1258  {
1260  SerializeChoice (2, 1, false);
1261  SerializeSequence (std::bitset<0> (),false);
1262  switch (it->reportConfigEutra.purpose)
1263  {
1265  SerializeEnum (2,1);
1266  break;
1268  default:
1269  SerializeEnum (2,0);
1270  }
1271  break;
1273  default:
1274  SerializeChoice (2, 0, false);
1275  SerializeSequence (std::bitset<0> (),false);
1276  switch (it->reportConfigEutra.eventId)
1277  {
1279  SerializeChoice (5, 0, true);
1280  SerializeSequence (std::bitset<0> (),false);
1281  SerializeThresholdEutra (it->reportConfigEutra.threshold1);
1282  break;
1284  SerializeChoice (5, 1, true);
1285  SerializeSequence (std::bitset<0> (),false);
1286  SerializeThresholdEutra (it->reportConfigEutra.threshold1);
1287  break;
1289  SerializeChoice (5, 2, true);
1290  SerializeSequence (std::bitset<0> (),false);
1291  SerializeInteger (it->reportConfigEutra.a3Offset,-30,30);
1292  SerializeBoolean (it->reportConfigEutra.reportOnLeave);
1293  break;
1295  SerializeChoice (5, 3, true);
1296  SerializeSequence (std::bitset<0> (),false);
1297  SerializeThresholdEutra (it->reportConfigEutra.threshold1);
1298  break;
1300  default:
1301  SerializeChoice (5, 4, true);
1302  SerializeSequence (std::bitset<0> (),false);
1303  SerializeThresholdEutra (it->reportConfigEutra.threshold1);
1304  SerializeThresholdEutra (it->reportConfigEutra.threshold2);
1305  }
1306 
1307  SerializeInteger (it->reportConfigEutra.hysteresis, 0, 30);
1308 
1309  switch (it->reportConfigEutra.timeToTrigger)
1310  {
1311  case 0:
1312  SerializeEnum (16, 0);
1313  break;
1314  case 40:
1315  SerializeEnum (16, 1);
1316  break;
1317  case 64:
1318  SerializeEnum (16, 2);
1319  break;
1320  case 80:
1321  SerializeEnum (16, 3);
1322  break;
1323  case 100:
1324  SerializeEnum (16, 4);
1325  break;
1326  case 128:
1327  SerializeEnum (16, 5);
1328  break;
1329  case 160:
1330  SerializeEnum (16, 6);
1331  break;
1332  case 256:
1333  SerializeEnum (16, 7);
1334  break;
1335  case 320:
1336  SerializeEnum (16, 8);
1337  break;
1338  case 480:
1339  SerializeEnum (16, 9);
1340  break;
1341  case 512:
1342  SerializeEnum (16, 10);
1343  break;
1344  case 640:
1345  SerializeEnum (16, 11);
1346  break;
1347  case 1024:
1348  SerializeEnum (16, 12);
1349  break;
1350  case 1280:
1351  SerializeEnum (16, 13);
1352  break;
1353  case 2560:
1354  SerializeEnum (16, 14);
1355  break;
1356  case 5120:
1357  default:
1358  SerializeEnum (16, 15);
1359  }
1360  } // end trigger type
1361 
1362  // Serialize triggerQuantity
1363  if (it->reportConfigEutra.triggerQuantity == LteRrcSap::ReportConfigEutra::RSRP)
1364  {
1365  SerializeEnum (2, 0);
1366  }
1367  else
1368  {
1369  SerializeEnum (2, 1);
1370  }
1371 
1372  // Serialize reportQuantity
1373  if (it->reportConfigEutra.reportQuantity == LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY)
1374  {
1375  SerializeEnum (2, 0);
1376  }
1377  else
1378  {
1379  SerializeEnum (2, 1);
1380  }
1381 
1382  // Serialize maxReportCells
1383  SerializeInteger (it->reportConfigEutra.maxReportCells, 1, MAX_CELL_REPORT);
1384 
1385  // Serialize reportInterval
1386  switch (it->reportConfigEutra.reportInterval)
1387  {
1389  SerializeEnum (16, 0);
1390  break;
1392  SerializeEnum (16, 1);
1393  break;
1395  SerializeEnum (16, 2);
1396  break;
1398  SerializeEnum (16, 3);
1399  break;
1401  SerializeEnum (16, 4);
1402  break;
1404  SerializeEnum (16, 5);
1405  break;
1407  SerializeEnum (16, 6);
1408  break;
1410  SerializeEnum (16, 7);
1411  break;
1413  SerializeEnum (16, 8);
1414  break;
1416  SerializeEnum (16, 9);
1417  break;
1419  SerializeEnum (16, 10);
1420  break;
1422  SerializeEnum (16, 11);
1423  break;
1425  SerializeEnum (16, 12);
1426  break;
1428  SerializeEnum (16, 13);
1429  break;
1431  SerializeEnum (16, 14);
1432  break;
1434  default:
1435  SerializeEnum (16, 15);
1436  }
1437 
1438  // Serialize reportAmount
1439  switch (it->reportConfigEutra.reportAmount)
1440  {
1441  case 1:
1442  SerializeEnum (8, 0);
1443  break;
1444  case 2:
1445  SerializeEnum (8, 1);
1446  break;
1447  case 4:
1448  SerializeEnum (8, 2);
1449  break;
1450  case 8:
1451  SerializeEnum (8, 3);
1452  break;
1453  case 16:
1454  SerializeEnum (8, 4);
1455  break;
1456  case 32:
1457  SerializeEnum (8, 5);
1458  break;
1459  case 64:
1460  SerializeEnum (8, 6);
1461  break;
1462  default:
1463  SerializeEnum (8, 7);
1464  }
1465  }
1466  }
1467 
1468  if (!measConfig.measIdToRemoveList.empty () )
1469  {
1470  SerializeSequenceOf (measConfig.measIdToRemoveList.size (), MAX_MEAS_ID, 1);
1471  for (std::list<uint8_t>::iterator it = measConfig.measIdToRemoveList.begin (); it != measConfig.measIdToRemoveList.end (); it++)
1472  {
1473  SerializeInteger (*it, 1, MAX_MEAS_ID);
1474  }
1475  }
1476 
1477  if (!measConfig.measIdToAddModList.empty () )
1478  {
1479  SerializeSequenceOf ( measConfig.measIdToAddModList.size (), MAX_MEAS_ID, 1);
1480  for (std::list<LteRrcSap::MeasIdToAddMod>::iterator it = measConfig.measIdToAddModList.begin (); it != measConfig.measIdToAddModList.end (); it++)
1481  {
1482  SerializeInteger (it->measId, 1, MAX_MEAS_ID);
1483  SerializeInteger (it->measObjectId, 1, MAX_OBJECT_ID);
1484  SerializeInteger (it->reportConfigId, 1, MAX_REPORT_CONFIG_ID);
1485  }
1486  }
1487 
1488  if (measConfig.haveQuantityConfig )
1489  {
1490  // QuantityConfig sequence
1491  // 4 optional fields, only first (EUTRA) present. Extension marker yes.
1492  std::bitset<4> quantityConfigOpts (0);
1493  quantityConfigOpts.set (3,1);
1494  SerializeSequence (quantityConfigOpts, true);
1495  SerializeSequence (std::bitset<0> (), false);
1496 
1497  switch (measConfig.quantityConfig.filterCoefficientRSRP)
1498  {
1499  case 0:
1500  SerializeEnum (16, 0);
1501  break;
1502  case 1:
1503  SerializeEnum (16, 1);
1504  break;
1505  case 2:
1506  SerializeEnum (16, 2);
1507  break;
1508  case 3:
1509  SerializeEnum (16, 3);
1510  break;
1511  case 4:
1512  SerializeEnum (16, 4);
1513  break;
1514  case 5:
1515  SerializeEnum (16, 5);
1516  break;
1517  case 6:
1518  SerializeEnum (16, 6);
1519  break;
1520  case 7:
1521  SerializeEnum (16, 7);
1522  break;
1523  case 8:
1524  SerializeEnum (16, 8);
1525  break;
1526  case 9:
1527  SerializeEnum (16, 9);
1528  break;
1529  case 11:
1530  SerializeEnum (16, 10);
1531  break;
1532  case 13:
1533  SerializeEnum (16, 11);
1534  break;
1535  case 15:
1536  SerializeEnum (16, 12);
1537  break;
1538  case 17:
1539  SerializeEnum (16, 13);
1540  break;
1541  case 19:
1542  SerializeEnum (16, 14);
1543  break;
1544  default:
1545  SerializeEnum (16, 4);
1546  }
1547 
1548  switch (measConfig.quantityConfig.filterCoefficientRSRQ)
1549  {
1550  case 0:
1551  SerializeEnum (16, 0);
1552  break;
1553  case 1:
1554  SerializeEnum (16, 1);
1555  break;
1556  case 2:
1557  SerializeEnum (16, 2);
1558  break;
1559  case 3:
1560  SerializeEnum (16, 3);
1561  break;
1562  case 4:
1563  SerializeEnum (16, 4);
1564  break;
1565  case 5:
1566  SerializeEnum (16, 5);
1567  break;
1568  case 6:
1569  SerializeEnum (16, 6);
1570  break;
1571  case 7:
1572  SerializeEnum (16, 7);
1573  break;
1574  case 8:
1575  SerializeEnum (16, 8);
1576  break;
1577  case 9:
1578  SerializeEnum (16, 9);
1579  break;
1580  case 11:
1581  SerializeEnum (16, 10);
1582  break;
1583  case 13:
1584  SerializeEnum (16, 11);
1585  break;
1586  case 15:
1587  SerializeEnum (16, 12);
1588  break;
1589  case 17:
1590  SerializeEnum (16, 13);
1591  break;
1592  case 19:
1593  SerializeEnum (16, 14);
1594  break;
1595  default:
1596  SerializeEnum (16, 4);
1597  }
1598  }
1599 
1600  if (measConfig.haveMeasGapConfig )
1601  {
1602  switch (measConfig.measGapConfig.type)
1603  {
1605  SerializeChoice (2, 0, false);
1606  SerializeNull ();
1607  break;
1609  default:
1610  SerializeChoice (2, 1, false);
1611  SerializeSequence (std::bitset<0> (),false);
1612  switch (measConfig.measGapConfig.gapOffsetChoice)
1613  {
1615  SerializeChoice (2, 0, true);
1616  SerializeInteger (measConfig.measGapConfig.gapOffsetValue, 0, 39);
1617  break;
1619  default:
1620  SerializeChoice (2, 1, true);
1621  SerializeInteger (measConfig.measGapConfig.gapOffsetValue, 0, 79);
1622  }
1623  }
1624  }
1625 
1626  if (measConfig.haveSmeasure )
1627  {
1628  SerializeInteger (measConfig.sMeasure, 0, 97);
1629  }
1630 
1631  // ...Here preRegistrationInfoHRPD would be serialized
1632 
1633  if (measConfig.haveSpeedStatePars )
1634  {
1635  switch (measConfig.speedStatePars.type)
1636  {
1638  SerializeChoice (2, 0, false);
1639  SerializeNull ();
1640  break;
1642  default:
1643  SerializeChoice (2, 1, false);
1644  SerializeSequence (std::bitset<0> (), false);
1646  {
1647  case 30:
1648  SerializeEnum (8, 0);
1649  break;
1650  case 60:
1651  SerializeEnum (8, 1);
1652  break;
1653  case 120:
1654  SerializeEnum (8, 2);
1655  break;
1656  case 180:
1657  SerializeEnum (8, 3);
1658  break;
1659  case 240:
1660  SerializeEnum (8, 4);
1661  break;
1662  default:
1663  SerializeEnum (8, 5);
1664  break;
1665  }
1666 
1668  {
1669  case 30:
1670  SerializeEnum (8, 0);
1671  break;
1672  case 60:
1673  SerializeEnum (8, 1);
1674  break;
1675  case 120:
1676  SerializeEnum (8, 2);
1677  break;
1678  case 180:
1679  SerializeEnum (8, 3);
1680  break;
1681  case 240:
1682  SerializeEnum (8, 4);
1683  break;
1684  default:
1685  SerializeEnum (8, 5);
1686  break;
1687  }
1688 
1691 
1692  SerializeSequence (std::bitset<0> (), false);
1693  switch (measConfig.speedStatePars.timeToTriggerSf.sfMedium)
1694  {
1695  case 25:
1696  SerializeEnum (4, 0);
1697  break;
1698  case 50:
1699  SerializeEnum (4, 1);
1700  break;
1701  case 75:
1702  SerializeEnum (4, 2);
1703  break;
1704  case 100:
1705  default:
1706  SerializeEnum (4, 3);
1707  }
1708 
1709  switch (measConfig.speedStatePars.timeToTriggerSf.sfHigh)
1710  {
1711  case 25:
1712  SerializeEnum (4, 0);
1713  break;
1714  case 50:
1715  SerializeEnum (4, 1);
1716  break;
1717  case 75:
1718  SerializeEnum (4, 2);
1719  break;
1720  case 100:
1721  default:
1722  SerializeEnum (4, 3);
1723  }
1724  }
1725  }
1726 }
1727  void
1729  {
1730  // 3 optional fields. Extension marker not present.
1731  std::bitset<3> noncriticalExtension_v1020;
1732  noncriticalExtension_v1020.set (2,0); // No sCellToRealeaseList-r10
1733  noncriticalExtension_v1020.set (1,1); // sCellToAddModList-r10
1734  noncriticalExtension_v1020.set (0,0); // No nonCriticalExtension RRCConnectionReconfiguration-v1130-IEs
1735  SerializeSequence (noncriticalExtension_v1020,false);
1736  if (!nonCriticalExtension.sCellsToAddModList.empty ())
1737  {
1738  SerializeSequenceOf (nonCriticalExtension.sCellsToAddModList.size (),MAX_OBJECT_ID,1);
1739  for (std::list<LteRrcSap::SCellToAddMod>::iterator it = nonCriticalExtension.sCellsToAddModList.begin (); it != nonCriticalExtension.sCellsToAddModList.end (); it++)
1740  {
1741  std::bitset<4> sCellToAddMod_r10;
1742  sCellToAddMod_r10.set (3,1); // sCellIndex
1743  sCellToAddMod_r10.set (2,1); // CellIdentification
1744  sCellToAddMod_r10.set (1,1); // RadioResourceConfigCommonSCell
1745  sCellToAddMod_r10.set (0,it->haveRadioResourceConfigDedicatedSCell); // No nonCriticalExtension RRC
1746  SerializeSequence (sCellToAddMod_r10, false);
1747  SerializeInteger (it->sCellIndex,1,MAX_OBJECT_ID); //sCellIndex
1748 
1749  // Serialize CellIdentification
1750  std::bitset<2> cellIdentification_r10;
1751  cellIdentification_r10.set(1,1); // phyCellId-r10
1752  cellIdentification_r10.set(0,1); // dl-CarrierFreq-r10
1753  SerializeSequence (cellIdentification_r10, false);
1754 
1755  SerializeInteger (it->cellIdentification.physCellId,1,65536);
1756  SerializeInteger (it->cellIdentification.dlCarrierFreq,1,MAX_EARFCN);
1757 
1758  //Serialize RadioResourceConfigCommonSCell
1759  SerializeRadioResourceConfigCommonSCell (it->radioResourceConfigCommonSCell);
1760 
1761  if (it->haveRadioResourceConfigDedicatedSCell)
1762  {
1763  //Serialize RadioResourceConfigDedicatedSCell
1764  SerializeRadioResourceDedicatedSCell (it->radioResourceConfigDedicateSCell);
1765  }
1766 
1767  }
1768  }
1769  else
1770  {
1771  // NS_ASSERT_MSG ( this << "NonCriticalExtension.sCellsToAddModList cannot be empty ", false);
1772  }
1773 
1774  }
1775  void
1777  {
1778  // 2 optional fields. Extension marker not present.
1779  std::bitset<2> radioResourceConfigCommonSCell_r10;
1780  radioResourceConfigCommonSCell_r10.set (1,rrccsc.haveNonUlConfiguration); // NonUlConfiguration
1781  radioResourceConfigCommonSCell_r10.set (0,rrccsc.haveUlConfiguration); // UlConfiguration
1782  SerializeSequence (radioResourceConfigCommonSCell_r10,false);
1783 
1784  if (rrccsc.haveNonUlConfiguration)
1785  {
1786  // 5 optional fields. Extension marker not present.
1787  std::bitset<5> nonUlConfiguration_r10;
1788  nonUlConfiguration_r10.set (4,1); // Dl- bandwidth --> convert in enum
1789  nonUlConfiguration_r10.set (3,1); // AntennaInfoCommon-r10
1790  nonUlConfiguration_r10.set (2,0); // phich-Config-r10 Not Implemented
1791  nonUlConfiguration_r10.set (1,1); // pdschConfigCommon
1792  nonUlConfiguration_r10.set (0,0); // Tdd-Config-r10 Not Implemented
1793  SerializeSequence (nonUlConfiguration_r10,false);
1794 
1796 
1797  std::bitset<1> antennaInfoCommon_r10;
1798  antennaInfoCommon_r10.set (0,1);
1799  SerializeSequence (antennaInfoCommon_r10,false);
1801 
1802  std::bitset<2> pdschConfigCommon_r10;
1803  pdschConfigCommon_r10.set (1,1);
1804  pdschConfigCommon_r10.set (0,1);
1805  SerializeSequence (pdschConfigCommon_r10,false);
1806 
1809 
1810  }
1811  if (rrccsc.haveUlConfiguration)
1812  {
1813  //Serialize Ul Configuration
1814  // 7 optional fields. Extension marker present.
1815  std::bitset<7> UlConfiguration_r10;
1816  UlConfiguration_r10.set (6,1); // ul-Configuration-r10
1817  UlConfiguration_r10.set (5,0); // p-Max-r10 Not Implemented
1818  UlConfiguration_r10.set (4,1); // uplinkPowerControlCommonSCell-r10
1819  UlConfiguration_r10.set (3,0); // soundingRS-UL-ConfigCommon-r10
1820  UlConfiguration_r10.set (2,0); // ul-CyclicPrefixLength-r10
1821  UlConfiguration_r10.set (1,1); // prach-ConfigSCell-r10
1822  UlConfiguration_r10.set (0,0); // pusch-ConfigCommon-r10 Not Implemented
1823  SerializeSequence (UlConfiguration_r10,true);
1824 
1825  //Serialize ulFreqInfo
1826  std::bitset<3> FreqInfo_r10;
1827  FreqInfo_r10.set (2,1); // ulCarrierFreq
1828  FreqInfo_r10.set (1,1); // UlBandwidth
1829  FreqInfo_r10.set (0,0); // additionalSpectrumEmissionSCell-r10 Not Implemented
1830  SerializeSequence (FreqInfo_r10,false);
1831 
1834 
1835  //Serialize UlPowerControllCommonSCell
1836  std::bitset<2> UlPowerControlCommonSCell_r10;
1837  UlPowerControlCommonSCell_r10.set (1,0); // p0-NominalPUSCH-r10 Not Implemented
1838  UlPowerControlCommonSCell_r10.set (0,1); // alpha
1839  SerializeSequence (UlPowerControlCommonSCell_r10,false);
1840 
1842 
1843  //Serialize soundingRs-UlConfigCommon
1844  //Not Implemented
1845 
1846  //Serialize PrachConfigSCell
1847  std::bitset<1> prachConfigSCell_r10;
1848  prachConfigSCell_r10.set(0,1);
1849  SerializeSequence(prachConfigSCell_r10,false);
1851  }
1852 
1853 
1854  }
1855  void
1857  {
1858  //Serialize RadioResourceConfigDedicatedSCell
1859  std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
1860  RadioResourceConfigDedicatedSCell_r10.set (0,1);
1861  SerializeSequence (RadioResourceConfigDedicatedSCell_r10,false);
1862 
1865  }
1866 
1867  void
1869  {
1870  std::bitset<2> pcdscOpt;
1871  pcdscOpt.set (1,pcdsc.haveNonUlConfiguration);
1872  pcdscOpt.set (0,pcdsc.haveUlConfiguration);
1873  SerializeSequence (pcdscOpt, true);
1874 
1875  if (pcdsc.haveNonUlConfiguration)
1876  {
1877  //Serialize NonUl configuration
1878  std::bitset<4> nulOpt;
1879  nulOpt.set (3,pcdsc.haveAntennaInfoDedicated);
1880  nulOpt.set (2,0); // crossCarrierSchedulingConfig-r10 Not Implemented
1881  nulOpt.set (1,0); // csi-RS-Config-r10 Not Implemented
1882  nulOpt.set (0, pcdsc.havePdschConfigDedicated); // pdsch-ConfigDedicated-r10
1883  SerializeSequence (nulOpt,false);
1884 
1885  if (pcdsc.haveAntennaInfoDedicated)
1886  {
1887  // Serialize antennaInfo choice
1888  // 2 options. Selected: 0 ("explicitValue" of type "AntennaInfoDedicated")
1889  SerializeChoice (2,0,false);
1890 
1891  // Serialize AntennaInfoDedicated sequence
1892  // 1 optional parameter, not present. No extension marker.
1893  SerializeSequence (std::bitset<1> (0),false);
1894 
1895  // Serialize transmissionMode
1896  // Assuming the value in the struct is the enum index
1898 
1899  // Serialize ue-TransmitAntennaSelection choice
1900  SerializeChoice (2,0,false);
1901 
1902  // Serialize release
1903  SerializeNull ();
1904  }
1905  if (pcdsc.havePdschConfigDedicated)
1906  {
1907  // Serialize Pdsch-ConfigDedicated Sequence:
1908  // 0 optional / default fields, no extension marker.
1909  SerializeSequence (std::bitset<0> (),false);
1910 
1911  // Serialize p-a
1912  // Assuming the value in the struct is the enum index
1914 
1915  // Serialize release
1916  SerializeNull ();
1917  }
1918 
1919 
1920  }
1921  if (pcdsc.haveUlConfiguration)
1922  {
1923  //Serialize Ul Configuration
1924  std::bitset<7> ulOpt;
1925  ulOpt.set (6, pcdsc.haveAntennaInfoUlDedicated);// antennaInfoUL-r10
1926  ulOpt.set (5,0); // pusch-ConfigDedicatedSCell-r10 not present
1927  ulOpt.set (4,0); // uplinkPowerControlDedicatedSCell-r10 not present
1928  ulOpt.set (3,0); // cqi-ReportConfigSCell-r10 not present
1929  ulOpt.set (2,pcdsc.haveSoundingRsUlConfigDedicated);// soundingRS-UL-ConfigDedicated-r10
1930  ulOpt.set (1,0); // soundingRS-UL-ConfigDedicated-v1020 not present
1931  ulOpt.set (0,0); // soundingRS-UL-ConfigDedicatedAperiodic-r10 not present
1932  SerializeSequence (ulOpt,false);
1933 
1934  if (pcdsc.haveAntennaInfoUlDedicated)
1935  {
1936  // Serialize antennaInfo choice
1937  // 2 options. Selected: 0 ("explicitValue" of type "AntennaInfoDedicated")
1938  SerializeChoice (2,0,false);
1939 
1940  // Serialize AntennaInfoDedicated sequence
1941  // 1 optional parameter, not present. No extension marker.
1942  SerializeSequence (std::bitset<1> (0),false);
1943 
1944  // Serialize transmissionMode
1945  // Assuming the value in the struct is the enum index
1947 
1948  // Serialize ue-TransmitAntennaSelection choice
1949  SerializeChoice (2,0,false);
1950 
1951  // Serialize release
1952  SerializeNull ();
1953  }
1955  {
1956  // Serialize SoundingRS-UL-ConfigDedicated choice:
1957  switch (pcdsc.soundingRsUlConfigDedicated.type)
1958  {
1960  SerializeChoice (2,0,false);
1961  SerializeNull ();
1962  break;
1963 
1965  default:
1966  // 2 options, selected: 1 (setup)
1967  SerializeChoice (2,1,false);
1968 
1969  // Serialize setup sequence
1970  // 0 optional / default fields, no extension marker.
1971  SerializeSequence (std::bitset<0> (),false);
1972 
1973  // Serialize srs-Bandwidth
1975 
1976  // Serialize srs-HoppingBandwidth
1977  SerializeEnum (4,0);
1978 
1979  // Serialize freqDomainPosition
1980  SerializeInteger (0,0,23);
1981 
1982  // Serialize duration
1983  SerializeBoolean (false);
1984 
1985  // Serialize srs-ConfigIndex
1987 
1988  // Serialize transmissionComb
1989  SerializeInteger (0,0,1);
1990 
1991  // Serialize cyclicShift
1992  SerializeEnum (8,0);
1993 
1994  break;
1995  }
1996 
1997  }
1998 
1999 
2000  }
2001  }
2002 
2005 {
2006  int thresholdEutraChoice, range;
2007  bIterator = DeserializeChoice (2, false, &thresholdEutraChoice, bIterator);
2008 
2009  switch (thresholdEutraChoice)
2010  {
2011  case 0:
2013  bIterator = DeserializeInteger (&range, 0, 97, bIterator);
2014  thresholdEutra->range = range;
2015  break;
2016  case 1:
2017  default:
2019  bIterator = DeserializeInteger (&range, 0, 34, bIterator);
2020  thresholdEutra->range = range;
2021  }
2022 
2023  return bIterator;
2024 }
2025 
2028 {
2029  int n;
2030  bIterator = DeserializeEnum (31, &n, bIterator);
2031  switch (n)
2032  {
2033  case 0:
2034  *qOffsetRange = -24;
2035  break;
2036  case 1:
2037  *qOffsetRange = -22;
2038  break;
2039  case 2:
2040  *qOffsetRange = -20;
2041  break;
2042  case 3:
2043  *qOffsetRange = -18;
2044  break;
2045  case 4:
2046  *qOffsetRange = -16;
2047  break;
2048  case 5:
2049  *qOffsetRange = -14;
2050  break;
2051  case 6:
2052  *qOffsetRange = -12;
2053  break;
2054  case 7:
2055  *qOffsetRange = -10;
2056  break;
2057  case 8:
2058  *qOffsetRange = -8;
2059  break;
2060  case 9:
2061  *qOffsetRange = -6;
2062  break;
2063  case 10:
2064  *qOffsetRange = -5;
2065  break;
2066  case 11:
2067  *qOffsetRange = -4;
2068  break;
2069  case 12:
2070  *qOffsetRange = -3;
2071  break;
2072  case 13:
2073  *qOffsetRange = -2;
2074  break;
2075  case 14:
2076  *qOffsetRange = -1;
2077  break;
2078  case 15:
2079  *qOffsetRange = 0;
2080  break;
2081  case 16:
2082  *qOffsetRange = 1;
2083  break;
2084  case 17:
2085  *qOffsetRange = 2;
2086  break;
2087  case 18:
2088  *qOffsetRange = 3;
2089  break;
2090  case 19:
2091  *qOffsetRange = 4;
2092  break;
2093  case 20:
2094  *qOffsetRange = 5;
2095  break;
2096  case 21:
2097  *qOffsetRange = 6;
2098  break;
2099  case 22:
2100  *qOffsetRange = 8;
2101  break;
2102  case 23:
2103  *qOffsetRange = 10;
2104  break;
2105  case 24:
2106  *qOffsetRange = 12;
2107  break;
2108  case 25:
2109  *qOffsetRange = 14;
2110  break;
2111  case 26:
2112  *qOffsetRange = 16;
2113  break;
2114  case 27:
2115  *qOffsetRange = 18;
2116  break;
2117  case 28:
2118  *qOffsetRange = 20;
2119  break;
2120  case 29:
2121  *qOffsetRange = 22;
2122  break;
2123  case 30:
2124  default:
2125  *qOffsetRange = 24;
2126  }
2127  return bIterator;
2128 }
2129 
2132 {
2133  // Deserialize RadioResourceConfigDedicated sequence
2134  std::bitset<6> optionalFieldsPresent = std::bitset<6> ();
2135  bIterator = DeserializeSequence (&optionalFieldsPresent,true,bIterator);
2136 
2137  if (optionalFieldsPresent[5])
2138  {
2139  // Deserialize srb-ToAddModList
2140  bIterator = DeserializeSrbToAddModList (&(radioResourceConfigDedicated->srbToAddModList),bIterator);
2141  }
2142 
2143  if (optionalFieldsPresent[4])
2144  {
2145  // Deserialize drb-ToAddModList
2146  bIterator = DeserializeDrbToAddModList (&(radioResourceConfigDedicated->drbToAddModList),bIterator);
2147  }
2148 
2149  if (optionalFieldsPresent[3])
2150  {
2151  // Deserialize drb-ToReleaseList
2152  int n;
2153  int val;
2154  bIterator = DeserializeSequenceOf (&n,MAX_DRB,1,bIterator);
2155  for (int i = 0; i < n; i++)
2156  {
2157  bIterator = DeserializeInteger (&val,1,32,bIterator);
2158  radioResourceConfigDedicated->drbToReleaseList.push_back (val);
2159  }
2160  }
2161 
2162  if (optionalFieldsPresent[2])
2163  {
2164  // Deserialize mac-MainConfig
2165  // ...
2166  }
2167 
2168  if (optionalFieldsPresent[1])
2169  {
2170  // Deserialize sps-Config
2171  // ...
2172  }
2173 
2174  radioResourceConfigDedicated->havePhysicalConfigDedicated = optionalFieldsPresent[0];
2175  if (optionalFieldsPresent[0])
2176  {
2177  // Deserialize physicalConfigDedicated
2178  bIterator = DeserializePhysicalConfigDedicated (&radioResourceConfigDedicated->physicalConfigDedicated,bIterator);
2179  }
2180 
2181  return bIterator;
2182 }
2183 
2185 RrcAsn1Header::DeserializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> *srbToAddModList, Buffer::Iterator bIterator)
2186 {
2187  int numElems;
2188  bIterator = DeserializeSequenceOf (&numElems,2,1,bIterator);
2189 
2190  srbToAddModList->clear ();
2191 
2192  // Deserialize SRB-ToAddMod elements
2193  for (int i = 0; i < numElems; i++)
2194  {
2195  LteRrcSap::SrbToAddMod srbToAddMod;
2196  // Deserialize SRB-ToAddMod sequence
2197  // 2 optional fields, extension marker present
2198  std::bitset<2> optionalFields;
2199  bIterator = DeserializeSequence (&optionalFields,true,bIterator);
2200 
2201  // Deserialize srbIdentity
2202  int n;
2203  bIterator = DeserializeInteger (&n,1,2,bIterator);
2204  srbToAddMod.srbIdentity = n;
2205 
2206  if (optionalFields[1])
2207  {
2208  // Deserialize rlcConfig choice
2209  // ...
2210  }
2211 
2212  if (optionalFields[0])
2213  {
2214  // Deserialize logicalChannelConfig choice
2215  int sel;
2216  bIterator = DeserializeChoice (2,false,&sel,bIterator);
2217 
2218  // Deserialize logicalChannelConfig defaultValue
2219  if (sel == 1)
2220  {
2221  bIterator = DeserializeNull (bIterator);
2222  }
2223 
2224  // Deserialize logicalChannelConfig explicitValue
2225  else if (sel == 0)
2226  {
2227  bIterator = DeserializeLogicalChannelConfig (&srbToAddMod.logicalChannelConfig,bIterator);
2228  }
2229  }
2230  srbToAddModList->insert (srbToAddModList->end (),srbToAddMod);
2231  }
2232 
2233  return bIterator;
2234 }
2235 
2237 RrcAsn1Header::DeserializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> *drbToAddModList, Buffer::Iterator bIterator)
2238 {
2239  int n;
2240  int val;
2241  bIterator = DeserializeSequenceOf (&n,MAX_DRB,1,bIterator);
2242 
2243  drbToAddModList->clear ();
2244 
2245  for (int i = 0; i < n; i++)
2246  {
2247  LteRrcSap::DrbToAddMod drbToAddMod;
2248 
2249  std::bitset<5> optionalFields;
2250  bIterator = DeserializeSequence (&optionalFields,true,bIterator);
2251 
2252  if (optionalFields[4])
2253  {
2254  // Deserialize epsBearerIdentity
2255  bIterator = DeserializeInteger (&val,0,15,bIterator);
2256  drbToAddMod.epsBearerIdentity = val;
2257  }
2258 
2259  bIterator = DeserializeInteger (&val,1,32,bIterator);
2260  drbToAddMod.drbIdentity = val;
2261 
2262  if (optionalFields[3])
2263  {
2264  // Deserialize pdcp-Config
2265  // ...
2266  }
2267 
2268  if (optionalFields[2])
2269  {
2270  // Deserialize RLC-Config
2271  int chosen;
2272  bIterator = DeserializeChoice (4,true,&chosen,bIterator);
2273 
2274  int sel;
2275  std::bitset<0> bitset0;
2276  switch (chosen)
2277  {
2278  case 0:
2280 
2281  // Deserialize UL-AM-RLC
2282  bIterator = DeserializeSequence (&bitset0,false, bIterator);
2283  bIterator = DeserializeEnum (64,&sel, bIterator); // t-PollRetransmit
2284  bIterator = DeserializeEnum (8,&sel, bIterator); // pollPDU
2285  bIterator = DeserializeEnum (16,&sel, bIterator); // pollByte
2286  bIterator = DeserializeEnum (8,&sel, bIterator); // maxRetxThreshold
2287 
2288  // Deserialize DL-AM-RLC
2289  bIterator = DeserializeSequence (&bitset0,false, bIterator);
2290  bIterator = DeserializeEnum (32,&sel, bIterator); // t-Reordering
2291  bIterator = DeserializeEnum (64,&sel, bIterator); // t-StatusProhibit
2292  break;
2293 
2294  case 1:
2296 
2297  // Deserialize UL-UM-RLC
2298  bIterator = DeserializeSequence (&bitset0,false, bIterator);
2299  bIterator = DeserializeEnum (2,&sel, bIterator); // sn-FieldLength
2300 
2301  // Deserialize DL-UM-RLC
2302  bIterator = DeserializeSequence (&bitset0,false, bIterator);
2303  bIterator = DeserializeEnum (2,&sel, bIterator); // sn-FieldLength
2304  bIterator = DeserializeEnum (32,&sel, bIterator); // t-Reordering
2305  break;
2306 
2307  case 2:
2309 
2310  // Deserialize UL-UM-RLC
2311  bIterator = DeserializeSequence (&bitset0,false, bIterator);
2312  bIterator = DeserializeEnum (2,&sel, bIterator); // sn-FieldLength
2313  break;
2314 
2315  case 3:
2317 
2318  // Deserialize DL-UM-RLC
2319  bIterator = DeserializeSequence (&bitset0,false, bIterator);
2320  bIterator = DeserializeEnum (2,&sel, bIterator); // sn-FieldLength
2321  bIterator = DeserializeEnum (32,&sel, bIterator); // t-Reordering
2322  break;
2323  }
2324 
2325  }
2326 
2327  if (optionalFields[1])
2328  {
2329  bIterator = DeserializeInteger (&val,3,10,bIterator);
2330  drbToAddMod.logicalChannelIdentity = val;
2331  }
2332 
2333  if (optionalFields[0])
2334  {
2335  bIterator = DeserializeLogicalChannelConfig (&drbToAddMod.logicalChannelConfig,bIterator);
2336  }
2337 
2338  drbToAddModList->insert (drbToAddModList->end (),drbToAddMod);
2339  }
2340  return bIterator;
2341 }
2342 
2345 {
2346  int n;
2347 
2348  // Deserialize LogicalChannelConfig sequence
2349  // 1 optional field, extension marker is present.
2350  std::bitset<1> bitset1;
2351  bIterator = DeserializeSequence (&bitset1,true,bIterator);
2352 
2353  if (bitset1[0])
2354  {
2355  // Deserialize ul-SpecificParameters sequence
2356  bIterator = DeserializeSequence (&bitset1,false,bIterator);
2357 
2358  // Deserialize priority
2359  bIterator = DeserializeInteger (&n,1,16,bIterator);
2360  logicalChannelConfig->priority = n;
2361 
2362  // Deserialize prioritisedBitRate
2363  bIterator = DeserializeEnum (16,&n,bIterator);
2364  uint16_t prioritizedBitRateKbps;
2365 
2366  switch (n)
2367  {
2368  case 0:
2369  prioritizedBitRateKbps = 0;
2370  break;
2371  case 1:
2372  prioritizedBitRateKbps = 8;
2373  break;
2374  case 2:
2375  prioritizedBitRateKbps = 16;
2376  break;
2377  case 3:
2378  prioritizedBitRateKbps = 32;
2379  break;
2380  case 4:
2381  prioritizedBitRateKbps = 64;
2382  break;
2383  case 5:
2384  prioritizedBitRateKbps = 128;
2385  break;
2386  case 6:
2387  prioritizedBitRateKbps = 256;
2388  break;
2389  case 7:
2390  prioritizedBitRateKbps = 10000;
2391  break;
2392  default:
2393  prioritizedBitRateKbps = 10000;
2394  }
2395  logicalChannelConfig->prioritizedBitRateKbps = prioritizedBitRateKbps;
2396 
2397  // Deserialize bucketSizeDuration
2398  bIterator = DeserializeEnum (8,&n,bIterator);
2399  uint16_t bucketSizeDurationMs;
2400  switch (n)
2401  {
2402  case 0:
2403  bucketSizeDurationMs = 50;
2404  break;
2405  case 1:
2406  bucketSizeDurationMs = 100;
2407  break;
2408  case 2:
2409  bucketSizeDurationMs = 150;
2410  break;
2411  case 3:
2412  bucketSizeDurationMs = 300;
2413  break;
2414  case 4:
2415  bucketSizeDurationMs = 500;
2416  break;
2417  case 5:
2418  bucketSizeDurationMs = 1000;
2419  break;
2420  default:
2421  bucketSizeDurationMs = 1000;
2422  }
2423  logicalChannelConfig->bucketSizeDurationMs = bucketSizeDurationMs;
2424 
2425  if (bitset1[0])
2426  {
2427  // Deserialize logicalChannelGroup
2428  bIterator = DeserializeInteger (&n,0,3,bIterator);
2429  logicalChannelConfig->logicalChannelGroup = n;
2430  }
2431  }
2432  return bIterator;
2433 }
2434 
2437 {
2438  std::bitset<10> optionalFieldPresent;
2439  bIterator = DeserializeSequence (&optionalFieldPresent,true,bIterator);
2440 
2441  physicalConfigDedicated->havePdschConfigDedicated = optionalFieldPresent[9];
2442  if (optionalFieldPresent[9])
2443  {
2444  // Deserialize pdsch-ConfigDedicated
2445  std::bitset<0> bitset0;
2446  bIterator = DeserializeSequence (&bitset0,false,bIterator);
2447 
2448  int slct;
2449 
2450  // Deserialize p-a
2451  bIterator = DeserializeEnum (8,&slct,bIterator);
2452  physicalConfigDedicated->pdschConfigDedicated.pa = slct;
2453 
2454  bIterator = DeserializeNull (bIterator);
2455 
2456  }
2457  if (optionalFieldPresent[8])
2458  {
2459  // Deserialize pucch-ConfigDedicated
2460  // ...
2461  }
2462  if (optionalFieldPresent[7])
2463  {
2464  // Deserialize pusch-ConfigDedicated
2465  // ...
2466  }
2467  if (optionalFieldPresent[6])
2468  {
2469  // Deserialize uplinkPowerControlDedicated
2470  // ...
2471  }
2472  if (optionalFieldPresent[5])
2473  {
2474  // Deserialize tpc-PDCCH-ConfigPUCCH
2475  // ...
2476  }
2477  if (optionalFieldPresent[4])
2478  {
2479  // Deserialize tpc-PDCCH-ConfigPUSCH
2480  // ...
2481  }
2482  if (optionalFieldPresent[3])
2483  {
2484  // Deserialize cqi-ReportConfig
2485  // ...
2486  }
2487  physicalConfigDedicated->haveSoundingRsUlConfigDedicated = optionalFieldPresent[2];
2488  if (optionalFieldPresent[2])
2489  {
2490  // Deserialize soundingRS-UL-ConfigDedicated
2491  int sel;
2492  bIterator = DeserializeChoice (2,false,&sel,bIterator);
2493 
2494  if (sel == 0)
2495  {
2497 
2498  bIterator = DeserializeNull (bIterator);
2499  }
2500 
2501  else if (sel == 1)
2502  {
2504 
2505  std::bitset<0> bitset0;
2506  bIterator = DeserializeSequence (&bitset0,false,bIterator);
2507 
2508  int slct;
2509 
2510  // Deserialize srs-Bandwidth
2511  bIterator = DeserializeEnum (4,&slct,bIterator);
2512  physicalConfigDedicated->soundingRsUlConfigDedicated.srsBandwidth = slct;
2513 
2514  // Deserialize srs-HoppingBandwidth
2515  bIterator = DeserializeEnum (4,&slct,bIterator);
2516 
2517  // Deserialize freqDomainPosition
2518  bIterator = DeserializeInteger (&slct,0,23,bIterator);
2519 
2520  // Deserialize duration
2521  bool duration;
2522  bIterator = DeserializeBoolean (&duration,bIterator);
2523 
2524  // Deserialize srs-ConfigIndex
2525  bIterator = DeserializeInteger (&slct,0,1023,bIterator);
2526  physicalConfigDedicated->soundingRsUlConfigDedicated.srsConfigIndex = slct;
2527 
2528  // Deserialize transmissionComb
2529  bIterator = DeserializeInteger (&slct,0,1,bIterator);
2530 
2531  // Deserialize cyclicShift
2532  bIterator = DeserializeEnum (8,&slct,bIterator);
2533  }
2534  }
2535  physicalConfigDedicated->haveAntennaInfoDedicated = optionalFieldPresent[1];
2536  if (optionalFieldPresent[1])
2537  {
2538  // Deserialize antennaInfo
2539  int sel;
2540  bIterator = DeserializeChoice (2,false,&sel,bIterator);
2541  if (sel == 1)
2542  {
2543  bIterator = DeserializeNull (bIterator);
2544  }
2545  else if (sel == 0)
2546  {
2547  std::bitset<1> codebookSubsetRestrictionPresent;
2548  bIterator = DeserializeSequence (&codebookSubsetRestrictionPresent,false,bIterator);
2549 
2550  int txmode;
2551  bIterator = DeserializeEnum (8,&txmode,bIterator);
2552  physicalConfigDedicated->antennaInfo.transmissionMode = txmode;
2553 
2554  if (codebookSubsetRestrictionPresent[0])
2555  {
2556  // Deserialize codebookSubsetRestriction
2557  // ...
2558  }
2559 
2560  int txantennaselchosen;
2561  bIterator = DeserializeChoice (2,false,&txantennaselchosen,bIterator);
2562  if (txantennaselchosen == 0)
2563  {
2564  // Deserialize ue-TransmitAntennaSelection release
2565  bIterator = DeserializeNull (bIterator);
2566  }
2567  else if (txantennaselchosen == 1)
2568  {
2569  // Deserialize ue-TransmitAntennaSelection setup
2570  // ...
2571  }
2572  }
2573  }
2574  if (optionalFieldPresent[0])
2575  {
2576  // Deserialize schedulingRequestConfig
2577  // ...
2578  }
2579  return bIterator;
2580 }
2581 
2582 void
2583 RrcAsn1Header::Print (std::ostream &os) const
2584 {
2585  NS_LOG_FUNCTION (this << &os);
2586  NS_FATAL_ERROR ("RrcAsn1Header Print() function must also specify LteRrcSap::RadioResourceConfigDedicated as a second argument");
2587 }
2588 
2591  {
2592  NS_LOG_FUNCTION (this);
2593  std::bitset<2> nonCriticalExtension_v890;
2594  bIterator = DeserializeSequence (&nonCriticalExtension_v890, false,bIterator);
2595 
2596  if (nonCriticalExtension_v890[0])
2597  {
2598  // Continue to analyze future Release optional fields
2599  std::bitset<3> nonCriticalExtension_v920;
2600  bIterator = DeserializeSequence (&nonCriticalExtension_v920, false, bIterator);
2601  if (nonCriticalExtension_v920[0])
2602  {
2603  // Continue to deserialize futere Release optional fields
2604  std::bitset<3> nonCriticalExtension_v1020;
2605  bIterator = DeserializeSequence (&nonCriticalExtension_v1020, false, bIterator);
2606  NS_ASSERT (!nonCriticalExtension_v1020[2]); // No sCellToRealeaseList-r10
2607  NS_ASSERT (nonCriticalExtension_v1020[1]); // sCellToAddModList-r10
2608  NS_ASSERT (!nonCriticalExtension_v1020[0]); // No nonCriticalExtension RRCConnectionReconfiguration-v1130-IEs
2609 
2610  int numElems;
2611  bIterator = DeserializeSequenceOf (&numElems,MAX_OBJECT_ID,1,bIterator);
2612  nonCriticalExtension->sCellsToAddModList.clear ();
2613  // Deserialize SCellToAddMod
2614  for (int i = 0; i < numElems; i++)
2615  {
2616  std::bitset<4> sCellToAddMod_r10;
2617  bIterator = DeserializeSequence (&sCellToAddMod_r10, false, bIterator);
2618 
2620  // Deserialize sCellIndex
2621  NS_ASSERT (sCellToAddMod_r10[3]); // sCellIndex
2622  int n;
2623  bIterator = DeserializeInteger (&n,1,MAX_OBJECT_ID,bIterator);
2624  sctam.sCellIndex = n;
2625  // Deserialize CellIdentification
2626  NS_ASSERT (sCellToAddMod_r10[2]); // CellIdentification
2627  bIterator = DeserializeCellIdentification (&sctam.cellIdentification, bIterator);
2628 
2629  // Deserialize RadioResourceConfigCommonSCell
2630  NS_ASSERT (sCellToAddMod_r10[1]);
2632  sctam.haveRadioResourceConfigDedicatedSCell = sCellToAddMod_r10[0];
2633  if (sCellToAddMod_r10[0])
2634  {
2635  //Deserialize RadioResourceConfigDedicatedSCell
2637  }
2638 
2639  nonCriticalExtension->sCellsToAddModList.insert (nonCriticalExtension->sCellsToAddModList.end (), sctam);
2640  }
2641  }
2642  }
2643 
2644  return bIterator;
2645  }
2646 
2649  {
2650  NS_LOG_FUNCTION (this);
2651  std::bitset<2> cellIdentification_r10;
2652  bIterator = DeserializeSequence (&cellIdentification_r10,false,bIterator);
2653  NS_ASSERT(cellIdentification_r10[1]); // phyCellId-r10
2654  int n1;
2655  bIterator = DeserializeInteger (&n1,1,65536,bIterator);
2656  ci->physCellId = n1;
2657  int n2;
2658  NS_ASSERT (cellIdentification_r10[0]); // dl-CarrierFreq-r10
2659  bIterator = DeserializeInteger (&n2,1,MAX_EARFCN,bIterator);
2660  ci->dlCarrierFreq = n2;
2661 
2662  return bIterator;
2663  }
2664 
2667  {
2668  NS_LOG_FUNCTION (this);
2669  std::bitset<2> radioResourceConfigCommonSCell_r10;
2670  bIterator = DeserializeSequence (&radioResourceConfigCommonSCell_r10,false,bIterator);
2671  rrccsc->haveNonUlConfiguration = radioResourceConfigCommonSCell_r10[1];
2672  rrccsc->haveUlConfiguration = radioResourceConfigCommonSCell_r10[0];
2673  if (rrccsc->haveNonUlConfiguration)
2674  {
2675  std::bitset<5> nonUlConfiguration_r10;
2676  bIterator = DeserializeSequence (&nonUlConfiguration_r10,false,bIterator);
2677  int n;
2678  bIterator = DeserializeInteger (&n,6,100,bIterator);
2679  rrccsc->nonUlConfiguration.dlBandwidth = n;
2680 
2681  std::bitset<1> antennaInfoCommon_r10;
2682  bIterator = DeserializeSequence (&antennaInfoCommon_r10,false,bIterator);
2683  bIterator = DeserializeInteger (&n,0,65536,bIterator);
2685 
2686  std::bitset<2> pdschConfigCommon_r10;
2687  bIterator = DeserializeSequence (&pdschConfigCommon_r10,false,bIterator);
2688  bIterator = DeserializeInteger (&n,-60,50,bIterator);
2690  bIterator = DeserializeInteger (&n,0,3,bIterator);
2692  }
2693  if (rrccsc->haveUlConfiguration)
2694  {
2695  std::bitset<7> UlConfiguration_r10;
2696  bIterator = DeserializeSequence (&UlConfiguration_r10,true,bIterator);
2697 
2698  std::bitset<3> FreqInfo_r10;
2699  bIterator = DeserializeSequence (&FreqInfo_r10,false,bIterator);
2700  int n;
2701  bIterator = DeserializeInteger (&n,0,MAX_EARFCN,bIterator);
2703  bIterator = DeserializeInteger (&n,6,100,bIterator);
2705 
2706  std::bitset<2> UlPowerControlCommonSCell_r10;
2707  bIterator = DeserializeSequence (&UlPowerControlCommonSCell_r10,false,bIterator);
2708  bIterator = DeserializeInteger (&n,0,65536,bIterator);
2710 
2711  std::bitset<1> prachConfigSCell_r10;
2712  bIterator = DeserializeSequence (&prachConfigSCell_r10,false,bIterator);
2713  bIterator = DeserializeInteger (&n,0,256,bIterator);
2715  }
2716 
2717  return bIterator;
2718  }
2719 
2722  {
2723  NS_LOG_FUNCTION (this);
2724  std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
2725  bIterator = DeserializeSequence (&RadioResourceConfigDedicatedSCell_r10,false,bIterator);
2727 
2728  return bIterator;
2729  }
2730 
2733  {
2734  NS_LOG_FUNCTION (this);
2735  std::bitset<2> pcdscOpt;
2736  bIterator = DeserializeSequence (&pcdscOpt,true,bIterator);
2737  pcdsc->haveNonUlConfiguration = pcdscOpt[1];
2738  pcdsc->haveUlConfiguration = pcdscOpt[0];
2739  if (pcdsc->haveNonUlConfiguration)
2740  {
2741  std::bitset<4> nulOpt;
2742  bIterator = DeserializeSequence (&nulOpt,false,bIterator);
2743  pcdsc->haveAntennaInfoDedicated = nulOpt[3];
2744  NS_ASSERT(!nulOpt[2]); // crossCarrierSchedulingConfig-r10 Not Implemented
2745  NS_ASSERT(!nulOpt[1]); // csi-RS-Config-r10 Not Implemented
2746  pcdsc->havePdschConfigDedicated = nulOpt[0];
2747 
2748  if (pcdsc->haveAntennaInfoDedicated)
2749  {
2750  // Deserialize antennaInfo
2751  int sel;
2752  bIterator = DeserializeChoice (2,false,&sel,bIterator);
2753  if (sel == 1)
2754  {
2755  bIterator = DeserializeNull (bIterator);
2756  }
2757  else if (sel == 0)
2758  {
2759  std::bitset<1> codebookSubsetRestrictionPresent;
2760  bIterator = DeserializeSequence (&codebookSubsetRestrictionPresent,false,bIterator);
2761 
2762  int txmode;
2763  bIterator = DeserializeEnum (8,&txmode,bIterator);
2764  pcdsc->antennaInfo.transmissionMode = txmode;
2765 
2766  if (codebookSubsetRestrictionPresent[0])
2767  {
2768  // Deserialize codebookSubsetRestriction
2769  NS_FATAL_ERROR ("Not implemented yet");
2770  // ...
2771  }
2772 
2773  int txantennaselchosen;
2774  bIterator = DeserializeChoice (2,false,&txantennaselchosen,bIterator);
2775  if (txantennaselchosen == 0)
2776  {
2777  // Deserialize ue-TransmitAntennaSelection release
2778  bIterator = DeserializeNull (bIterator);
2779  }
2780  else if (txantennaselchosen == 1)
2781  {
2782  // Deserialize ue-TransmitAntennaSelection setup
2783  NS_FATAL_ERROR ("Not implemented yet");
2784  // ...
2785  }
2786  }
2787  }
2788  if (pcdsc->havePdschConfigDedicated)
2789  {
2790  // Deserialize pdsch-ConfigDedicated
2791  std::bitset<0> bitset0;
2792  bIterator = DeserializeSequence (&bitset0,false,bIterator);
2793 
2794  int slct;
2795 
2796  // Deserialize p-a
2797  bIterator = DeserializeEnum (8,&slct,bIterator);
2798  pcdsc->pdschConfigDedicated.pa = slct;
2799 
2800  bIterator = DeserializeNull (bIterator);
2801  }
2802 
2803  }
2804  if (pcdsc->haveUlConfiguration)
2805  {
2806  std::bitset<7> ulOpt;
2807  bIterator = DeserializeSequence (&ulOpt,false,bIterator);
2808  pcdsc->haveAntennaInfoUlDedicated = ulOpt[6];
2809  NS_ASSERT(!ulOpt[5]); // pusch-ConfigDedicatedSCell-r10 not present
2810  NS_ASSERT(!ulOpt[4]); // uplinkPowerControlDedicatedSCell-r10 not present
2811  NS_ASSERT(!ulOpt[3]); // cqi-ReportConfigSCell-r10 not present
2812  pcdsc->haveSoundingRsUlConfigDedicated = ulOpt[2];
2813  NS_ASSERT(!ulOpt[1]); // soundingRS-UL-ConfigDedicated-v1020 not present
2814  NS_ASSERT(!ulOpt[0]); // soundingRS-UL-ConfigDedicatedAperiodic-r10 not present
2815 
2816  if (pcdsc->haveAntennaInfoUlDedicated)
2817  {
2818  // Deserialize antennaInfo
2819  int sel;
2820  bIterator = DeserializeChoice (2,false,&sel,bIterator);
2821  if (sel == 1)
2822  {
2823  bIterator = DeserializeNull (bIterator);
2824  }
2825  else if (sel == 0)
2826  {
2827  std::bitset<1> codebookSubsetRestrictionPresent;
2828  bIterator = DeserializeSequence (&codebookSubsetRestrictionPresent,false,bIterator);
2829 
2830  int txmode;
2831  bIterator = DeserializeEnum (8,&txmode,bIterator);
2832  pcdsc->antennaInfoUl.transmissionMode = txmode;
2833 
2834  if (codebookSubsetRestrictionPresent[0])
2835  {
2836  // Deserialize codebookSubsetRestriction
2837  NS_FATAL_ERROR ("Not implemented yet");
2838  // ...
2839  }
2840 
2841  int txantennaselchosen;
2842  bIterator = DeserializeChoice (2,false,&txantennaselchosen,bIterator);
2843  if (txantennaselchosen == 0)
2844  {
2845  // Deserialize ue-TransmitAntennaSelection release
2846  bIterator = DeserializeNull (bIterator);
2847  }
2848  else if (txantennaselchosen == 1)
2849  {
2850  // Deserialize ue-TransmitAntennaSelection setup
2851  NS_FATAL_ERROR ("Not implemented yet");
2852  // ...
2853  }
2854  }
2855  }
2857  {
2858  // Deserialize soundingRS-UL-ConfigDedicated
2859  int sel;
2860  bIterator = DeserializeChoice (2,false,&sel,bIterator);
2861 
2862  if (sel == 0)
2863  {
2865 
2866  bIterator = DeserializeNull (bIterator);
2867  }
2868 
2869  else if (sel == 1)
2870  {
2872 
2873  std::bitset<0> bitset0;
2874  bIterator = DeserializeSequence (&bitset0,false,bIterator);
2875 
2876  int slct;
2877 
2878  // Deserialize srs-Bandwidth
2879  bIterator = DeserializeEnum (4,&slct,bIterator);
2881 
2882  // Deserialize srs-HoppingBandwidth
2883  bIterator = DeserializeEnum (4,&slct,bIterator);
2884 
2885  // Deserialize freqDomainPosition
2886  bIterator = DeserializeInteger (&slct,0,23,bIterator);
2887 
2888  // Deserialize duration
2889  bool duration;
2890  bIterator = DeserializeBoolean (&duration,bIterator);
2891 
2892  // Deserialize srs-ConfigIndex
2893  bIterator = DeserializeInteger (&slct,0,1023,bIterator);
2895 
2896  // Deserialize transmissionComb
2897  bIterator = DeserializeInteger (&slct,0,1,bIterator);
2898 
2899  // Deserialize cyclicShift
2900  bIterator = DeserializeEnum (8,&slct,bIterator);
2901  }
2902  }
2903 
2904 
2905  }
2906 
2907  return bIterator;
2908  }
2909 void
2910 RrcAsn1Header::Print (std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const
2911 {
2912  os << " srbToAddModList: " << std::endl;
2913  std::list<LteRrcSap::SrbToAddMod>::iterator it = radioResourceConfigDedicated.srbToAddModList.begin ();
2914  for (; it != radioResourceConfigDedicated.srbToAddModList.end (); it++)
2915  {
2916  os << " srbIdentity: " << (int)it->srbIdentity << std::endl;
2917  os << " logicalChannelConfig: " << std::endl;
2918  os << " priority: " << (int)it->logicalChannelConfig.priority << std::endl;
2919  os << " prioritizedBitRateKbps: " << (int)it->logicalChannelConfig.prioritizedBitRateKbps << std::endl;
2920  os << " bucketSizeDurationMs: " << (int)it->logicalChannelConfig.bucketSizeDurationMs << std::endl;
2921  os << " logicalChannelGroup: " << (int)it->logicalChannelConfig.logicalChannelGroup << std::endl;
2922  }
2923  os << std::endl;
2924 
2925  os << " drbToAddModList: " << std::endl;
2926  std::list<LteRrcSap::DrbToAddMod>::iterator it2 = radioResourceConfigDedicated.drbToAddModList.begin ();
2927  for (; it2 != radioResourceConfigDedicated.drbToAddModList.end (); it2++)
2928  {
2929  os << " epsBearerIdentity: " << (int)it2->epsBearerIdentity << std::endl;
2930  os << " drbIdentity: " << (int)it2->drbIdentity << std::endl;
2931  os << " rlcConfig: " << it2->rlcConfig.choice << std::endl;
2932  os << " logicalChannelIdentity: " << (int)it2->logicalChannelIdentity << std::endl;
2933  os << " logicalChannelConfig: " << std::endl;
2934  os << " priority: " << (int)it2->logicalChannelConfig.priority << std::endl;
2935  os << " prioritizedBitRateKbps: " << (int)it2->logicalChannelConfig.prioritizedBitRateKbps << std::endl;
2936  os << " bucketSizeDurationMs: " << (int)it2->logicalChannelConfig.bucketSizeDurationMs << std::endl;
2937  os << " logicalChannelGroup: " << (int)it2->logicalChannelConfig.logicalChannelGroup << std::endl;
2938  }
2939  os << std::endl;
2940 
2941  os << " drbToReleaseList: ";
2942  std::list<uint8_t>::iterator it3 = radioResourceConfigDedicated.drbToReleaseList.begin ();
2943  for (; it3 != radioResourceConfigDedicated.drbToReleaseList.end (); it3++)
2944  {
2945  os << (int)*it3 << ", ";
2946  }
2947  os << std::endl;
2948 
2949  os << " havePhysicalConfigDedicated: " << radioResourceConfigDedicated.havePhysicalConfigDedicated << std::endl;
2950 
2951  if (radioResourceConfigDedicated.havePhysicalConfigDedicated)
2952  {
2953  os << " physicalConfigDedicated: " << std::endl;
2954 
2955  os << " haveSoundingRsUlConfigDedicated: " << radioResourceConfigDedicated.physicalConfigDedicated.haveSoundingRsUlConfigDedicated << std::endl;
2956  if (radioResourceConfigDedicated.physicalConfigDedicated.haveSoundingRsUlConfigDedicated)
2957  {
2958  os << " soundingRsUlConfigDedicated: " << std::endl;
2959  os << " type: " << radioResourceConfigDedicated.physicalConfigDedicated.soundingRsUlConfigDedicated.type << std::endl;
2960  os << " srsBandwidth: " << (int)radioResourceConfigDedicated.physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth << std::endl;
2961  os << " srsConfigIndex: " << (int)radioResourceConfigDedicated.physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex << std::endl;
2962  }
2963 
2964  os << " haveAntennaInfoDedicated: " << radioResourceConfigDedicated.physicalConfigDedicated.haveAntennaInfoDedicated << std::endl;
2965  if (radioResourceConfigDedicated.physicalConfigDedicated.haveAntennaInfoDedicated)
2966  {
2967  os << " antennaInfo Tx mode: " << (int)radioResourceConfigDedicated.physicalConfigDedicated.antennaInfo.transmissionMode << std::endl;
2968  }
2969  }
2970 }
2971 
2974 {
2975  std::bitset<0> bitset0;
2976  int n;
2977 
2978  std::bitset<3> sysInfoBlkT1Opts;
2979  bIterator = DeserializeSequence (&sysInfoBlkT1Opts,false,bIterator);
2980 
2981  // Deserialize cellAccessRelatedInfo
2982  std::bitset<1> cellAccessRelatedInfoOpts;
2983  bIterator = DeserializeSequence (&cellAccessRelatedInfoOpts,false,bIterator);
2984 
2985  // Deserialize plmn-IdentityList
2986  int numPlmnIdentityInfoElements;
2987  bIterator = DeserializeSequenceOf (&numPlmnIdentityInfoElements,6,1,bIterator);
2988  for (int i = 0; i < numPlmnIdentityInfoElements; i++)
2989  {
2990  bIterator = DeserializeSequence (&bitset0,false,bIterator);
2991 
2992  // plmn-Identity
2993  bIterator = DeserializePlmnIdentity (&systemInformationBlockType1->cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity,bIterator);
2994  }
2995 
2996  // Deserialize trackingAreaCode
2997  std::bitset<16> trackingAreaCode;
2998  bIterator = DeserializeBitstring (&trackingAreaCode,bIterator);
2999 
3000  // Deserialize cellIdentity
3001  std::bitset<28> cellIdentity;
3002  bIterator = DeserializeBitstring (&cellIdentity,bIterator);
3003  systemInformationBlockType1->cellAccessRelatedInfo.cellIdentity = cellIdentity.to_ulong ();
3004 
3005  // Deserialize cellBarred
3006  bIterator = DeserializeEnum (2,&n,bIterator);
3007 
3008  // Deserialize intraFreqReselection
3009  bIterator = DeserializeEnum (2,&n,bIterator);
3010 
3011  // Deserialize csg-Indication
3012  bIterator = DeserializeBoolean (&systemInformationBlockType1->cellAccessRelatedInfo.csgIndication,bIterator);
3013 
3014  if (cellAccessRelatedInfoOpts[0])
3015  {
3016  // Deserialize csg-Identity
3017  std::bitset<27> csgIdentity;
3018  bIterator = DeserializeBitstring (&csgIdentity,bIterator);
3019  systemInformationBlockType1->cellAccessRelatedInfo.csgIdentity = csgIdentity.to_ulong ();
3020  }
3021 
3022  // Deserialize cellSelectionInfo
3023  std::bitset<1> qRxLevMinOffsetPresent;
3024  bIterator = DeserializeSequence (&qRxLevMinOffsetPresent,false,bIterator);
3025  bIterator = DeserializeInteger (&n,-70,-22,bIterator); //q-RxLevMin
3026  if (qRxLevMinOffsetPresent[0])
3027  {
3028  // Deserialize qRxLevMinOffset
3029  // ...
3030  }
3031 
3032  if (sysInfoBlkT1Opts[2])
3033  {
3034  // Deserialize p-Max
3035  // ...
3036  }
3037 
3038  // freqBandIndicator
3039  bIterator = DeserializeInteger (&n,1,64,bIterator);
3040 
3041  // schedulingInfoList
3042  int numSchedulingInfo;
3043  bIterator = DeserializeSequenceOf (&numSchedulingInfo,MAX_SI_MESSAGE,1,bIterator);
3044  for (int i = 0; i < numSchedulingInfo; i++)
3045  {
3046  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3047  bIterator = DeserializeEnum (7,&n,bIterator); // si-Periodicity
3048  int numSibType;
3049  bIterator = DeserializeSequenceOf (&numSibType,MAX_SIB - 1,0, bIterator); // sib-MappingInfo
3050  for (int j = 0; j < numSibType; j++)
3051  {
3052  bIterator = DeserializeEnum (16,&n,bIterator); // SIB-Type
3053  }
3054  }
3055 
3056  if (sysInfoBlkT1Opts[1])
3057  {
3058  // tdd-Config
3059  // ...
3060  }
3061 
3062  // si-WindowLength
3063  bIterator = DeserializeEnum (7,&n,bIterator);
3064 
3065  // systemInfoValueTag
3066  bIterator = DeserializeInteger (&n,0,31,bIterator);
3067 
3068  if (sysInfoBlkT1Opts[0])
3069  {
3070  // Deserialize nonCriticalExtension
3071  // ...
3072  }
3073  return bIterator;
3074 }
3075 
3078 {
3079  std::bitset<0> bitset0;
3080  int n;
3081 
3082  std::bitset<2> sysInfoBlkT2Opts;
3083  bIterator = DeserializeSequence (&sysInfoBlkT2Opts,true,bIterator);
3084  if (sysInfoBlkT2Opts[1])
3085  {
3086  // Deserialize ac-BarringInfo
3087  // ...
3088  }
3089 
3090  // Deserialize radioResourceConfigCommon
3091  bIterator = DeserializeRadioResourceConfigCommonSib (&systemInformationBlockType2->radioResourceConfigCommon, bIterator);
3092 
3093  // Deserialize ue-TimersAndConstants
3094  bIterator = DeserializeSequence (&bitset0,true,bIterator);
3095  bIterator = DeserializeEnum (8,&n,bIterator); // t300
3096  bIterator = DeserializeEnum (8,&n,bIterator); // t301
3097  bIterator = DeserializeEnum (7,&n,bIterator); // t310
3098  bIterator = DeserializeEnum (8,&n,bIterator); // n310
3099  bIterator = DeserializeEnum (7,&n,bIterator); // t311
3100  bIterator = DeserializeEnum (8,&n,bIterator); // n311
3101 
3102  // Deserialize freqInfo
3103  std::bitset<2> freqInfoOpts;
3104  bIterator = DeserializeSequence (&freqInfoOpts,false,bIterator);
3105  if (freqInfoOpts[1])
3106  {
3107  // Deserialize ul-CarrierFreq
3108  bIterator = DeserializeInteger (&n, 0, MAX_EARFCN, bIterator);
3109  systemInformationBlockType2->freqInfo.ulCarrierFreq = n;
3110  }
3111  if (freqInfoOpts[0])
3112  {
3113  // Deserialize ul-Bandwidth
3114  bIterator = DeserializeEnum (6, &n, bIterator);
3115  systemInformationBlockType2->freqInfo.ulBandwidth = EnumToBandwidth (n);
3116  }
3117 
3118  // additionalSpectrumEmission
3119  bIterator = DeserializeInteger (&n,1,32,bIterator);
3120 
3121  if (sysInfoBlkT2Opts[0])
3122  {
3123  // Deserialize mbsfn-SubframeConfigList
3124  // ...
3125  }
3126 
3127  // Deserialize timeAlignmentTimerCommon
3128  bIterator = DeserializeEnum (8,&n,bIterator);
3129 
3130  return bIterator;
3131 }
3132 
3133 
3136 {
3137  std::bitset<0> bitset0;
3138  int n;
3139 
3140  std::bitset<9> rrCfgCommOptions;
3141  bIterator = DeserializeSequence (&rrCfgCommOptions,true,bIterator);
3142 
3143  // rach-ConfigCommon
3144  if (rrCfgCommOptions[8])
3145  {
3146  bIterator = DeserializeRachConfigCommon (&radioResourceConfigCommon->rachConfigCommon, bIterator);
3147  }
3148 
3149  // prach-Config
3150  std::bitset<1> prachConfigInfoPresent;
3151  bIterator = DeserializeSequence (&prachConfigInfoPresent,false,bIterator);
3152 
3153  // prach-Config -> rootSequenceIndex
3154  bIterator = DeserializeInteger (&n,0,1023,bIterator);
3155 
3156  // prach-Config -> prach-ConfigInfo
3157  if (prachConfigInfoPresent[0])
3158  {
3159  // ...
3160  }
3161 
3162  // pdsch-ConfigCommon
3163  if (rrCfgCommOptions[7])
3164  {
3165  // ...
3166  }
3167 
3168  // pusch-ConfigCommon
3169  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3170 
3171  // pusch-ConfigCommon -> pusch-ConfigBasic
3172  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3173 
3174  // pusch-ConfigCommon -> pusch-ConfigBasic -> n-SB
3175  bIterator = DeserializeInteger (&n,1,4,bIterator);
3176 
3177  // pusch-ConfigCommon -> pusch-ConfigBasic -> hoppingMode
3178  bIterator = DeserializeEnum (2,&n,bIterator);
3179 
3180  // pusch-ConfigCommon -> pusch-ConfigBasic -> pusch-HoppingOffset
3181  bIterator = DeserializeInteger (&n,0,98,bIterator);
3182 
3183  // pusch-ConfigCommon -> pusch-ConfigBasic -> enable64QAM
3184  bool enable64QAM;
3185  bIterator = DeserializeBoolean (&enable64QAM,bIterator);
3186 
3187  // ul-ReferenceSignalsPUSCH
3188  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3189 
3190  // groupHoppingEnabled
3191  bool dummyBool;
3192  bIterator = DeserializeBoolean (&dummyBool,bIterator);
3193 
3194  // groupAssignmentPUSCH
3195  bIterator = DeserializeInteger (&n,0,29,bIterator);
3196 
3197  // sequenceHoppingEnabled
3198  bIterator = DeserializeBoolean (&dummyBool,bIterator);
3199 
3200  // cyclicShift
3201  bIterator = DeserializeInteger (&n,0,7,bIterator);
3202 
3203  // phich-Config
3204  if (rrCfgCommOptions[6])
3205  {
3206  // ...
3207  }
3208 
3209  // pucch-ConfigCommon
3210  if (rrCfgCommOptions[5])
3211  {
3212  // ...
3213  }
3214 
3215  // soundingRS-UL-ConfigCommon
3216  if (rrCfgCommOptions[4])
3217  {
3218  // ...
3219  }
3220 
3221  // uplinkPowerControlCommon
3222  if (rrCfgCommOptions[3])
3223  {
3224  // ...
3225  }
3226 
3227  // antennaInfoCommon
3228  if (rrCfgCommOptions[2])
3229  {
3230  // ...
3231  }
3232 
3233  // p-Max
3234  if (rrCfgCommOptions[1])
3235  {
3236  // ...
3237  }
3238 
3239  // tdd-Config
3240  if (rrCfgCommOptions[0])
3241  {
3242  // ...
3243  }
3244 
3245  // ul-CyclicPrefixLength
3246  bIterator = DeserializeEnum (2,&n,bIterator);
3247 
3248  return bIterator;
3249 }
3250 
3253 {
3254  std::bitset<0> bitset0;
3255  int n;
3256 
3257  bIterator = DeserializeSequence (&bitset0,true,bIterator);
3258 
3259  // preambleInfo
3260  std::bitset<1> preamblesGroupAConfigPresent;
3261  bIterator = DeserializeSequence (&preamblesGroupAConfigPresent,false,bIterator);
3262 
3263  // numberOfRA-Preambles
3264  bIterator = DeserializeEnum (16,&n,bIterator);
3265  switch (n)
3266  {
3267  case 0:
3268  rachConfigCommon->preambleInfo.numberOfRaPreambles = 4;
3269  break;
3270  case 1:
3271  rachConfigCommon->preambleInfo.numberOfRaPreambles = 8;
3272  break;
3273  case 2:
3274  rachConfigCommon->preambleInfo.numberOfRaPreambles = 12;
3275  break;
3276  case 3:
3277  rachConfigCommon->preambleInfo.numberOfRaPreambles = 16;
3278  break;
3279  case 4:
3280  rachConfigCommon->preambleInfo.numberOfRaPreambles = 20;
3281  break;
3282  case 5:
3283  rachConfigCommon->preambleInfo.numberOfRaPreambles = 24;
3284  break;
3285  case 6:
3286  rachConfigCommon->preambleInfo.numberOfRaPreambles = 28;
3287  break;
3288  case 7:
3289  rachConfigCommon->preambleInfo.numberOfRaPreambles = 32;
3290  break;
3291  case 8:
3292  rachConfigCommon->preambleInfo.numberOfRaPreambles = 36;
3293  break;
3294  case 9:
3295  rachConfigCommon->preambleInfo.numberOfRaPreambles = 40;
3296  break;
3297  case 10:
3298  rachConfigCommon->preambleInfo.numberOfRaPreambles = 44;
3299  break;
3300  case 11:
3301  rachConfigCommon->preambleInfo.numberOfRaPreambles = 48;
3302  break;
3303  case 12:
3304  rachConfigCommon->preambleInfo.numberOfRaPreambles = 52;
3305  break;
3306  case 13:
3307  rachConfigCommon->preambleInfo.numberOfRaPreambles = 56;
3308  break;
3309  case 14:
3310  rachConfigCommon->preambleInfo.numberOfRaPreambles = 60;
3311  break;
3312  case 15:
3313  rachConfigCommon->preambleInfo.numberOfRaPreambles = 64;
3314  break;
3315  default:
3316  rachConfigCommon->preambleInfo.numberOfRaPreambles = 4;
3317  }
3318 
3319  if (preamblesGroupAConfigPresent[0])
3320  {
3321  // Deserialize preamblesGroupAConfig
3322  // ...
3323  }
3324 
3325  // powerRampingParameters
3326  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3327  bIterator = DeserializeEnum (4,&n,bIterator); // powerRampingStep
3328  bIterator = DeserializeEnum (16,&n,bIterator); // preambleInitialReceivedTargetPower
3329 
3330  // ra-SupervisionInfo
3331  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3332  bIterator = DeserializeEnum (11,&n,bIterator); // preambleTransMax
3333  switch (n)
3334  {
3335  case 0:
3336  rachConfigCommon->raSupervisionInfo.preambleTransMax = 3;
3337  break;
3338  case 1:
3339  rachConfigCommon->raSupervisionInfo.preambleTransMax = 4;
3340  break;
3341  case 2:
3342  rachConfigCommon->raSupervisionInfo.preambleTransMax = 5;
3343  break;
3344  case 3:
3345  rachConfigCommon->raSupervisionInfo.preambleTransMax = 6;
3346  break;
3347  case 4:
3348  rachConfigCommon->raSupervisionInfo.preambleTransMax = 7;
3349  break;
3350  case 5:
3351  rachConfigCommon->raSupervisionInfo.preambleTransMax = 8;
3352  break;
3353  case 6:
3354  rachConfigCommon->raSupervisionInfo.preambleTransMax = 10;
3355  break;
3356  case 7:
3357  rachConfigCommon->raSupervisionInfo.preambleTransMax = 20;
3358  break;
3359  case 8:
3360  rachConfigCommon->raSupervisionInfo.preambleTransMax = 50;
3361  break;
3362  case 9:
3363  rachConfigCommon->raSupervisionInfo.preambleTransMax = 100;
3364  break;
3365  case 10:
3366  rachConfigCommon->raSupervisionInfo.preambleTransMax = 200;
3367  break;
3368  default:
3369  rachConfigCommon->raSupervisionInfo.preambleTransMax = 0;
3370  }
3371 
3372  // ra-ResponseWindowSize
3373  bIterator = DeserializeEnum (8,&n,bIterator);
3374  switch (n)
3375  {
3376  case 0:
3377  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 2;
3378  break;
3379  case 1:
3380  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 3;
3381  break;
3382  case 2:
3383  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 4;
3384  break;
3385  case 3:
3386  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 5;
3387  break;
3388  case 4:
3389  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 6;
3390  break;
3391  case 5:
3392  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 7;
3393  break;
3394  case 6:
3395  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 8;
3396  break;
3397  case 7:
3398  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 10;
3399  break;
3400  default:
3401  rachConfigCommon->raSupervisionInfo.raResponseWindowSize = 0;
3402  }
3403 
3404  bIterator = DeserializeEnum (8,&n,bIterator); // mac-ContentionResolutionTimer
3405  bIterator = DeserializeInteger (&n,1,8,bIterator); //maxHARQ-Msg3Tx
3406 
3407  // connEstFailCount
3408  bIterator = DeserializeEnum (8,&n,bIterator);
3409  switch (n)
3410  {
3411  case 1:
3412  rachConfigCommon->txFailParam.connEstFailCount = 1;
3413  break;
3414  case 2:
3415  rachConfigCommon->txFailParam.connEstFailCount = 2;
3416  break;
3417  case 3:
3418  rachConfigCommon->txFailParam.connEstFailCount = 3;
3419  break;
3420  case 4:
3421  rachConfigCommon->txFailParam.connEstFailCount = 4;
3422  break;
3423  default:
3424  rachConfigCommon->txFailParam.connEstFailCount = 1;
3425  }
3426  return bIterator;
3427 }
3428 
3431 {
3432  std::bitset<0> bitset0;
3433  int n;
3434 
3435  bIterator = DeserializeSequence (&bitset0,true,bIterator);
3436 
3437  // rach-ConfigCommon
3438  bIterator = DeserializeRachConfigCommon (&radioResourceConfigCommonSib->rachConfigCommon, bIterator);
3439 
3440  // bcch-Config
3441  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3442  bIterator = DeserializeEnum (4,&n,bIterator); // modificationPeriodCoeff
3443 
3444  // pcch-Config
3445  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3446  bIterator = DeserializeEnum (4,&n,bIterator); // defaultPagingCycle
3447  bIterator = DeserializeEnum (8,&n,bIterator); // nB
3448 
3449  // prach-Config
3450  std::bitset<1> prachConfigInfoPresent;
3451  bIterator = DeserializeSequence (&prachConfigInfoPresent,false,bIterator);
3452  // prach-Config -> rootSequenceIndex
3453  bIterator = DeserializeInteger (&n,0,1023,bIterator);
3454  // prach-Config -> prach-ConfigInfo
3455  if (prachConfigInfoPresent[0])
3456  {
3457  // ...
3458  }
3459 
3460  // pdsch-ConfigCommon
3461  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3462  bIterator = DeserializeInteger (&n,-60,50,bIterator); // referenceSignalPower
3463  bIterator = DeserializeInteger (&n,0,3,bIterator); // p-b
3464 
3465  // pusch-ConfigCommon
3466  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3467 
3468  // pusch-ConfigCommon -> pusch-ConfigBasic
3469  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3470 
3471  // pusch-ConfigCommon -> pusch-ConfigBasic -> n-SB
3472  bIterator = DeserializeInteger (&n,1,4,bIterator);
3473 
3474  // pusch-ConfigCommon -> pusch-ConfigBasic -> hoppingMode
3475  bIterator = DeserializeEnum (2,&n,bIterator);
3476 
3477  // pusch-ConfigCommon -> pusch-ConfigBasic -> pusch-HoppingOffset
3478  bIterator = DeserializeInteger (&n,0,98,bIterator);
3479 
3480  // pusch-ConfigCommon -> pusch-ConfigBasic -> enable64QAM
3481  bool dummyBoolean;
3482  bIterator = DeserializeBoolean (&dummyBoolean,bIterator);
3483 
3484  // ul-ReferenceSignalsPUSCH
3485  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3486 
3487  // groupHoppingEnabled
3488  bIterator = DeserializeBoolean (&dummyBoolean,bIterator);
3489 
3490  // groupAssignmentPUSCH
3491  bIterator = DeserializeInteger (&n,0,29,bIterator);
3492 
3493  // sequenceHoppingEnabled
3494  bIterator = DeserializeBoolean (&dummyBoolean,bIterator);
3495 
3496  // cyclicShift
3497  bIterator = DeserializeInteger (&n,0,7,bIterator);
3498 
3499  // pucch-ConfigCommon
3500  bIterator = DeserializeEnum (3,&n,bIterator); // deltaPUCCH-Shift
3501  bIterator = DeserializeInteger (&n,0,98,bIterator); // nRB-CQI
3502  bIterator = DeserializeInteger (&n,0,7,bIterator); // nCS-AN
3503  bIterator = DeserializeInteger (&n,0,2047,bIterator); // n1PUCCH-AN
3504 
3505  // soundingRS-UL-ConfigCommon
3506  int choice;
3507  bIterator = DeserializeChoice (2,false,&choice,bIterator);
3508  if (choice == 0)
3509  {
3510  bIterator = DeserializeNull (bIterator); // release
3511  }
3512  if (choice == 1)
3513  {
3514  // setup
3515  // ...
3516  }
3517 
3518  // uplinkPowerControlCommon
3519  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3520  bIterator = DeserializeInteger (&n,-126,24,bIterator); // p0-NominalPUSCH
3521  bIterator = DeserializeEnum (8,&n,bIterator); // alpha
3522  bIterator = DeserializeInteger (&n,-127,-96,bIterator); // p0-NominalPUCCH
3523  //deltaFList-PUCCH
3524  bIterator = DeserializeSequence (&bitset0,false,bIterator);
3525  bIterator = DeserializeEnum (3,&n,bIterator); // deltaF-PUCCH-Format1
3526  bIterator = DeserializeEnum (3,&n,bIterator); // deltaF-PUCCH-Format1b
3527  bIterator = DeserializeEnum (4,&n,bIterator); // deltaF-PUCCH-Format2
3528  bIterator = DeserializeEnum (3,&n,bIterator); // deltaF-PUCCH-Format2a
3529  bIterator = DeserializeEnum (3,&n,bIterator); // deltaF-PUCCH-Format2b
3530  bIterator = DeserializeInteger (&n,-1,6,bIterator); // deltaPreambleMsg3
3531 
3532  // ul-CyclicPrefixLength
3533  bIterator = DeserializeEnum (2,&n,bIterator);
3534 
3535  return bIterator;
3536 }
3537 
3540 {
3541  int n;
3542  std::bitset<0> b0;
3543  std::bitset<4> measResultOptionalPresent;
3544  // bIterator = DeserializeSequence (&measResultNeighCellsPresent,true,bIterator);
3545  bIterator = DeserializeSequence (&measResultOptionalPresent,true,bIterator);
3546 
3547  // Deserialize measId
3548  bIterator = DeserializeInteger (&n, 1, MAX_MEAS_ID, bIterator);
3549  measResults->measId = n;
3550 
3551  // Deserialize measResultServCell
3552  bIterator = DeserializeSequence (&b0,false,bIterator);
3553 
3554  // Deserialize rsrpResult
3555  bIterator = DeserializeInteger (&n, 0, 97, bIterator);
3556  measResults->rsrpResult = n;
3557 
3558  // Deserialize rsrqResult
3559  bIterator = DeserializeInteger (&n, 0, 34, bIterator);
3560  measResults->rsrqResult = n;
3561 
3562  measResults->haveMeasResultNeighCells = measResultOptionalPresent[0];
3563  measResults->haveScellsMeas = measResultOptionalPresent[3];
3564  if ( measResults->haveMeasResultNeighCells)
3565  {
3566  int measResultNeighCellsChoice;
3567 
3568  // Deserialize measResultNeighCells
3569  bIterator = DeserializeChoice (4,false,&measResultNeighCellsChoice,bIterator);
3570 
3571  if (measResultNeighCellsChoice == 0)
3572  {
3573  // Deserialize measResultListEUTRA
3574  int numElems;
3575  bIterator = DeserializeSequenceOf (&numElems,MAX_CELL_REPORT,1,bIterator);
3576 
3577  for (int i = 0; i < numElems; i++)
3578  {
3579  LteRrcSap::MeasResultEutra measResultEutra;
3580 
3581  std::bitset<1> isCgiInfoPresent;
3582  bIterator = DeserializeSequence (&isCgiInfoPresent,false,bIterator);
3583 
3584  // PhysCellId
3585  bIterator = DeserializeInteger (&n,0,503,bIterator);
3586  measResultEutra.physCellId = n;
3587 
3588  measResultEutra.haveCgiInfo = isCgiInfoPresent[0];
3589  if (isCgiInfoPresent[0])
3590  {
3591  std::bitset<1> havePlmnIdentityList;
3592  bIterator = DeserializeSequence (&havePlmnIdentityList,false,bIterator);
3593 
3594  // Deserialize cellGlobalId
3595  bIterator = DeserializeSequence (&b0,false,bIterator);
3596 
3597  // Deserialize plmn-Identity
3598  bIterator = DeserializePlmnIdentity (&measResultEutra.cgiInfo.plmnIdentity,bIterator);
3599 
3600  // Deserialize CellIdentity
3601  std::bitset<28> cellId;
3602  bIterator = DeserializeBitstring (&cellId,bIterator);
3603  measResultEutra.cgiInfo.cellIdentity = cellId.to_ulong ();
3604 
3605  // Deserialize trackingAreaCode
3606  std::bitset<16> trArCo;
3607  bIterator = DeserializeBitstring (&trArCo,bIterator);
3608  measResultEutra.cgiInfo.trackingAreaCode = trArCo.to_ulong ();
3609 
3610  // Deserialize plmn-IdentityList
3611  if (havePlmnIdentityList[0])
3612  {
3613  int numPlmnElems;
3614  bIterator = DeserializeSequenceOf (&numPlmnElems, 5, 1, bIterator);
3615 
3616  for ( int j = 0; j < numPlmnElems; j++)
3617  {
3618  uint32_t plmnId;
3619  bIterator = DeserializePlmnIdentity (&plmnId,bIterator);
3620  measResultEutra.cgiInfo.plmnIdentityList.push_back (plmnId);
3621  }
3622  }
3623  }
3624 
3625  // Deserialize measResult
3626  std::bitset<2> measResultOpts;
3627  bIterator = DeserializeSequence (&measResultOpts, true, bIterator);
3628 
3629  measResultEutra.haveRsrpResult = measResultOpts[1];
3630  if (measResultOpts[1])
3631  {
3632  // Deserialize rsrpResult
3633  bIterator = DeserializeInteger (&n,0,97,bIterator);
3634  measResultEutra.rsrpResult = n;
3635  }
3636 
3637  measResultEutra.haveRsrqResult = measResultOpts[0];
3638  if (measResultOpts[0])
3639  {
3640  // Deserialize rsrqResult
3641  bIterator = DeserializeInteger (&n,0,34,bIterator);
3642  measResultEutra.rsrqResult = n;
3643  }
3644 
3645  measResults->measResultListEutra.push_back (measResultEutra);
3646  }
3647  }
3648 
3649  if (measResultNeighCellsChoice == 1)
3650  {
3651  // Deserialize measResultListUTRA
3652  // ...
3653  }
3654 
3655  if (measResultNeighCellsChoice == 2)
3656  {
3657  // Deserialize measResultListGERAN
3658  // ...
3659  }
3660  if (measResultNeighCellsChoice == 3)
3661  {
3662  // Deserialize measResultsCDMA2000
3663  // ...
3664  }
3665  }
3666  if (measResults->haveScellsMeas)
3667  {
3668 
3669  int numElems;
3670  bIterator = DeserializeSequenceOf (&numElems,MAX_SCELL_REPORT,1,bIterator);
3671  for (int i = 0; i < numElems; i++)
3672  {
3673  LteRrcSap::MeasResultScell measResultScell;
3674  int measScellId;
3675  // Deserialize measId
3676  bIterator = DeserializeInteger (&measScellId, 1,MAX_SCELL_REPORT,bIterator);
3677  measResultScell.servFreqId = measScellId;
3678  std::bitset<2> measResultScellPresent;
3679  bIterator = DeserializeSequence (&measResultScellPresent,true,bIterator);
3680  measResults->measScellResultList.haveMeasurementResultsServingSCells = measResultScellPresent[0];
3681  measResults->measScellResultList.haveMeasurementResultsNeighCell = measResultScellPresent[1];
3683  {
3684  // Deserialize measResult
3685  std::bitset<2> measResultOpts;
3686  bIterator = DeserializeSequence (&measResultOpts, true, bIterator);
3687 
3688  measResultScell.haveRsrpResult = measResultOpts[1];
3689  if (measResultOpts[1])
3690  {
3691  // Deserialize rsrpResult
3692  bIterator = DeserializeInteger (&n,0,97,bIterator);
3693  measResultScell.rsrpResult = n;
3694  }
3695 
3696  measResultScell.haveRsrqResult = measResultOpts[0];
3697  if (measResultOpts[0])
3698  {
3699  // Deserialize rsrqResult
3700  bIterator = DeserializeInteger (&n,0,34,bIterator);
3701  measResultScell.rsrqResult = n;
3702  }
3703  }
3705  {
3706  // Deserialize measResultBestNeighCell
3707  }
3708  measResults->measScellResultList.measResultScell.push_back (measResultScell);
3709  }
3710 
3711  }
3712  return bIterator;
3713 }
3714 
3717 {
3718  int n;
3719  std::bitset<1> isMccPresent;
3720  bIterator = DeserializeSequence (&isMccPresent,false,bIterator);
3721 
3722  if (isMccPresent[0])
3723  {
3724  // Deserialize mcc
3725  // ...
3726  }
3727 
3728  // Deserialize mnc
3729  int mncDigits;
3730  int mnc = 0;
3731  bIterator = DeserializeSequenceOf (&mncDigits,3,2,bIterator);
3732 
3733  for (int j = mncDigits - 1; j >= 0; j--)
3734  {
3735  bIterator = DeserializeInteger (&n,0,9,bIterator);
3736  mnc += n * pow (10,j);
3737  }
3738 
3739  *plmnId = mnc;
3740 
3741  // cellReservedForOperatorUse
3742  bIterator = DeserializeEnum (2,&n,bIterator);
3743  return bIterator;
3744 }
3745 
3748 {
3749  std::bitset<0> bitset0;
3750  std::bitset<2> bitset2;
3751  std::bitset<11> bitset11;
3752  int n;
3753 
3754  // measConfig
3755  bIterator = DeserializeSequence (&bitset11,true,bIterator);
3756 
3757  if (bitset11[10])
3758  {
3759  // measObjectToRemoveList
3760  int measObjectToRemoveListElems;
3761  bIterator = DeserializeSequenceOf (&measObjectToRemoveListElems, MAX_OBJECT_ID, 1, bIterator);
3762 
3763  for (int i = 0; i < measObjectToRemoveListElems; i++)
3764  {
3765  bIterator = DeserializeInteger (&n, 1, MAX_OBJECT_ID, bIterator);
3766  measConfig->measObjectToRemoveList.push_back (n);
3767  }
3768  }
3769 
3770  if (bitset11[9])
3771  {
3772  // measObjectToAddModList
3773  int measObjectToAddModListElems;
3774  bIterator = DeserializeSequenceOf (&measObjectToAddModListElems, MAX_OBJECT_ID, 1, bIterator);
3775 
3776  for (int i = 0; i < measObjectToAddModListElems; i++)
3777  {
3779 
3780  bIterator = DeserializeSequence (&bitset0, false, bIterator);
3781 
3782  bIterator = DeserializeInteger (&n, 1, MAX_OBJECT_ID, bIterator);
3783  elem.measObjectId = n;
3784 
3785  int measObjectChoice;
3786  bIterator = DeserializeChoice (4, true, &measObjectChoice, bIterator);
3787 
3788  switch (measObjectChoice)
3789  {
3790  case 1:
3791  // Deserialize measObjectUTRA
3792  // ...
3793  break;
3794 
3795  case 2:
3796  // Deserialize measObjectGERAN
3797  // ...
3798  break;
3799 
3800  case 3:
3801  // Deserialize measObjectCDMA2000
3802  // ...
3803  break;
3804 
3805  case 0:
3806  default:
3807  // Deserialize measObjectEUTRA
3808  std::bitset<5> measObjectEutraOpts;
3809  bIterator = DeserializeSequence (&measObjectEutraOpts, true, bIterator);
3810 
3811  // carrierFreq
3812  bIterator = DeserializeInteger (&n, 0, MAX_EARFCN, bIterator);
3813  elem.measObjectEutra.carrierFreq = n;
3814 
3815  // allowedMeasBandwidth
3816  bIterator = DeserializeEnum (6, &n, bIterator);
3818 
3819  // presenceAntennaPort1
3820  bIterator = DeserializeBoolean (&elem.measObjectEutra.presenceAntennaPort1, bIterator);
3821 
3822  // neighCellConfig
3823  bIterator = DeserializeBitstring (&bitset2, bIterator);
3824  elem.measObjectEutra.neighCellConfig = bitset2.to_ulong ();
3825 
3826  // offsetFreq
3827  bIterator = DeserializeQoffsetRange (&elem.measObjectEutra.offsetFreq, bIterator);
3828 
3829  if (measObjectEutraOpts[4])
3830  {
3831  // cellsToRemoveList
3832  int numElems;
3833  bIterator = DeserializeSequenceOf (&numElems, MAX_CELL_MEAS, 1, bIterator);
3834 
3835  for (int i = 0; i < numElems; i++)
3836  {
3837  bIterator = DeserializeInteger (&n, 1, MAX_CELL_MEAS, bIterator);
3838  elem.measObjectEutra.cellsToRemoveList.push_back (n);
3839  }
3840  }
3841 
3842  if (measObjectEutraOpts[3])
3843  {
3844  // cellsToAddModList
3845  int numElems;
3846  bIterator = DeserializeSequenceOf (&numElems, MAX_CELL_MEAS, 1, bIterator);
3847 
3848  for (int i = 0; i < numElems; i++)
3849  {
3850  LteRrcSap::CellsToAddMod cellsToAddMod;
3851 
3852  bIterator = DeserializeSequence (&bitset0, false, bIterator);
3853 
3854  // cellIndex
3855  bIterator = DeserializeInteger (&n, 1, MAX_CELL_MEAS, bIterator);
3856  cellsToAddMod.cellIndex = n;
3857 
3858  // PhysCellId
3859  bIterator = DeserializeInteger (&n, 0, 503, bIterator);
3860  cellsToAddMod.physCellId = n;
3861 
3862  // cellIndividualOffset
3863  bIterator = DeserializeQoffsetRange ( &cellsToAddMod.cellIndividualOffset, bIterator);
3864 
3865  elem.measObjectEutra.cellsToAddModList.push_back (cellsToAddMod);
3866  }
3867  }
3868 
3869  if (measObjectEutraOpts[2])
3870  {
3871  // blackCellsToRemoveList
3872  int numElems;
3873  bIterator = DeserializeSequenceOf (&numElems, MAX_CELL_MEAS, 1, bIterator);
3874 
3875  for (int i = 0; i < numElems; i++)
3876  {
3877  bIterator = DeserializeInteger (&n, 1, MAX_CELL_MEAS, bIterator);
3878  elem.measObjectEutra.blackCellsToRemoveList.push_back (n);
3879  }
3880  }
3881 
3882 
3883  if (measObjectEutraOpts[1])
3884  {
3885  // blackCellsToAddModList
3886  int numElems;
3887  bIterator = DeserializeSequenceOf (&numElems, MAX_CELL_MEAS, 1, bIterator);
3888 
3889  for (int i = 0; i < numElems; i++)
3890  {
3891  LteRrcSap::BlackCellsToAddMod blackCellsToAddMod;
3892  bIterator = DeserializeSequence (&bitset0, false, bIterator);
3893 
3894  bIterator = DeserializeInteger (&n, 1, MAX_CELL_MEAS, bIterator);
3895  blackCellsToAddMod.cellIndex = n;
3896 
3897  // PhysCellIdRange
3898  std::bitset<1> isRangePresent;
3899  bIterator = DeserializeSequence (&isRangePresent, false, bIterator);
3900 
3901  // start
3902  bIterator = DeserializeInteger (&n, 0, 503, bIterator);
3903  blackCellsToAddMod.physCellIdRange.start = n;
3904 
3905  blackCellsToAddMod.physCellIdRange.haveRange = isRangePresent[0];
3906  // initialize range to silence compiler warning
3907  blackCellsToAddMod.physCellIdRange.range = 0;
3908  if (blackCellsToAddMod.physCellIdRange.haveRange)
3909  {
3910  // range
3911  bIterator = DeserializeEnum (16, &n, bIterator);
3912  switch (n)
3913  {
3914  case 0:
3915  blackCellsToAddMod.physCellIdRange.range = 4;
3916  break;
3917  case 1:
3918  blackCellsToAddMod.physCellIdRange.range = 8;
3919  break;
3920  case 2:
3921  blackCellsToAddMod.physCellIdRange.range = 12;
3922  break;
3923  case 3:
3924  blackCellsToAddMod.physCellIdRange.range = 16;
3925  break;
3926  case 4:
3927  blackCellsToAddMod.physCellIdRange.range = 24;
3928  break;
3929  case 5:
3930  blackCellsToAddMod.physCellIdRange.range = 32;
3931  break;
3932  case 6:
3933  blackCellsToAddMod.physCellIdRange.range = 48;
3934  break;
3935  case 7:
3936  blackCellsToAddMod.physCellIdRange.range = 64;
3937  break;
3938  case 8:
3939  blackCellsToAddMod.physCellIdRange.range = 84;
3940  break;
3941  case 9:
3942  blackCellsToAddMod.physCellIdRange.range = 96;
3943  break;
3944  case 10:
3945  blackCellsToAddMod.physCellIdRange.range = 128;
3946  break;
3947  case 11:
3948  blackCellsToAddMod.physCellIdRange.range = 168;
3949  break;
3950  case 12:
3951  blackCellsToAddMod.physCellIdRange.range = 252;
3952  break;
3953  case 13:
3954  blackCellsToAddMod.physCellIdRange.range = 504;
3955  break;
3956  default:
3957  blackCellsToAddMod.physCellIdRange.range = 0;
3958  }
3959  }
3960 
3961  elem.measObjectEutra.blackCellsToAddModList.push_back (blackCellsToAddMod);
3962  }
3963  }
3964 
3965  elem.measObjectEutra.haveCellForWhichToReportCGI = measObjectEutraOpts[0];
3966  if (measObjectEutraOpts[0])
3967  {
3968  // cellForWhichToReportCGI
3969  bIterator = DeserializeInteger (&n, 0, 503, bIterator);
3971  }
3972  }
3973  measConfig->measObjectToAddModList.push_back (elem);
3974  }
3975  }
3976 
3977  if (bitset11[8])
3978  {
3979  // reportConfigToRemoveList
3980  int reportConfigToRemoveListElems;
3981  bIterator = DeserializeSequenceOf (&reportConfigToRemoveListElems, MAX_REPORT_CONFIG_ID, 1, bIterator);
3982 
3983  for (int i = 0; i < reportConfigToRemoveListElems; i++)
3984  {
3985  bIterator = DeserializeInteger (&n, 1, MAX_REPORT_CONFIG_ID, bIterator);
3986  measConfig->reportConfigToRemoveList.push_back (n);
3987  }
3988  }
3989 
3990  if (bitset11[7])
3991  {
3992  // reportConfigToAddModList
3993  int reportConfigToAddModListElems;
3994  bIterator = DeserializeSequenceOf (&reportConfigToAddModListElems, MAX_REPORT_CONFIG_ID, 1, bIterator);
3995 
3996  for (int i = 0; i < reportConfigToAddModListElems; i++)
3997  {
3999 
4000  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4001  bIterator = DeserializeInteger (&n, 1, MAX_REPORT_CONFIG_ID, bIterator);
4002  elem.reportConfigId = n;
4003 
4004  // Deserialize reportConfig
4005  int reportConfigChoice;
4006  bIterator = DeserializeChoice (2, false, &reportConfigChoice, bIterator);
4007 
4008  if (reportConfigChoice == 0)
4009  {
4010  // reportConfigEUTRA
4011  bIterator = DeserializeSequence (&bitset0, true, bIterator);
4012 
4013  // triggerType
4014  int triggerTypeChoice;
4015  bIterator = DeserializeChoice (2, false, &triggerTypeChoice, bIterator);
4016 
4017  if (triggerTypeChoice == 0)
4018  {
4019  // event
4021  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4022 
4023  // eventId
4024  int eventIdChoice;
4025  bIterator = DeserializeChoice (5, true, &eventIdChoice, bIterator);
4026 
4027  switch (eventIdChoice)
4028  {
4029  case 0:
4031  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4032  bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
4033  break;
4034 
4035  case 1:
4037  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4038  bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
4039  break;
4040 
4041  case 2:
4043  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4044  bIterator = DeserializeInteger (&n, -30, 30, bIterator);
4045  elem.reportConfigEutra.a3Offset = n;
4046  bIterator = DeserializeBoolean (&elem.reportConfigEutra.reportOnLeave, bIterator);
4047  break;
4048 
4049  case 3:
4051  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4052  bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
4053  break;
4054 
4055  case 4:
4056  default:
4058  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4059  bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold1, bIterator);
4060  bIterator = DeserializeThresholdEutra (&elem.reportConfigEutra.threshold2, bIterator);
4061  }
4062 
4063  bIterator = DeserializeInteger (&n, 0, 30, bIterator);
4065 
4066  bIterator = DeserializeEnum (16, &n, bIterator);
4067  switch (n)
4068  {
4069  case 0:
4071  break;
4072  case 1:
4073  elem.reportConfigEutra.timeToTrigger = 40;
4074  break;
4075  case 2:
4076  elem.reportConfigEutra.timeToTrigger = 64;
4077  break;
4078  case 3:
4079  elem.reportConfigEutra.timeToTrigger = 80;
4080  break;
4081  case 4:
4082  elem.reportConfigEutra.timeToTrigger = 100;
4083  break;
4084  case 5:
4085  elem.reportConfigEutra.timeToTrigger = 128;
4086  break;
4087  case 6:
4088  elem.reportConfigEutra.timeToTrigger = 160;
4089  break;
4090  case 7:
4091  elem.reportConfigEutra.timeToTrigger = 256;
4092  break;
4093  case 8:
4094  elem.reportConfigEutra.timeToTrigger = 320;
4095  break;
4096  case 9:
4097  elem.reportConfigEutra.timeToTrigger = 480;
4098  break;
4099  case 10:
4100  elem.reportConfigEutra.timeToTrigger = 512;
4101  break;
4102  case 11:
4103  elem.reportConfigEutra.timeToTrigger = 640;
4104  break;
4105  case 12:
4106  elem.reportConfigEutra.timeToTrigger = 1024;
4107  break;
4108  case 13:
4109  elem.reportConfigEutra.timeToTrigger = 1280;
4110  break;
4111  case 14:
4112  elem.reportConfigEutra.timeToTrigger = 2560;
4113  break;
4114  case 15:
4115  default:
4116  elem.reportConfigEutra.timeToTrigger = 5120;
4117  break;
4118  }
4119  }
4120 
4121  if (triggerTypeChoice == 1)
4122  {
4123  // periodical
4125 
4126  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4127  bIterator = DeserializeEnum (2, &n, bIterator);
4128  if (n == 0)
4129  {
4131  }
4132  else
4133  {
4135  }
4136  }
4137 
4138  // triggerQuantity
4139  bIterator = DeserializeEnum (2, &n, bIterator);
4140  if (n == 0)
4141  {
4143  }
4144  else
4145  {
4147  }
4148 
4149  // reportQuantity
4150  bIterator = DeserializeEnum (2, &n, bIterator);
4151  if (n == 0)
4152  {
4154  }
4155  else
4156  {
4158  }
4159 
4160  // maxReportCells
4161  bIterator = DeserializeInteger (&n, 1, MAX_CELL_REPORT, bIterator);
4163 
4164  // reportInterval
4165  bIterator = DeserializeEnum (16, &n, bIterator);
4166  switch (n)
4167  {
4168  case 0:
4170  break;
4171  case 1:
4173  break;
4174  case 2:
4176  break;
4177  case 3:
4179  break;
4180  case 4:
4182  break;
4183  case 5:
4185  break;
4186  case 6:
4188  break;
4189  case 7:
4191  break;
4192  case 8:
4194  break;
4195  case 9:
4197  break;
4198  case 10:
4200  break;
4201  case 11:
4203  break;
4204  case 12:
4206  break;
4207  case 13:
4209  break;
4210  case 14:
4212  break;
4213  case 15:
4214  default:
4216  }
4217 
4218  // reportAmount
4219  bIterator = DeserializeEnum (8, &n, bIterator);
4220  switch (n)
4221  {
4222  case 0:
4224  break;
4225  case 1:
4227  break;
4228  case 2:
4230  break;
4231  case 3:
4233  break;
4234  case 4:
4235  elem.reportConfigEutra.reportAmount = 16;
4236  break;
4237  case 5:
4238  elem.reportConfigEutra.reportAmount = 32;
4239  break;
4240  case 6:
4241  elem.reportConfigEutra.reportAmount = 64;
4242  break;
4243  default:
4245  }
4246  }
4247 
4248  if (reportConfigChoice == 1)
4249  {
4250  // ReportConfigInterRAT
4251  // ...
4252  }
4253 
4254  measConfig->reportConfigToAddModList.push_back (elem);
4255  }
4256  }
4257 
4258  if (bitset11[6])
4259  {
4260  // measIdToRemoveList
4261  int measIdToRemoveListElems;
4262  bIterator = DeserializeSequenceOf (&measIdToRemoveListElems, MAX_MEAS_ID, 1, bIterator);
4263 
4264  for (int i = 0; i < measIdToRemoveListElems; i++)
4265  {
4266  bIterator = DeserializeInteger (&n, 1, MAX_MEAS_ID, bIterator);
4267  measConfig->measIdToRemoveList.push_back (n);
4268  }
4269  }
4270 
4271  if (bitset11[5])
4272  {
4273  // measIdToAddModList
4274  int measIdToAddModListElems;
4275  bIterator = DeserializeSequenceOf (&measIdToAddModListElems, MAX_MEAS_ID, 1, bIterator);
4276 
4277  for (int i = 0; i < measIdToAddModListElems; i++)
4278  {
4280 
4281  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4282 
4283  bIterator = DeserializeInteger (&n, 1, MAX_MEAS_ID, bIterator);
4284  elem.measId = n;
4285 
4286  bIterator = DeserializeInteger (&n, 1, MAX_OBJECT_ID, bIterator);
4287  elem.measObjectId = n;
4288 
4289  bIterator = DeserializeInteger (&n, 1, MAX_REPORT_CONFIG_ID, bIterator);
4290  elem.reportConfigId = n;
4291 
4292  measConfig->measIdToAddModList.push_back (elem);
4293  }
4294  }
4295 
4296  measConfig->haveQuantityConfig = bitset11[4];
4297  if (measConfig->haveQuantityConfig)
4298  {
4299  // quantityConfig
4300  std::bitset<4> quantityConfigOpts;
4301  bIterator = DeserializeSequence (&quantityConfigOpts, true, bIterator);
4302 
4303  if (quantityConfigOpts[3])
4304  {
4305  // quantityConfigEUTRA
4306  bIterator = DeserializeSequence (&bitset0,false,bIterator);
4307  bIterator = DeserializeEnum (16, &n, bIterator);
4308  switch (n)
4309  {
4310  case 0:
4311  measConfig->quantityConfig.filterCoefficientRSRP = 0;
4312  break;
4313  case 1:
4314  measConfig->quantityConfig.filterCoefficientRSRP = 1;
4315  break;
4316  case 2:
4317  measConfig->quantityConfig.filterCoefficientRSRP = 2;
4318  break;
4319  case 3:
4320  measConfig->quantityConfig.filterCoefficientRSRP = 3;
4321  break;
4322  case 4:
4323  measConfig->quantityConfig.filterCoefficientRSRP = 4;
4324  break;
4325  case 5:
4326  measConfig->quantityConfig.filterCoefficientRSRP = 5;
4327  break;
4328  case 6:
4329  measConfig->quantityConfig.filterCoefficientRSRP = 6;
4330  break;
4331  case 7:
4332  measConfig->quantityConfig.filterCoefficientRSRP = 7;
4333  break;
4334  case 8:
4335  measConfig->quantityConfig.filterCoefficientRSRP = 8;
4336  break;
4337  case 9:
4338  measConfig->quantityConfig.filterCoefficientRSRP = 9;
4339  break;
4340  case 10:
4341  measConfig->quantityConfig.filterCoefficientRSRP = 11;
4342  break;
4343  case 11:
4344  measConfig->quantityConfig.filterCoefficientRSRP = 13;
4345  break;
4346  case 12:
4347  measConfig->quantityConfig.filterCoefficientRSRP = 15;
4348  break;
4349  case 13:
4350  measConfig->quantityConfig.filterCoefficientRSRP = 17;
4351  break;
4352  case 14:
4353  measConfig->quantityConfig.filterCoefficientRSRP = 19;
4354  break;
4355  case 15:
4356  measConfig->quantityConfig.filterCoefficientRSRP = 0;
4357  break;
4358  default:
4359  measConfig->quantityConfig.filterCoefficientRSRP = 4;
4360  }
4361  bIterator = DeserializeEnum (16, &n, bIterator);
4362  switch (n)
4363  {
4364  case 0:
4365  measConfig->quantityConfig.filterCoefficientRSRQ = 0;
4366  break;
4367  case 1:
4368  measConfig->quantityConfig.filterCoefficientRSRQ = 1;
4369  break;
4370  case 2:
4371  measConfig->quantityConfig.filterCoefficientRSRQ = 2;
4372  break;
4373  case 3:
4374  measConfig->quantityConfig.filterCoefficientRSRQ = 3;
4375  break;
4376  case 4:
4377  measConfig->quantityConfig.filterCoefficientRSRQ = 4;
4378  break;
4379  case 5:
4380  measConfig->quantityConfig.filterCoefficientRSRQ = 5;
4381  break;
4382  case 6:
4383  measConfig->quantityConfig.filterCoefficientRSRQ = 6;
4384  break;
4385  case 7:
4386  measConfig->quantityConfig.filterCoefficientRSRQ = 7;
4387  break;
4388  case 8:
4389  measConfig->quantityConfig.filterCoefficientRSRQ = 8;
4390  break;
4391  case 9:
4392  measConfig->quantityConfig.filterCoefficientRSRQ = 9;
4393  break;
4394  case 10:
4395  measConfig->quantityConfig.filterCoefficientRSRQ = 11;
4396  break;
4397  case 11:
4398  measConfig->quantityConfig.filterCoefficientRSRQ = 13;
4399  break;
4400  case 12:
4401  measConfig->quantityConfig.filterCoefficientRSRQ = 15;
4402  break;
4403  case 13:
4404  measConfig->quantityConfig.filterCoefficientRSRQ = 17;
4405  break;
4406  case 14:
4407  measConfig->quantityConfig.filterCoefficientRSRQ = 19;
4408  break;
4409  case 15:
4410  measConfig->quantityConfig.filterCoefficientRSRQ = 0;
4411  break;
4412  default:
4413  measConfig->quantityConfig.filterCoefficientRSRQ = 4;
4414  }
4415  }
4416  if (quantityConfigOpts[2])
4417  {
4418  // quantityConfigUTRA
4419  // ...
4420  }
4421  if (quantityConfigOpts[1])
4422  {
4423  // quantityConfigGERAN
4424  // ...
4425  }
4426  if (quantityConfigOpts[0])
4427  {
4428  // quantityConfigCDMA2000
4429  // ...
4430  }
4431  }
4432 
4433  measConfig->haveMeasGapConfig = bitset11[3];
4434  if (measConfig->haveMeasGapConfig)
4435  {
4436  // measGapConfig
4437  int measGapConfigChoice;
4438  bIterator = DeserializeChoice (2, false, &measGapConfigChoice, bIterator);
4439  switch (measGapConfigChoice)
4440  {
4441  case 0:
4443  bIterator = DeserializeNull (bIterator);
4444  break;
4445  case 1:
4446  default:
4448  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4449 
4450  int gapOffsetChoice;
4451  bIterator = DeserializeChoice (2, true, &gapOffsetChoice, bIterator);
4452  switch (gapOffsetChoice)
4453  {
4454  case 0:
4456  bIterator = DeserializeInteger (&n, 0, 39, bIterator);
4457  measConfig->measGapConfig.gapOffsetValue = n;
4458  break;
4459  case 1:
4460  default:
4462  bIterator = DeserializeInteger (&n, 0, 79, bIterator);
4463  measConfig->measGapConfig.gapOffsetValue = n;
4464  }
4465  }
4466  }
4467 
4468  measConfig->haveSmeasure = bitset11[2];
4469  if (measConfig->haveSmeasure)
4470  {
4471  // s-Measure
4472  bIterator = DeserializeInteger (&n, 0, 97, bIterator);
4473  measConfig->sMeasure = n;
4474  }
4475 
4476  if (bitset11[1])
4477  {
4478  // preRegistrationInfoHRPD
4479  // ...
4480  }
4481 
4482  measConfig->haveSpeedStatePars = bitset11[0];
4483  if (measConfig->haveSpeedStatePars)
4484  {
4485  // speedStatePars
4486  int speedStateParsChoice;
4487  bIterator = DeserializeChoice (2, false, &speedStateParsChoice, bIterator);
4488  switch (speedStateParsChoice)
4489  {
4490  case 0:
4492  bIterator = DeserializeNull (bIterator);
4493  break;
4494  case 1:
4495  default:
4497  bIterator = DeserializeSequence (&bitset0, false, bIterator);
4498 
4499  // Deserialize mobilityStateParameters
4500  // Deserialize t-Evaluation
4501  bIterator = DeserializeEnum (8, &n, bIterator);
4502  switch (n)
4503  {
4504  case 0:
4506  break;
4507  case 1:
4509  break;
4510  case 2:
4512  break;
4513  case 3:
4515  break;
4516  case 4:
4518  break;
4519  default:
4521  }
4522  // Deserialize t-HystNormal
4523  bIterator = DeserializeEnum (8, &n, bIterator);
4524  switch (n)
4525  {
4526  case 0:
4528  break;
4529  case 1:
4531  break;
4532  case 2:
4534  break;
4535  case 3:
4537  break;
4538  case 4:
4540  break;
4541  default:
4543  }
4544 
4545  bIterator = DeserializeInteger (&n, 1, 16, bIterator);
4547 
4548  bIterator = DeserializeInteger (&n, 1, 16, bIterator);
4550 
4551  // Deserialize timeToTriggerSf
4552  bIterator = DeserializeEnum (4, &n, bIterator);
4553  measConfig->speedStatePars.timeToTriggerSf.sfMedium = (n + 1) * 25;
4554  bIterator = DeserializeEnum (4, &n, bIterator);
4555  measConfig->speedStatePars.timeToTriggerSf.sfHigh = (n + 1) * 25;
4556  }
4557  }
4558  return bIterator;
4559 }
4560 
4562 
4563 // Constructor
4565 {
4566  m_mmec = std::bitset<8> (0ul);
4567  m_mTmsi = std::bitset<32> (0ul);
4569  m_spare = std::bitset<1> (0ul);
4570 }
4571 
4572 // Destructor
4574 {
4575 }
4576 
4577 TypeId
4579 {
4580  static TypeId tid = TypeId ("ns3::RrcConnectionRequestHeader")
4581  .SetParent<Header> ()
4582  .SetGroupName("Lte")
4583  ;
4584  return tid;
4585 }
4586 
4587 void
4588 RrcConnectionRequestHeader::Print (std::ostream &os) const
4589 {
4590  os << "MMEC:" << m_mmec << std::endl;
4591  os << "MTMSI:" << m_mTmsi << std::endl;
4592  os << "EstablishmentCause:" << m_establishmentCause << std::endl;
4593  os << "Spare: " << m_spare << std::endl;
4594 }
4595 
4596 void
4598 {
4600 
4602 
4603  // Serialize RRCConnectionRequest sequence:
4604  // no default or optional fields. Extension marker not present.
4605  SerializeSequence (std::bitset<0> (),false);
4606 
4607  // Serialize criticalExtensions choice:
4608  // 2 options, selected: 0 (option: rrcConnectionRequest-r8)
4609  SerializeChoice (2,0,false);
4610 
4611  // Serialize RRCConnectionRequest-r8-IEs sequence:
4612  // no default or optional fields. Extension marker not present.
4613  SerializeSequence (std::bitset<0> (),false);
4614 
4615  // Serialize InitialUE-Identity choice:
4616  // 2 options, selected: 0 (option: s-TMSI)
4617  SerializeChoice (2,0,false);
4618 
4619  // Serialize S-TMSI sequence:
4620  // no default or optional fields. Extension marker not present.
4621  SerializeSequence (std::bitset<0> (),false);
4622 
4623  // Serialize mmec : MMEC ::= BIT STRING (SIZE (8))
4625 
4626  // Serialize m-TMSI ::= BIT STRING (SIZE (32))
4628 
4629  // Serialize establishmentCause : EstablishmentCause ::= ENUMERATED
4631 
4632  // Serialize spare : BIT STRING (SIZE (1))
4633  SerializeBitstring (std::bitset<1> ());
4634 
4635  // Finish serialization
4637 }
4638 
4639 uint32_t
4641 {
4642  std::bitset<1> dummy;
4643  std::bitset<0> optionalOrDefaultMask;
4644  int selectedOption;
4645 
4646  bIterator = DeserializeUlCcchMessage (bIterator);
4647 
4648  // Deserialize RCConnectionRequest sequence
4649  bIterator = DeserializeSequence (&optionalOrDefaultMask,false,bIterator);
4650 
4651  // Deserialize criticalExtensions choice:
4652  bIterator = DeserializeChoice (2,false,&selectedOption,bIterator);
4653 
4654  // Deserialize RRCConnectionRequest-r8-IEs sequence
4655  bIterator = DeserializeSequence (&optionalOrDefaultMask,false,bIterator);
4656 
4657  // Deserialize InitialUE-Identity choice
4658  bIterator = DeserializeChoice (2,false,&selectedOption,bIterator);
4659 
4660  // Deserialize S-TMSI sequence
4661  bIterator = DeserializeSequence (&optionalOrDefaultMask,false,bIterator);
4662 
4663  // Deserialize mmec
4664  bIterator = DeserializeBitstring (&m_mmec,bIterator);
4665 
4666  // Deserialize m-TMSI
4667  bIterator = DeserializeBitstring (&m_mTmsi,bIterator);
4668 
4669  // Deserialize establishmentCause
4670  bIterator = DeserializeEnum (8,&selectedOption,bIterator);
4671 
4672  // Deserialize spare
4673  bIterator = DeserializeBitstring (&dummy,bIterator);
4674 
4675  return GetSerializedSize ();
4676 }
4677 
4678 void
4680 {
4681  m_mTmsi = std::bitset<32> ((uint32_t)msg.ueIdentity);
4682  m_mmec = std::bitset<8> ((uint32_t)(msg.ueIdentity >> 32));
4683  m_isDataSerialized = false;
4684 }
4685 
4688 {
4690  msg.ueIdentity = (((uint64_t) m_mmec.to_ulong ()) << 32) | (m_mTmsi.to_ulong ());
4691 
4692  return msg;
4693 }
4694 
4695 std::bitset<8>
4697 {
4698  return m_mmec;
4699 }
4700 
4701 std::bitset<32>
4703 {
4704  return m_mTmsi;
4705 }
4706 
4707 
4710 {
4711 }
4712 
4714 {
4715 }
4716 
4717 void
4718 RrcConnectionSetupHeader::Print (std::ostream &os) const
4719 {
4720  os << "rrcTransactionIdentifier: " << (int)m_rrcTransactionIdentifier << std::endl;
4721  os << "radioResourceConfigDedicated:" << std::endl;
4723 }
4724 
4725 void
4727 {
4729 
4731 
4732  SerializeInteger (15,0,15);
4733 
4734  // Serialize RRCConnectionSetup sequence:
4735  // no default or optional fields. Extension marker not present.
4736  SerializeSequence (std::bitset<0> (),false);
4737 
4738  // Serialize rrc-TransactionIdentifier ::=INTEGER (0..3)
4740 
4741  // Serialize criticalExtensions choice:
4742  // 2 options, selected: 0 (option: c1)
4743  SerializeChoice (2,0,false);
4744 
4745  // Serialize c1 choice:
4746  // 8 options, selected: 0 (option: rrcConnectionSetup-r8)
4747  SerializeChoice (8,0,false);
4748 
4749  // Serialize rrcConnectionSetup-r8 sequence
4750  // 1 optional fields (not present). Extension marker not present.
4751  SerializeSequence (std::bitset<1> (0),false);
4752 
4753  // Serialize RadioResourceConfigDedicated sequence
4755 
4756  // Serialize nonCriticalExtension sequence
4757  // 2 optional fields, none present. No extension marker.
4758  SerializeSequence (std::bitset<2> (0),false);
4759 
4760  // Finish serialization
4762 }
4763 
4764 
4765 uint32_t
4767 {
4768  int n;
4769 
4770  std::bitset<0> bitset0;
4771  std::bitset<1> bitset1;
4772  std::bitset<2> bitset2;
4773 
4774  bIterator = DeserializeDlCcchMessage (bIterator);
4775 
4776  bIterator = DeserializeInteger (&n,0,15,bIterator);
4777 
4778  // Deserialize RRCConnectionSetup sequence
4779  bIterator = DeserializeSequence (&bitset0,false,bIterator);
4780 
4781  // Deserialize rrc-TransactionIdentifier ::=INTEGER (0..3)
4782  bIterator = DeserializeInteger (&n,0,3,bIterator);
4784 
4785  // Deserialize criticalExtensions choice
4786  int criticalExtensionChoice;
4787  bIterator = DeserializeChoice (2,false,&criticalExtensionChoice,bIterator);
4788  if (criticalExtensionChoice == 1)
4789  {
4790  // Deserialize criticalExtensionsFuture
4791  bIterator = DeserializeSequence (&bitset0,false,bIterator);
4792  }
4793  else if (criticalExtensionChoice == 0)
4794  {
4795  // Deserialize c1
4796  int c1;
4797  bIterator = DeserializeChoice (8,false,&c1,bIterator);
4798 
4799  if (c1 > 0)
4800  {
4801  // Deserialize spareX , X:=7..1
4802  bIterator = DeserializeNull (bIterator);
4803  }
4804  else if (c1 == 0)
4805  {
4806  // Deserialize rrcConnectionSetup-r8
4807  // 1 optional fields, no extension marker.
4808  bIterator = DeserializeSequence (&bitset1,false,bIterator);
4809 
4810  // Deserialize radioResourceConfigDedicated
4812 
4813  if (bitset1[0])
4814  {
4815  // Deserialize nonCriticalExtension
4816  // 2 optional fields, no extension marker.
4817  bIterator = DeserializeSequence (&bitset2,false,bIterator);
4818 
4819  // Deserialization of lateR8NonCriticalExtension and nonCriticalExtension
4820  // ...
4821  }
4822  }
4823  }
4824  return GetSerializedSize ();
4825 }
4826 
4827 void
4829 {
4832  m_isDataSerialized = false;
4833 }
4834 
4837 {
4841  return msg;
4842 }
4843 
4844 uint8_t
4846 {
4848 }
4849 
4850 bool
4852 {
4854 }
4855 
4856 std::list<LteRrcSap::SrbToAddMod>
4858 {
4860 }
4861 
4862 std::list<LteRrcSap::DrbToAddMod>
4864 {
4866 }
4867 
4868 std::list<uint8_t>
4870 {
4872 }
4873 
4876 {
4878 }
4879 
4882 {
4884 }
4885 
4887 
4889 {
4890 }
4891 
4893 {
4894 }
4895 
4896 void
4898 {
4900 
4901  // Serialize DCCH message
4903 
4904  // Serialize RRCConnectionSetupComplete sequence:
4905  // no default or optional fields. Extension marker not present.
4906  SerializeSequence (std::bitset<0> (),false);
4907 
4908  // Serialize rrc-TransactionIdentifier
4910 
4911  // Serialize criticalExtensions choice
4912  // 2 options, selected 0 (c1)
4913  SerializeChoice (2,0,false);
4914 
4915  // Choose spare3 NULL
4916  SerializeChoice (4,1,false);
4917 
4918  // Serialize spare3 NULL
4919  SerializeNull ();
4920 
4921  // Finish serialization
4923 }
4924 
4925 uint32_t
4927 {
4928  std::bitset<0> bitset0;
4929 
4930  bIterator = DeserializeUlDcchMessage (bIterator);
4931 
4932  bIterator = DeserializeSequence (&bitset0,false,bIterator);
4933 
4934  int n;
4935  bIterator = DeserializeInteger (&n,0,3,bIterator);
4937 
4938  bIterator = DeserializeChoice (2,false,&n,bIterator);
4939 
4940  if (n == 1)
4941  {
4942  // Deserialize criticalExtensionsFuture
4943  bIterator = DeserializeSequence (&bitset0,false,bIterator);
4944  }
4945  else if (n == 0)
4946  {
4947  // Deserialize c1
4948  int c1Chosen;
4949  bIterator = DeserializeChoice (4,false,&c1Chosen,bIterator);
4950 
4951  if (c1Chosen == 0)
4952  {
4953  // Deserialize rrcConnectionSetupComplete-r8
4954  // ...
4955  }
4956  else
4957  {
4958  bIterator = DeserializeNull (bIterator);
4959  }
4960  }
4961 
4962  return GetSerializedSize ();
4963 }
4964 
4965 void
4967 {
4968  os << "rrcTransactionIdentifier: " << (int) m_rrcTransactionIdentifier << std::endl;
4969 }
4970 
4971 void
4973 {
4975  m_isDataSerialized = false;
4976 }
4977 
4978 uint8_t
4980 {
4982 }
4983 
4986 {
4989  return msg;
4990 }
4991 
4993 
4995 {
4996 }
4997 
4999 {
5000 }
5001 
5002 void
5004 {
5006 
5007  // Serialize DCCH message
5009 
5010  // Serialize RRCConnectionSetupComplete sequence:
5011  // no default or optional fields. Extension marker not present.
5012  SerializeSequence (std::bitset<0> (),false);
5013 
5014  // Serialize rrc-TransactionIdentifier
5016 
5017  // Serialize criticalExtensions choice
5018  // 2 options, selected 1 (criticalExtensionsFuture)
5019  SerializeChoice (2,1,false);
5020 
5021  // Choose criticalExtensionsFuture
5022  SerializeSequence (std::bitset<0> (),false);
5023 
5024  // Finish serialization
5026 }
5027 
5028 uint32_t
5030 {
5031  std::bitset<0> bitset0;
5032  int n;
5033 
5034  bIterator = DeserializeUlDcchMessage (bIterator);
5035  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5036 
5037  bIterator = DeserializeInteger (&n,0,3,bIterator);
5039 
5040  bIterator = DeserializeChoice (2,false,&n,bIterator);
5041 
5042  if (n == 1)
5043  {
5044  // Deserialize criticalExtensionsFuture
5045  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5046  }
5047  else if (n == 0)
5048  {
5049  // Deserialize rrcConnectionReconfigurationComplete-r8
5050  // ...
5051  }
5052 
5053  return GetSerializedSize ();
5054 }
5055 
5056 void
5058 {
5059  os << "rrcTransactionIdentifier: " << (int) m_rrcTransactionIdentifier << std::endl;
5060 }
5061 
5062 void
5064 {
5066  m_isDataSerialized = false;
5067 }
5068 
5071 {
5074  return msg;
5075 }
5076 
5077 uint8_t
5079 {
5081 }
5082 
5084 
5086 {
5087 }
5088 
5090 {
5091 }
5092 
5093 void
5095 {
5097 
5099 
5100  // Serialize RRCConnectionSetupComplete sequence:
5101  // no default or optional fields. Extension marker not present.
5102  SerializeSequence (std::bitset<0> (),false);
5103 
5104  // Serialize rrc-TransactionIdentifier
5106 
5107  // Serialize criticalExtensions choice
5108  // 2 options, selected 0 (c1)
5109  SerializeChoice (2,0,false);
5110 
5111  // Serialize c1 choice
5112  // 8 options, selected 0 (rrcConnectionReconfiguration-r8)
5113  SerializeChoice (8,0,false);
5114 
5115  // Serialize RRCConnectionReconfiguration-r8-IEs sequence:
5116  // 6 optional fields. Extension marker not present.
5117  std::bitset<6> options;
5118  options.set (5,m_haveMeasConfig);
5119  options.set (4,m_haveMobilityControlInfo);
5120  options.set (3,0); // No dedicatedInfoNASList
5121  options.set (2,m_haveRadioResourceConfigDedicated);
5122  options.set (1,0); // No securityConfigHO
5123  options.set (0,m_haveNonCriticalExtension); // Implemented nonCriticalExtension because compatibility with R10 - CA
5124  SerializeSequence (options,false);
5125 
5126  if (m_haveMeasConfig)
5127  {
5129  }
5130 
5132  {
5133  // Serialize MobilityControlInfo
5134 
5135  // 4 optional fields, extension marker present.
5136  std::bitset<4> mobCtrlIntoOptional;
5137  mobCtrlIntoOptional.set (3,m_mobilityControlInfo.haveCarrierFreq);
5138  mobCtrlIntoOptional.set (2,m_mobilityControlInfo.haveCarrierBandwidth);
5139  mobCtrlIntoOptional.set (1,0); // No additionalSpectrumEmission
5140  mobCtrlIntoOptional.set (0,m_mobilityControlInfo.haveRachConfigDedicated);
5141  SerializeSequence (mobCtrlIntoOptional,true);
5142 
5143  // Serialize targetPhysCellId
5145 
5147  {
5148  SerializeSequence (std::bitset<1> (1),false);
5151  }
5152 
5154  {
5155  SerializeSequence (std::bitset<1> (1),false);
5156 
5157  // Serialize dl-Bandwidth
5159 
5160  // Serialize ul-Bandwidth
5162  }
5163 
5164  // Serialize t304
5165  SerializeEnum (8,0);
5166 
5167  // Serialize newUE-Identitiy
5169 
5170  // Serialize radioResourceConfigCommon
5172 
5174  {
5175  SerializeSequence (std::bitset<0> (),false);
5178  }
5179  }
5180 
5182  {
5183  // Serialize RadioResourceConfigDedicated
5185  }
5186 
5188  {
5189  // Serialize NonCriticalExtension RRCConnectionReconfiguration-v890-IEs sequence:
5190  // 2 optional fields. Extension marker not present.
5191  std::bitset<2> noncriticalExtension_v890;
5192  noncriticalExtension_v890.set (1,0); // No lateNonCriticalExtension
5193  noncriticalExtension_v890.set (0,m_haveNonCriticalExtension); // Implemented nonCriticalExtension because compatibility with R10 - CA
5194  //Enable RRCCoonectionReconfiguration-v920-IEs
5195  SerializeSequence (noncriticalExtension_v890,false);
5196 
5197  // Serialize NonCriticalExtension RRCConnectionReconfiguration-v920-IEs sequence:
5198  // 3 optional fields. Extension marker not present.
5199  std::bitset<3> noncriticalExtension_v920;
5200  noncriticalExtension_v920.set (1,0); // No otehrConfig-r9
5201  noncriticalExtension_v920.set (1,0); // No fullConfig-r9
5202  //Enable RRCCoonectionReconfiguration-v1020-IEs
5203  noncriticalExtension_v920.set (0,m_haveNonCriticalExtension); // Implemented nonCriticalExtension because compatibility with R10 - CA
5204  SerializeSequence (noncriticalExtension_v920,false);
5205 
5206  SerializeNonCriticalExtensionConfiguration (m_nonCriticalExtension); //Serializing RRCConnectionReconfiguration-r8-IEs
5207  }
5208 
5209  // Finish serialization
5211 }
5212 
5213 uint32_t
5215 {
5216  std::bitset<0> bitset0;
5217 
5218  bIterator = DeserializeDlDcchMessage (bIterator);
5219 
5220  // RRCConnectionReconfiguration sequence
5221  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5222 
5223  // rrc-TransactionIdentifier
5224  int n;
5225  bIterator = DeserializeInteger (&n,0,3,bIterator);
5227 
5228  // criticalExtensions
5229  int sel;
5230  bIterator = DeserializeChoice (2,false,&sel,bIterator);
5231  if (sel == 1)
5232  {
5233  // criticalExtensionsFuture
5234  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5235  }
5236  else if (sel == 0)
5237  {
5238  // c1
5239  int c1Chosen;
5240  bIterator = DeserializeChoice (8,false,&c1Chosen,bIterator);
5241  if (c1Chosen > 0)
5242  {
5243  bIterator = DeserializeNull (bIterator);
5244  }
5245  else if (c1Chosen == 0)
5246  {
5247  // rrcConnectionReconfiguration-r8
5248  std::bitset<6> rrcConnRecOpts;
5249  bIterator = DeserializeSequence (&rrcConnRecOpts,false,bIterator);
5250 
5251  m_haveMeasConfig = rrcConnRecOpts[5];
5252  if (m_haveMeasConfig)
5253  {
5254  bIterator = DeserializeMeasConfig (&m_measConfig, bIterator);
5255  }
5256 
5257  m_haveMobilityControlInfo = rrcConnRecOpts[4];
5259  {
5260  // mobilityControlInfo
5261  std::bitset<4> mobCtrlOpts;
5262  bIterator = DeserializeSequence (&mobCtrlOpts,true,bIterator);
5263 
5264  // PhysCellId
5265  bIterator = DeserializeInteger (&n,0,503,bIterator);
5267 
5268  // carrierFreq
5269  m_mobilityControlInfo.haveCarrierFreq = mobCtrlOpts[3];
5271  {
5272  std::bitset<1> ulCarrierFreqPresent;
5273  bIterator = DeserializeSequence (&ulCarrierFreqPresent,false,bIterator);
5274 
5275  bIterator = DeserializeInteger (&n,0,MAX_EARFCN,bIterator);
5277 
5278  if (ulCarrierFreqPresent[0])
5279  {
5280  bIterator = DeserializeInteger (&n,0,MAX_EARFCN,bIterator);
5282  }
5283  }
5284 
5285  // carrierBandwidth
5288  {
5289  std::bitset<1> ulBandwidthPresent;
5290  bIterator = DeserializeSequence (&ulBandwidthPresent,false,bIterator);
5291 
5292  bIterator = DeserializeEnum (16,&n,bIterator);
5294 
5295  if (ulBandwidthPresent[0])
5296  {
5297  bIterator = DeserializeEnum (16,&n,bIterator);
5299  }
5300  }
5301 
5302  // additionalSpectrumEmission
5303  if (mobCtrlOpts[1])
5304  {
5305  // ...
5306  }
5307 
5308  // t304
5309  bIterator = DeserializeEnum (8,&n,bIterator);
5310 
5311  // newUE-Identity
5312  std::bitset<16> cRnti;
5313  bIterator = DeserializeBitstring (&cRnti, bIterator);
5314  m_mobilityControlInfo.newUeIdentity = cRnti.to_ulong ();
5315 
5316  // radioResourceConfigCommon
5318 
5321  {
5322  bIterator = DeserializeSequence (&bitset0, false, bIterator);
5323  bIterator = DeserializeInteger (&n,0,63, bIterator);
5325  bIterator = DeserializeInteger (&n,0,15, bIterator);
5327  }
5328  }
5329 
5330  // dedicatedInfoNASList
5331  if (rrcConnRecOpts[3])
5332  {
5333  // ...
5334  }
5335 
5336  // radioResourceConfigDedicated
5337  m_haveRadioResourceConfigDedicated = rrcConnRecOpts[2];
5339  {
5341  }
5342 
5343  // securityConfigHO
5344  if (rrcConnRecOpts[1])
5345  {
5346  // ...
5347  }
5348 
5349  // nonCriticalExtension
5350  m_haveNonCriticalExtension = rrcConnRecOpts[0];
5352  {
5354  // ...
5355  }
5356  }
5357  }
5358 
5359  return GetSerializedSize ();
5360 }
5361 
5362 void
5364 {
5365  os << "rrcTransactionIdentifier: " << (int) m_rrcTransactionIdentifier << std::endl;
5366  os << "haveMeasConfig: " << m_haveMeasConfig << std::endl;
5367  if (m_haveMeasConfig)
5368  {
5369  if (!m_measConfig.measObjectToRemoveList.empty ())
5370  {
5371  os << " measObjectToRemoveList: ";
5372  std::list<uint8_t> auxList = m_measConfig.measObjectToRemoveList;
5373  std::list<uint8_t>::iterator it = auxList.begin ();
5374  for (; it != auxList.end (); it++)
5375  {
5376  os << (int) *it << ", ";
5377  }
5378  os << std::endl;
5379  }
5380  if (!m_measConfig.reportConfigToRemoveList.empty ())
5381  {
5382  os << " reportConfigToRemoveList: ";
5383  std::list<uint8_t> auxList = m_measConfig.reportConfigToRemoveList;
5384  std::list<uint8_t>::iterator it = auxList.begin ();
5385  for (; it != auxList.end (); it++)
5386  {
5387  os << (int) *it << ", ";
5388  }
5389  os << std::endl;
5390  }
5391  if (!m_measConfig.measIdToRemoveList.empty ())
5392  {
5393  os << " measIdToRemoveList: ";
5394  std::list<uint8_t> auxList = m_measConfig.measIdToRemoveList;
5395  std::list<uint8_t>::iterator it = auxList.begin ();
5396  for (; it != auxList.end (); it++)
5397  {
5398  os << (int) *it << ", ";
5399  }
5400  os << std::endl;
5401  }
5402 
5403  if (!m_measConfig.measObjectToAddModList.empty ())
5404  {
5405  os << " measObjectToAddMod: " << std::endl;
5406  std::list<LteRrcSap::MeasObjectToAddMod> auxList = m_measConfig.measObjectToAddModList;
5407  std::list<LteRrcSap::MeasObjectToAddMod>::iterator it = auxList.begin ();
5408  for (; it != auxList.end (); it++)
5409  {
5410  os << " measObjectId: " << (int)it->measObjectId << std::endl;
5411  os << " carrierFreq: " << (int)it->measObjectEutra.carrierFreq << std::endl;
5412  os << " allowedMeasBandwidth: " << (int)it->measObjectEutra.allowedMeasBandwidth << std::endl;
5413  os << " presenceAntennaPort1: " << it->measObjectEutra.presenceAntennaPort1 << std::endl;
5414  os << " neighCellConfig: " << (int) it->measObjectEutra.neighCellConfig << std::endl;
5415  os << " offsetFreq: " << (int)it->measObjectEutra.offsetFreq << std::endl;
5416 
5417 
5418  if (!it->measObjectEutra.cellsToRemoveList.empty ())
5419  {
5420  os << " cellsToRemoveList: ";
5421  std::list<uint8_t> auxList = it->measObjectEutra.cellsToRemoveList;
5422  std::list<uint8_t>::iterator it = auxList.begin ();
5423  for (; it != auxList.end (); it++)
5424  {
5425  os << (int) *it << ", ";
5426  }
5427  os << std::endl;
5428  }
5429 
5430  if (!it->measObjectEutra.blackCellsToRemoveList.empty ())
5431  {
5432  os << " blackCellsToRemoveList: ";
5433  std::list<uint8_t> auxList = it->measObjectEutra.blackCellsToRemoveList;
5434  std::list<uint8_t>::iterator it = auxList.begin ();
5435  for (; it != auxList.end (); it++)
5436  {
5437  os << (int) *it << ", ";
5438  }
5439  os << std::endl;
5440  }
5441 
5442  if (!it->measObjectEutra.cellsToAddModList.empty ())
5443  {
5444  os << " cellsToAddModList: " << std::endl;
5445  std::list<LteRrcSap::CellsToAddMod> auxList = it->measObjectEutra.cellsToAddModList;
5446  std::list<LteRrcSap::CellsToAddMod>::iterator it = auxList.begin ();
5447  for (; it != auxList.end (); it++)
5448  {
5449  os << " cellIndex: " << (int)it->cellIndex << std::endl;
5450  os << " physCellId: " << (int)it->physCellId << std::endl;
5451  os << " cellIndividualOffset: " << (int)it->cellIndividualOffset << std::endl;
5452  os << " ------ " << std::endl;
5453  }
5454  }
5455 
5456  if (!it->measObjectEutra.blackCellsToAddModList.empty ())
5457  {
5458  os << " blackCellsToAddModList: " << std::endl;
5459  std::list<LteRrcSap::BlackCellsToAddMod> auxList = it->measObjectEutra.blackCellsToAddModList;
5460  std::list<LteRrcSap::BlackCellsToAddMod>::iterator it = auxList.begin ();
5461  for (; it != auxList.end (); it++)
5462  {
5463  os << " cellIndex: " << (int)it->cellIndex << std::endl;
5464  os << " physCellIdRange.start: " << (int)it->physCellIdRange.start << std::endl;
5465  os << " physCellIdRange.haveRange: " << it->physCellIdRange.haveRange << std::endl;
5466  os << " physCellIdRange.range: " << (int)it->physCellIdRange.range << std::endl;
5467  os << " ------ " << std::endl;
5468  }
5469  }
5470 
5471  os << " haveCellForWhichToReportCGI: " << it->measObjectEutra.haveCellForWhichToReportCGI << std::endl;
5472  os << " cellForWhichToReportCGI: " << (int)it->measObjectEutra.cellForWhichToReportCGI << std::endl;
5473  os << " ------------- " << std::endl;
5474  }
5475 
5476  }
5477 
5478  if (!m_measConfig.reportConfigToAddModList.empty ())
5479  {
5480  os << " reportConfigToAddModList: " << std::endl;
5481  std::list<LteRrcSap::ReportConfigToAddMod> auxList = m_measConfig.reportConfigToAddModList;
5482  std::list<LteRrcSap::ReportConfigToAddMod>::iterator it = auxList.begin ();
5483  for (; it != auxList.end (); it++)
5484  {
5485  os << " reportConfigId: " << (int)it->reportConfigId << std::endl;
5486  os << " reportConfigEutra.triggerType " << (int)it->reportConfigEutra.triggerType << std::endl;
5487  if (it->reportConfigEutra.triggerType == LteRrcSap::ReportConfigEutra::EVENT)
5488  {
5489  os << " reportConfigEutra.eventId " << (int)it->reportConfigEutra.eventId << std::endl;
5490  if (it->reportConfigEutra.eventId == LteRrcSap::ReportConfigEutra::EVENT_A3)
5491  {
5492  os << " reportConfigEutra.reportOnLeave " << (int)it->reportConfigEutra.reportOnLeave << std::endl;
5493  os << " reportConfigEutra.a3Offset " << (int)it->reportConfigEutra.a3Offset << std::endl;
5494  }
5495  else
5496  {
5497  os << " reportConfigEutra.threshold1.choice " << (int)it->reportConfigEutra.threshold1.choice << std::endl;
5498  os << " reportConfigEutra.threshold1.range " << (int)it->reportConfigEutra.threshold1.range << std::endl;
5499  if (it->reportConfigEutra.eventId == LteRrcSap::ReportConfigEutra::EVENT_A5)
5500  {
5501  os << " reportConfigEutra.threshold2.choice " << (int)it->reportConfigEutra.threshold2.choice << std::endl;
5502  os << " reportConfigEutra.threshold2.range " << (int)it->reportConfigEutra.threshold2.range << std::endl;
5503  }
5504  }
5505  os << " reportConfigEutra.hysteresis " << (int)it->reportConfigEutra.hysteresis << std::endl;
5506  os << " reportConfigEutra.timeToTrigger " << (int)it->reportConfigEutra.timeToTrigger << std::endl;
5507  }
5508  else
5509  {
5510  os << " reportConfigEutra.purpose " << (int)it->reportConfigEutra.purpose << std::endl;
5511  }
5512  os << " reportConfigEutra.triggerQuantity " << (int)it->reportConfigEutra.triggerQuantity << std::endl;
5513  os << " reportConfigEutra.reportQuantity " << (int)it->reportConfigEutra.reportQuantity << std::endl;
5514  os << " reportConfigEutra.maxReportCells " << (int)it->reportConfigEutra.maxReportCells << std::endl;
5515  os << " reportConfigEutra.reportInterval " << (int)it->reportConfigEutra.reportInterval << std::endl;
5516  os << " reportConfigEutra.reportAmount " << (int)it->reportConfigEutra.reportAmount << std::endl;
5517  }
5518  }
5519 
5520  if (!m_measConfig.measIdToAddModList.empty ())
5521  {
5522  os << " measIdToAddModList: " << std::endl;
5523  std::list<LteRrcSap::MeasIdToAddMod> auxList = m_measConfig.measIdToAddModList;
5524  std::list<LteRrcSap::MeasIdToAddMod>::iterator it = auxList.begin ();
5525  for (; it != auxList.end (); it++)
5526  {
5527  os << " measId: " << (int)it->measId << std::endl;
5528  os << " measObjectId: " << (int)it->measObjectId << std::endl;
5529  os << " reportConfigId: " << (int)it->reportConfigId << std::endl;
5530  os << " ------ " << std::endl;
5531  }
5532  }
5533 
5534  os << " haveQuantityConfig: " << m_measConfig.haveQuantityConfig << std::endl;
5536  {
5537  os << " filterCoefficientRSRP: " << (int)m_measConfig.quantityConfig.filterCoefficientRSRP << std::endl;
5538  os << " filterCoefficientRSRQ:" << (int)m_measConfig.quantityConfig.filterCoefficientRSRQ << std::endl;
5539  }
5540 
5541  os << " haveMeasGapConfig: " << m_measConfig.haveMeasGapConfig << std::endl;
5543  {
5544  os << " measGapConfig.type: " << m_measConfig.measGapConfig.type << std::endl;
5545  os << " measGapConfig.gap (gap0/1,value): (" << m_measConfig.measGapConfig.gapOffsetChoice
5546  << "," << (int) m_measConfig.measGapConfig.gapOffsetValue << ")" << std::endl;
5547  }
5548 
5549  os << " haveSmeasure: " << m_measConfig.haveSmeasure << std::endl;
5551  {
5552  os << " sMeasure: " << (int) m_measConfig.sMeasure << std::endl;
5553  }
5554 
5555  os << " haveSpeedStatePars: " << m_measConfig.haveSpeedStatePars << std::endl;
5557  {
5558  os << " speedStatePars.type: " << m_measConfig.speedStatePars.type << std::endl;
5559  os << " speedStatePars.mobilityStateParameters.tEvaluation: " << (int)m_measConfig.speedStatePars.mobilityStateParameters.tEvaluation << std::endl;
5560  os << " speedStatePars.mobilityStateParameters.tHystNormal: " << (int)m_measConfig.speedStatePars.mobilityStateParameters.tHystNormal << std::endl;
5561  os << " speedStatePars.mobilityStateParameters.nCellChangeMedium: " << (int)m_measConfig.speedStatePars.mobilityStateParameters.nCellChangeMedium << std::endl;
5562  os << " speedStatePars.mobilityStateParameters.nCellChangeHigh: " << (int)m_measConfig.speedStatePars.mobilityStateParameters.nCellChangeHigh << std::endl;
5563  os << " speedStatePars.timeToTriggerSf.sfMedium: " << (int)m_measConfig.speedStatePars.timeToTriggerSf.sfMedium << std::endl;
5564  os << " speedStatePars.timeToTriggerSf.sfHigh: " << (int)m_measConfig.speedStatePars.timeToTriggerSf.sfHigh << std::endl;
5565  }
5566  }
5567 
5568  os << "haveMobilityControlInfo: " << m_haveMobilityControlInfo << std::endl;
5570  {
5571  os << "targetPhysCellId: " << (int)m_mobilityControlInfo.targetPhysCellId << std::endl;
5572  os << "haveCarrierFreq: " << m_mobilityControlInfo.haveCarrierFreq << std::endl;
5574  {
5575  os << " carrierFreq.dlCarrierFreq: " << (int) m_mobilityControlInfo.carrierFreq.dlCarrierFreq << std::endl;
5576  os << " carrierFreq.dlCarrierFreq: " << (int) m_mobilityControlInfo.carrierFreq.ulCarrierFreq << std::endl;
5577  }
5578  os << "haveCarrierBandwidth: " << m_mobilityControlInfo.haveCarrierBandwidth << std::endl;
5580  {
5581  os << " carrierBandwidth.dlBandwidth: " << (int) m_mobilityControlInfo.carrierBandwidth.dlBandwidth << std::endl;
5582  os << " carrierBandwidth.ulBandwidth: " << (int) m_mobilityControlInfo.carrierBandwidth.ulBandwidth << std::endl;
5583  }
5584  os << "newUeIdentity: " << (int) m_mobilityControlInfo.newUeIdentity << std::endl;
5585  os << "haveRachConfigDedicated: " << m_mobilityControlInfo.haveRachConfigDedicated << std::endl;
5587  {
5588  os << "raPreambleIndex: " << (int) m_mobilityControlInfo.rachConfigDedicated.raPreambleIndex << std::endl;
5589  os << "raPrachMaskIndex: " << (int) m_mobilityControlInfo.rachConfigDedicated.raPrachMaskIndex << std::endl;
5590  }
5591  }
5592  os << "haveRadioResourceConfigDedicated: " << m_haveRadioResourceConfigDedicated << std::endl;
5594  {
5596  }
5597 }
5598 
5599 void
5601 {
5604  m_measConfig = msg.measConfig;
5611 
5612  m_isDataSerialized = false;
5613 }
5614 
5617 {
5619 
5622  msg.measConfig = m_measConfig;
5629 
5630  return msg;
5631 }
5632 
5633 uint8_t
5635 {
5637 }
5638 
5639 bool
5641 {
5642  return m_haveMeasConfig;
5643 }
5644 
5647 {
5648  return m_measConfig;
5649 }
5650 
5651 bool
5653 {
5655 }
5656 
5659 {
5660  return m_mobilityControlInfo;
5661 }
5662 
5663 bool
5665 {
5667 }
5668 
5671 {
5673  }
5674 
5675  bool
5677  {
5679  }
5680 
5683  {
5684  return m_nonCriticalExtension;
5685 }
5686 
5687 bool
5689 {
5691 }
5692 
5693 std::list<LteRrcSap::SrbToAddMod>
5695 {
5697 }
5698 
5699 std::list<LteRrcSap::DrbToAddMod>
5701 {
5703 }
5704 
5705 std::list<uint8_t>
5707 {
5709 }
5710 
5713 {
5715 }
5716 
5717 
5719 
5721 {
5722 }
5723 
5724 void
5726 {
5728 
5729  // Serialize HandoverPreparationInformation sequence:
5730  // no default or optional fields. Extension marker not present.
5731  SerializeSequence (std::bitset<0> (),false);
5732 
5733  // Serialize criticalExtensions choice
5734  // 2 options, selected 0 (c1)
5735  SerializeChoice (2,0,false);
5736 
5737  // Serialize c1 choice
5738  // 8 options, selected 0 (handoverPreparationInformation-r8)
5739  SerializeChoice (8,0,false);
5740 
5741  // Serialize HandoverPreparationInformation-r8-IEs sequence
5742  // 4 optional fields, no extension marker.
5743  std::bitset<4> handoverPrepInfoOpts;
5744  handoverPrepInfoOpts.set (3,1); // as-Config present
5745  handoverPrepInfoOpts.set (2,0); // rrm-Config not present
5746  handoverPrepInfoOpts.set (1,0); // as-Context not present
5747  handoverPrepInfoOpts.set (0,0); // nonCriticalExtension not present
5748  SerializeSequence (handoverPrepInfoOpts,false);
5749 
5750  // Serialize ue-RadioAccessCapabilityInfo
5752 
5753  // Serialize as-Config
5754  SerializeSequence (std::bitset<0> (),true);
5755 
5756  // Serialize sourceMeasConfig
5758 
5759  // Serialize sourceRadioResourceConfig
5761 
5762  // Serialize sourceSecurityAlgorithmConfig
5763  SerializeSequence (std::bitset<0> (),false);
5764  // cipheringAlgorithm
5765  SerializeEnum (8,0);
5766  // integrityProtAlgorithm
5767  SerializeEnum (8,0);
5768 
5769  // Serialize sourceUE-Identity
5770  SerializeBitstring (std::bitset<16> (m_asConfig.sourceUeIdentity));
5771 
5772  // Serialize sourceMasterInformationBlock
5773  SerializeSequence (std::bitset<0> (),false);
5775  SerializeSequence (std::bitset<0> (),false); // phich-Config sequence
5776  SerializeEnum (2,0); // phich-Duration
5777  SerializeEnum (4,0); // phich-Resource
5778  SerializeBitstring (std::bitset<8> (m_asConfig.sourceMasterInformationBlock.systemFrameNumber)); // systemFrameNumber
5779  SerializeBitstring (std::bitset<10> (321)); // spare
5780 
5781  // Serialize sourceSystemInformationBlockType1 sequence
5783 
5784  // Serialize sourceSystemInformationBlockType2
5786 
5787  // Serialize AntennaInfoCommon
5788  SerializeSequence (std::bitset<0> (0),false);
5789  SerializeEnum (4,0); // antennaPortsCount
5790 
5791  // Serialize sourceDlCarrierFreq
5793 
5794  // Finish serialization
5796 }
5797 
5798 uint32_t
5800 {
5801  std::bitset<0> bitset0;
5802  int n;
5803 
5804  // Deserialize HandoverPreparationInformation sequence
5805  // 0 optional fields, no extension marker
5806  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5807 
5808  // Deserialize criticalExtensions choice
5809  int criticalExtensionsChosen;
5810  bIterator = DeserializeChoice (2,false,&criticalExtensionsChosen,bIterator);
5811 
5812  if (criticalExtensionsChosen == 1)
5813  {
5814  // Deserialize criticalExtensionsFuture
5815  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5816  }
5817  else if (criticalExtensionsChosen == 0)
5818  {
5819  // Deserialize c1 choice
5820  int c1Chosen;
5821  bIterator = DeserializeChoice (8,false,&c1Chosen,bIterator);
5822  if (c1Chosen > 0)
5823  {
5824  bIterator = DeserializeNull (bIterator);
5825  }
5826  else if (c1Chosen == 0)
5827  {
5828  // Deserialize handoverPreparationInformation-r8
5829  std::bitset<4> handoverPrepInfoOpts;
5830  bIterator = DeserializeSequence (&handoverPrepInfoOpts,false,bIterator);
5831 
5832  // Deserialize ue-RadioAccessCapabilityInfo
5833  bIterator = DeserializeSequenceOf (&n,MAX_RAT_CAPABILITIES,0,bIterator);
5834  for (int i = 0; i < n; i++)
5835  {
5836  // Deserialize UE-CapabilityRAT-Container
5837  // ...
5838  }
5839 
5840  if (handoverPrepInfoOpts[3])
5841  {
5842  // Deserialize as-Config sequence
5843  bIterator = DeserializeSequence (&bitset0,true,bIterator);
5844 
5845  // Deserialize sourceMeasConfig
5846  bIterator = DeserializeMeasConfig (&m_asConfig.sourceMeasConfig, bIterator);
5847 
5848  // Deserialize sourceRadioResourceConfig
5850 
5851  // Deserialize sourceSecurityAlgorithmConfig
5852  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5853  bIterator = DeserializeEnum (8,&n,bIterator); // cipheringAlgorithm
5854  bIterator = DeserializeEnum (8,&n,bIterator); // integrityProtAlgorithm
5855 
5856  // Deserialize sourceUE-Identity
5857  std::bitset<16> cRnti;
5858  bIterator = DeserializeBitstring (&cRnti,bIterator);
5859  m_asConfig.sourceUeIdentity = cRnti.to_ulong ();
5860 
5861  // Deserialize sourceMasterInformationBlock
5862  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5863  bIterator = DeserializeEnum (6,&n,bIterator); // dl-Bandwidth
5865 
5866  // phich-Config
5867  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5868  bIterator = DeserializeEnum (2,&n,bIterator); // phich-Duration
5869  bIterator = DeserializeEnum (4,&n,bIterator); // phich-Resource
5870 
5871  // systemFrameNumber
5872  std::bitset<8> systemFrameNumber;
5873  bIterator = DeserializeBitstring (&systemFrameNumber,bIterator);
5874  m_asConfig.sourceMasterInformationBlock.systemFrameNumber = systemFrameNumber.to_ulong ();
5875  // spare
5876  std::bitset<10> spare;
5877  bIterator = DeserializeBitstring (&spare,bIterator);
5878 
5879  // Deserialize sourceSystemInformationBlockType1
5881 
5882  // Deserialize sourceSystemInformationBlockType2
5884 
5885  // Deserialize antennaInfoCommon
5886  bIterator = DeserializeSequence (&bitset0,false,bIterator);
5887  bIterator = DeserializeEnum (4,&n,bIterator); // antennaPortsCount
5888 
5889  // Deserialize sourceDl-CarrierFreq
5890  bIterator = DeserializeInteger (&n,0,MAX_EARFCN,bIterator);
5892  }
5893  if (handoverPrepInfoOpts[2])
5894  {
5895  // Deserialize rrm-Config
5896  // ...
5897  }
5898  if (handoverPrepInfoOpts[1])
5899  {
5900  // Deserialize as-Context
5901  // ...
5902  }
5903  if (handoverPrepInfoOpts[0])
5904  {
5905  // Deserialize nonCriticalExtension
5906  // ...
5907  }
5908  }
5909  }
5910 
5911  return GetSerializedSize ();
5912 }
5913 
5914 void
5916 {
5918  os << "sourceUeIdentity: " << m_asConfig.sourceUeIdentity << std::endl;
5919  os << "dlBandwidth: " << (int)m_asConfig.sourceMasterInformationBlock.dlBandwidth << std::endl;
5920  os << "systemFrameNumber: " << (int)m_asConfig.sourceMasterInformationBlock.systemFrameNumber << std::endl;
5921  os << "plmnIdentityInfo.plmnIdentity: " << (int) m_asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity << std::endl;
5922  os << "cellAccessRelatedInfo.cellIdentity " << (int)m_asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.cellIdentity << std::endl;
5923  os << "cellAccessRelatedInfo.csgIndication: " << m_asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication << std::endl;
5924  os << "cellAccessRelatedInfo.csgIdentity: " << (int)m_asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity << std::endl;
5925  os << "sourceDlCarrierFreq: " << m_asConfig.sourceDlCarrierFreq << std::endl;
5926 }
5927 
5928 void
5930 {
5931  m_asConfig = msg.asConfig;
5932  m_isDataSerialized = false;
5933 }
5934 
5937 {
5939  msg.asConfig = m_asConfig;
5940 
5941  return msg;
5942 }
5943 
5946 {
5947  return m_asConfig;
5948 }
5949 
5951 
5953 {
5954 }
5955 
5957 {
5958 }
5959 
5960 void
5962 {
5964 
5966 
5967  // Serialize RrcConnectionReestablishmentReques sequence:
5968  // no default or optional fields. Extension marker not present.
5969  SerializeSequence (std::bitset<0> (),false);
5970 
5971  // Serialize criticalExtensions choice
5972  // chosen: rrcConnectionReestablishmentRequest-r8
5973  SerializeChoice (2,0,false);
5974 
5975  // Serialize RRCConnectionReestablishmentRequest-r8-IEs sequence
5976  // no default or optional fields. Extension marker not present.
5977  SerializeSequence (std::bitset<0> (),false);
5978 
5979  // Serialize ue-Identity
5980  SerializeSequence (std::bitset<0> (),false);
5981  // Serialize c-RNTI
5982  SerializeBitstring (std::bitset<16> (m_ueIdentity.cRnti));
5983  // Serialize physCellId
5985  // Serialize shortMAC-I
5986  SerializeBitstring (std::bitset<16> (0));
5987 
5988  // Serialize ReestablishmentCause
5989  switch (m_reestablishmentCause)
5990  {
5992  SerializeEnum (4,0);
5993  break;
5995  SerializeEnum (4,1);
5996  break;
5998  SerializeEnum (4,2);
5999  break;
6000  default:
6001  SerializeEnum (4,3);
6002  }
6003 
6004  // Serialize spare
6005  SerializeBitstring (std::bitset<2> (0));
6006 
6007  // Finish serialization
6009 }
6010 
6011 uint32_t
6013 {
6014  std::bitset<0> bitset0;
6015  int n;
6016 
6017  bIterator = DeserializeUlCcchMessage (bIterator);
6018 
6019  // Deserialize RrcConnectionReestablishmentRequest sequence
6020  // 0 optional fields, no extension marker
6021  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6022 
6023  // Deserialize criticalExtensions choice
6024  bIterator = DeserializeChoice (2,false,&n,bIterator);
6025  if ( n == 1)
6026  {
6027  // Deserialize criticalExtensionsFuture
6028  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6029  }
6030  else if ( n == 0)
6031  {
6032  // Deserialize RRCConnectionReestablishmentRequest-r8-IEs
6033  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6034 
6035  // Deserialize ReestabUE-Identity sequence
6036  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6037 
6038  // Deserialize c-RNTI
6039  std::bitset<16> cRnti;
6040  bIterator = DeserializeBitstring (&cRnti,bIterator);
6041  m_ueIdentity.cRnti = cRnti.to_ulong ();
6042 
6043  // Deserialize physCellId
6044  int physCellId;
6045  bIterator = DeserializeInteger (&physCellId,0,503,bIterator);
6046  m_ueIdentity.physCellId = physCellId;
6047 
6048  // Deserialize shortMAC-I
6049  std::bitset<16> shortMacI;
6050  bIterator = DeserializeBitstring (&shortMacI,bIterator);
6051 
6052  // Deserialize ReestablishmentCause
6053  int reestCs;
6054  bIterator = DeserializeEnum (4,&reestCs,bIterator);
6055  switch (reestCs)
6056  {
6057  case 0:
6059  break;
6060  case 1:
6062  break;
6063  case 2:
6065  break;
6066  case 3:
6067  break;
6068  }
6069 
6070  // Deserialize spare
6071  std::bitset<2> spare;
6072  bIterator = DeserializeBitstring (&spare,bIterator);
6073  }
6074 
6075  return GetSerializedSize ();
6076 }
6077 
6078 void
6080 {
6081  os << "ueIdentity.cRnti: " << (int)m_ueIdentity.cRnti << std::endl;
6082  os << "ueIdentity.physCellId: " << (int)m_ueIdentity.physCellId << std::endl;
6083  os << "m_reestablishmentCause: " << m_reestablishmentCause << std::endl;
6084 }
6085 
6086 void
6088 {
6089  m_ueIdentity = msg.ueIdentity;
6091  m_isDataSerialized = false;
6092 }
6093 
6096 {
6098  msg.ueIdentity = m_ueIdentity;
6100 
6101  return msg;
6102 }
6103 
6106 {
6107  return m_ueIdentity;
6108 }
6109 
6112 {
6113  return m_reestablishmentCause;
6114 }
6115 
6117 
6119 {
6120 }
6121 
6123 {
6124 }
6125 
6126 void
6128 {
6130 
6132 
6133  // Serialize RrcConnectionReestablishment sequence:
6134  // no default or optional fields. Extension marker not present.
6135  SerializeSequence (std::bitset<0> (),false);
6136 
6137  // Serialize rrc-TransactionIdentifier
6139 
6140  // Serialize criticalExtensions choice
6141  SerializeChoice (2,0,false);
6142 
6143  // Serialize c1 choice
6144  SerializeChoice (8,0,false);
6145 
6146  // Serialize RRCConnectionReestablishment-r8-IEs sequence
6147  // 1 optional field, no extension marker
6148  SerializeSequence (std::bitset<1> (0),false);
6149 
6150  // Serialize radioResourceConfigDedicated
6152 
6153  // Serialize nextHopChainingCount
6154  SerializeInteger (0,0,7);
6155 
6156  // Finish serialization
6158 }
6159 
6160 uint32_t
6162 {
6163  std::bitset<0> bitset0;
6164  int n;
6165 
6166  bIterator = DeserializeDlCcchMessage (bIterator);
6167 
6168  // Deserialize RrcConnectionReestablishment sequence
6169  // 0 optional fields, no extension marker
6170  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6171 
6172  // Deserialize rrc-TransactionIdentifier
6173  bIterator = DeserializeInteger (&n,0,3,bIterator);
6175 
6176  // Deserialize criticalExtensions choice
6177  int criticalExtensionsChoice;
6178  bIterator = DeserializeChoice (2,false,&criticalExtensionsChoice,bIterator);
6179  if (criticalExtensionsChoice == 1)
6180  {
6181  // Deserialize criticalExtensionsFuture
6182  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6183  }
6184  else if (criticalExtensionsChoice == 0)
6185  {
6186  // Deserialize c1
6187  int c1;
6188  bIterator = DeserializeChoice (8,false,&c1,bIterator);
6189  if (c1 > 0)
6190  {
6191  bIterator = DeserializeNull (bIterator);
6192  }
6193  else if (c1 == 0)
6194  {
6195  // Deserialize rrcConnectionReestablishment-r8
6196  // 1 optional field
6197  std::bitset<1> nonCriticalExtensionPresent;
6198  bIterator = DeserializeSequence (&nonCriticalExtensionPresent,false,bIterator);
6199 
6200  // Deserialize RadioResourceConfigDedicated
6202 
6203  // Deserialize nextHopChainingCount
6204  bIterator = DeserializeInteger (&n,0,7,bIterator);
6205  }
6206  }
6207 
6208  return GetSerializedSize ();
6209 }
6210 
6211 void
6213 {
6214  os << "rrcTransactionIdentifier: " << (int)m_rrcTransactionIdentifier << std::endl;
6215  os << "RadioResourceConfigDedicated: " << std::endl;
6217 }
6218 
6219 void
6221 {
6224  m_isDataSerialized = false;
6225 }
6226 
6229 {
6233  return msg;
6234 }
6235 
6236 uint8_t
6238 {
6240 }
6241 
6244 {
6246 }
6247 
6249 
6251 {
6252 }
6253 
6254 void
6256 {
6258 
6259  // Serialize DCCH message
6261 
6262  // Serialize RrcConnectionReestablishmentComplete sequence:
6263  // no default or optional fields. Extension marker not present.
6264  SerializeSequence (std::bitset<0> (),false);
6265 
6266  // Serialize rrc-TransactionIdentifier
6268 
6269  // Serialize criticalExtensions choice
6270  SerializeChoice (2,0,false);
6271 
6272  // Serialize rrcConnectionReestablishmentComplete-r8 sequence
6273  // 1 optional field (not present), no extension marker.
6274  SerializeSequence (std::bitset<1> (0),false);
6275 
6276  // Finish serialization
6278 }
6279 
6280 uint32_t
6282 {
6283  std::bitset<0> bitset0;
6284  int n;
6285 
6286  bIterator = DeserializeUlDcchMessage (bIterator);
6287 
6288  // Deserialize RrcConnectionReestablishmentComplete sequence
6289  // 0 optional fields, no extension marker
6290  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6291 
6292  // Deserialize rrc-TransactionIdentifier
6293  bIterator = DeserializeInteger (&n,0,3,bIterator);
6295 
6296  // Deserialize criticalExtensions choice
6297  int criticalExtensionsChoice;
6298  bIterator = DeserializeChoice (2,false,&criticalExtensionsChoice,bIterator);
6299  if (criticalExtensionsChoice == 1)
6300  {
6301  // Deserialize criticalExtensionsFuture
6302  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6303  }
6304  else if (criticalExtensionsChoice == 0)
6305  {
6306  // Deserialize rrcConnectionReestablishmentComplete-r8
6307  std::bitset<1> opts;
6308  bIterator = DeserializeSequence (&opts,false,bIterator);
6309  if (opts[0])
6310  {
6311  // Deserialize RRCConnectionReestablishmentComplete-v920-IEs
6312  // ...
6313  }
6314  }
6315 
6316  return GetSerializedSize ();
6317 }
6318 
6319 void
6321 {
6322  os << "rrcTransactionIdentifier: " << (int)m_rrcTransactionIdentifier << std::endl;
6323 }
6324 
6325 void
6327 {
6329  m_isDataSerialized = false;
6330 }
6331 
6334 {
6337  return msg;
6338 }
6339 
6340 uint8_t
6342 {
6344 }
6345 
6347 
6349 {
6350 }
6351 
6353 {
6354 }
6355 
6356 void
6358 {
6360 
6361  // Serialize CCCH message
6363 
6364  // Serialize RrcConnectionReestablishmentReject sequence:
6365  // no default or optional fields. Extension marker not present.
6366  SerializeSequence (std::bitset<0> (),false);
6367 
6368  // Serialize criticalExtensions choice
6369  SerializeChoice (2,0,false);
6370 
6371  // Serialize RRCConnectionReestablishmentReject-r8-IEs sequence
6372  // 1 optional field (not present), no extension marker.
6373  SerializeSequence (std::bitset<1> (0),false);
6374 
6375  // Finish serialization
6377 }
6378 
6379 uint32_t
6381 {
6382  std::bitset<0> bitset0;
6383 
6384  bIterator = DeserializeDlCcchMessage (bIterator);
6385 
6386  // Deserialize RrcConnectionReestablishmentReject sequence
6387  // 0 optional fields, no extension marker
6388  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6389 
6390  // Deserialize criticalExtensions choice
6391  int criticalExtensionsChoice;
6392  bIterator = DeserializeChoice (2,false,&criticalExtensionsChoice,bIterator);
6393  if (criticalExtensionsChoice == 1)
6394  {
6395  // Deserialize criticalExtensionsFuture
6396  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6397  }
6398  else if (criticalExtensionsChoice == 0)
6399  {
6400  // Deserialize rrcConnectionReestablishmentReject-r8
6401  std::bitset<1> opts;
6402  bIterator = DeserializeSequence (&opts,false,bIterator);
6403  if (opts[0])
6404  {
6405  // Deserialize RRCConnectionReestablishmentReject-v8a0-IEs
6406  // ...
6407  }
6408  }
6409 
6410  return GetSerializedSize ();
6411 }
6412 
6413 void
6415 {
6416 }
6417 
6418 void
6420 {
6422  m_isDataSerialized = false;
6423 }
6424 
6427 {
6429 }
6430 
6432 
6434 {
6435 }
6436 
6438 {
6439 }
6440 
6441 void
6443 {
6445 
6446  // Serialize DCCH message
6448 
6449  // Serialize RrcConnectionRelease sequence:
6450  // no default or optional fields. Extension marker not present.
6451  SerializeSequence (std::bitset<0> (),false);
6452 
6453  // Serialize rrc-TransactionIdentifier
6455 
6456  // Serialize criticalExtensions choice
6457  SerializeChoice (2,0,false);
6458 
6459  // Serialize c1 choice
6460  SerializeChoice (4,0,false);
6461 
6462  // Serialize RRCConnectionRelease-r8-IEs sequence
6463  // 3 optional field (not present), no extension marker.
6464  SerializeSequence (std::bitset<3> (0),false);
6465 
6466  // Serialize ReleaseCause
6467  SerializeEnum (4,1);
6468 
6469  // Finish serialization
6471 }
6472 
6473 uint32_t
6475 {
6476  std::bitset<0> bitset0;
6477  int n;
6478 
6479  bIterator = DeserializeDlDcchMessage (bIterator);
6480 
6481  // Deserialize RrcConnectionRelease sequence
6482  // 0 optional fields, no extension marker
6483  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6484 
6485  // Deserialize rrc-TransactionIdentifier
6486  bIterator = DeserializeInteger (&n,0,3,bIterator);
6488 
6489  // Deserialize criticalExtensions choice
6490  int criticalExtensionsChoice;
6491  bIterator = DeserializeChoice (2,false,&criticalExtensionsChoice,bIterator);
6492  if (criticalExtensionsChoice == 1)
6493  {
6494  // Deserialize criticalExtensionsFuture
6495  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6496  }
6497  else if (criticalExtensionsChoice == 0)
6498  {
6499  // Deserialize c1
6500  int c1Choice;
6501  bIterator = DeserializeChoice (4,false,&c1Choice,bIterator);
6502 
6503  if (c1Choice == 0)
6504  {
6505  // Deserialize RRCConnectionRelease-r8-IEs
6506  std::bitset<3> opts;
6507  bIterator = DeserializeSequence (&opts,false,bIterator);
6508 
6509  // Deserialize releaseCause
6510  bIterator = DeserializeEnum (4,&n,bIterator);
6511 
6512  if (opts[2])
6513  {
6514  // Deserialize redirectedCarrierInfo
6515  // ...
6516  }
6517  if (opts[1])
6518  {
6519  // Deserialize idleModeMobilityControlInfo
6520  // ...
6521  }
6522  if (opts[0])
6523  {
6524  // Deserialize nonCriticalExtension
6525  // ...
6526  }
6527  }
6528 
6529  else
6530  {
6531  bIterator = DeserializeNull (bIterator);
6532  }
6533  }
6534 
6535  return GetSerializedSize ();
6536 }
6537 
6538 void
6539 RrcConnectionReleaseHeader::Print (std::ostream &os) const
6540 {
6541 }
6542 
6543 void
6545 {
6546  m_rrcConnectionRelease = msg;
6547  m_isDataSerialized = false;
6548 }
6549 
6552 {
6553  return m_rrcConnectionRelease;
6554 }
6555 
6557 
6559 {
6560 }
6561 
6563 {
6564 }
6565 
6566 void
6568 {
6570 
6571  // Serialize CCCH message
6573 
6574  // Serialize RrcConnectionReject sequence:
6575  // no default or optional fields. Extension marker not present.
6576  SerializeSequence (std::bitset<0> (),false);
6577 
6578  // Serialize criticalExtensions choice
6579  SerializeChoice (2,0,false);
6580 
6581  // Serialize c1 choice
6582  SerializeChoice (4,0,false);
6583 
6584  // Serialize rrcConnectionReject-r8 sequence
6585  // 1 optional field (not present), no extension marker.
6586  SerializeSequence (std::bitset<1> (0),false);
6587 
6588  // Serialize waitTime
6590 
6591  // Finish serialization
6593 }
6594 
6595 uint32_t
6597 {
6598  std::bitset<0> bitset0;
6599  int n;
6600 
6601  bIterator = DeserializeDlCcchMessage (bIterator);
6602 
6603  // Deserialize RrcConnectionReject sequence
6604  // 0 optional fields, no extension marker
6605  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6606 
6607  // Deserialize criticalExtensions choice
6608  int criticalExtensionsChoice;
6609  bIterator = DeserializeChoice (2,false,&criticalExtensionsChoice,bIterator);
6610  if (criticalExtensionsChoice == 1)
6611  {
6612  // Deserialize criticalExtensionsFuture
6613  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6614  }
6615  else if (criticalExtensionsChoice == 0)
6616  {
6617  // Deserialize c1 choice
6618  int c1Choice;
6619  bIterator = DeserializeChoice (4,false,&c1Choice,bIterator);
6620 
6621  if (c1Choice > 0)
6622  {
6623  bIterator = DeserializeNull (bIterator);
6624  }
6625  else if (c1Choice == 0)
6626  {
6627  // Deserialize rrcConnectionReject-r8
6628  std::bitset<1> opts;
6629  bIterator = DeserializeSequence (&opts,false,bIterator);
6630 
6631  bIterator = DeserializeInteger (&n,1,16,bIterator);
6633 
6634  if (opts[0])
6635  {
6636  // Deserialize RRCConnectionReject-v8a0-IEs
6637  // ...
6638  }
6639  }
6640  }
6641 
6642  return GetSerializedSize ();
6643 }
6644 
6645 void
6646 RrcConnectionRejectHeader::Print (std::ostream &os) const
6647 {
6648  os << "wait time: " << (int)m_rrcConnectionReject.waitTime << std::endl;
6649 }
6650 
6651 void
6653 {
6654  m_rrcConnectionReject = msg;
6655  m_isDataSerialized = false;
6656 }
6657 
6660 {
6661  return m_rrcConnectionReject;
6662 }
6663 
6665 
6667 {
6668 }
6669 
6671 {
6672 }
6673 
6674 void
6676 {
6678 
6679  // Serialize DCCH message
6681 
6682  // Serialize MeasurementReport sequence:
6683  // no default or optional fields. Extension marker not present.
6684  SerializeSequence (std::bitset<0> (),false);
6685 
6686  // Serialize criticalExtensions choice:
6687  // c1 chosen
6688  SerializeChoice (2,0,false);
6689 
6690  // Serialize c1 choice
6691  // measurementReport-r8 chosen
6692  SerializeChoice (8,0,false);
6693 
6694  // Serialize MeasurementReport-r8-IEs sequence:
6695  // 1 optional fields, not present. Extension marker not present.
6696  SerializeSequence (std::bitset<1> (0),false);
6697 
6698  // Serialize measResults
6700 
6701  // Finish serialization
6703 }
6704 
6705 uint32_t
6707 {
6708  std::bitset<0> bitset0;
6709 
6710  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6711 
6712  bIterator = DeserializeUlDcchMessage (bIterator);
6713 
6714  int criticalExtensionsChoice;
6715  bIterator = DeserializeChoice (2,false,&criticalExtensionsChoice,bIterator);
6716 
6717  if (criticalExtensionsChoice == 1)
6718  {
6719  // Deserialize criticalExtensionsFuture
6720  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6721  }
6722  else if (criticalExtensionsChoice == 0)
6723  {
6724  // Deserialize c1
6725  int c1Choice;
6726  bIterator = DeserializeChoice (8,false,&c1Choice,bIterator);
6727 
6728  if (c1Choice > 0)
6729  {
6730  bIterator = DeserializeNull (bIterator);
6731  }
6732  else
6733  {
6734  // Deserialize measurementReport-r8
6735  std::bitset<1> isNonCriticalExtensionPresent;
6736  bIterator = DeserializeSequence (&isNonCriticalExtensionPresent,false,bIterator);
6737 
6738  // Deserialize measResults
6739  bIterator = DeserializeMeasResults (&m_measurementReport.measResults, bIterator);
6740 
6741  if (isNonCriticalExtensionPresent[0])
6742  {
6743  // Deserialize nonCriticalExtension MeasurementReport-v8a0-IEs
6744  // ...
6745  }
6746 
6747  }
6748  }
6749 
6750  return GetSerializedSize ();
6751 }
6752 
6753 void
6754 MeasurementReportHeader::Print (std::ostream &os) const
6755 {
6756  os << "measId = " << (int)m_measurementReport.measResults.measId << std::endl;
6757  os << "rsrpResult = " << (int)m_measurementReport.measResults.rsrpResult << std::endl;
6758  os << "rsrqResult = " << (int)m_measurementReport.measResults.rsrqResult << std::endl;
6759  os << "haveMeasResultNeighCells = " << (int)m_measurementReport.measResults.haveMeasResultNeighCells << std::endl;
6760 
6762  {
6763  std::list<LteRrcSap::MeasResultEutra> measResultListEutra = m_measurementReport.measResults.measResultListEutra;
6764  std::list<LteRrcSap::MeasResultEutra>::iterator it = measResultListEutra.begin ();
6765  for (; it != measResultListEutra.end (); it++)
6766  {
6767  os << " physCellId =" << (int) it->physCellId << std::endl;
6768  os << " haveCgiInfo =" << it->haveCgiInfo << std::endl;
6769  if (it->haveCgiInfo)
6770  {
6771  os << " plmnIdentity = " << (int) it->cgiInfo.plmnIdentity << std::endl;
6772  os << " cellIdentity = " << (int) it->cgiInfo.cellIdentity << std::endl;
6773  os << " trackingAreaCode = " << (int) it->cgiInfo.trackingAreaCode << std::endl;
6774  os << " havePlmnIdentityList = " << !it->cgiInfo.plmnIdentityList.empty () << std::endl;
6775  if (!it->cgiInfo.plmnIdentityList.empty ())
6776  {
6777  for (std::list<uint32_t>::iterator it2 = it->cgiInfo.plmnIdentityList.begin (); it2 != it->cgiInfo.plmnIdentityList.end (); it2++)
6778  {
6779  os << " plmnId : " << *it2 << std::endl;
6780  }
6781  }
6782  }
6783 
6784  os << " haveRsrpResult =" << it->haveRsrpResult << std::endl;
6785  if (it->haveRsrpResult)
6786  {
6787  os << " rsrpResult =" << (int) it->rsrpResult << std::endl;
6788  }
6789 
6790  os << " haveRsrqResult =" << it->haveRsrqResult << std::endl;
6791  if (it->haveRsrqResult)
6792  {
6793  os << " rsrqResult =" << (int) it->rsrqResult << std::endl;
6794  }
6795 
6796  }
6797  }
6798 }
6799 
6800 void
6802 {
6803  m_measurementReport = msg;
6804  m_isDataSerialized = false;
6805 }
6806 
6809 {
6811  msg = m_measurementReport;
6812  return msg;
6813 }
6814 
6817 {
6818 }
6819 
6821 {
6822 }
6823 
6824 uint32_t
6826 {
6827  DeserializeUlDcchMessage (bIterator);
6828  return 1;
6829 }
6830 
6831 void
6832 RrcUlDcchMessage::Print (std::ostream &os) const
6833 {
6834  std::cout << "UL DCCH MSG TYPE: " << m_messageType << std::endl;
6835 }
6836 
6837 void
6839 {
6841 }
6842 
6845 {
6846  std::bitset<0> bitset0;
6847  int n;
6848 
6849  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6850  bIterator = DeserializeChoice (2,false,&n,bIterator);
6851  if (n == 1)
6852  {
6853  // Deserialize messageClassExtension
6854  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6855  m_messageType = -1;
6856  }
6857  else if (n == 0)
6858  {
6859  // Deserialize c1
6860  bIterator = DeserializeChoice (16,false,&m_messageType,bIterator);
6861  }
6862 
6863  return bIterator;
6864 }
6865 
6866 void
6868 {
6869  SerializeSequence (std::bitset<0> (),false);
6870  // Choose c1
6871  SerializeChoice (2,0,false);
6872  // Choose message type
6873  SerializeChoice (16,messageType,false);
6874 }
6875 
6878 {
6879 }
6880 
6882 {
6883 }
6884 
6885 uint32_t
6887 {
6888  DeserializeDlDcchMessage (bIterator);
6889  return 1;
6890 }
6891 
6892 void
6893 RrcDlDcchMessage::Print (std::ostream &os) const
6894 {
6895  std::cout << "DL DCCH MSG TYPE: " << m_messageType << std::endl;
6896 }
6897 
6898 void
6900 {
6902 }
6903 
6906 {
6907  std::bitset<0> bitset0;
6908  int n;
6909 
6910  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6911  bIterator = DeserializeChoice (2,false,&n,bIterator);
6912  if (n == 1)
6913  {
6914  // Deserialize messageClassExtension
6915  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6916  m_messageType = -1;
6917  }
6918  else if (n == 0)
6919  {
6920  // Deserialize c1
6921  bIterator = DeserializeChoice (16,false,&m_messageType,bIterator);
6922  }
6923 
6924  return bIterator;
6925 }
6926 
6927 void
6929 {
6930  SerializeSequence (std::bitset<0> (),false);
6931  // Choose c1
6932  SerializeChoice (2,0,false);
6933  // Choose message type
6934  SerializeChoice (16,messageType,false);
6935 }
6936 
6939 {
6940 }
6941 
6943 {
6944 }
6945 
6946 uint32_t
6948 {
6949  DeserializeUlCcchMessage (bIterator);
6950  return 1;
6951 }
6952 
6953 void
6954 RrcUlCcchMessage::Print (std::ostream &os) const
6955 {
6956  std::cout << "UL CCCH MSG TYPE: " << m_messageType << std::endl;
6957 }
6958 
6959 void
6961 {
6963 }
6964 
6967 {
6968  std::bitset<0> bitset0;
6969  int n;
6970 
6971  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6972  bIterator = DeserializeChoice (2,false,&n,bIterator);
6973  if (n == 1)
6974  {
6975  // Deserialize messageClassExtension
6976  bIterator = DeserializeSequence (&bitset0,false,bIterator);
6977  m_messageType = -1;
6978  }
6979  else if (n == 0)
6980  {
6981  // Deserialize c1
6982  bIterator = DeserializeChoice (2,false,&m_messageType,bIterator);
6983  }
6984 
6985  return bIterator;
6986 }
6987 
6988 void
6990 {
6991  SerializeSequence (std::bitset<0> (),false);
6992  // Choose c1
6993  SerializeChoice (2,0,false);
6994  // Choose message type
6995  SerializeChoice (2,messageType,false);
6996 }
6997 
7000 {
7001 }
7002 
7004 {
7005 }
7006 
7007 uint32_t
7009 {
7010  DeserializeDlCcchMessage (bIterator);
7011  return 1;
7012 }
7013 
7014 void
7015 RrcDlCcchMessage::Print (std::ostream &os) const
7016 {
7017  std::cout << "DL CCCH MSG TYPE: " << m_messageType << std::endl;
7018 }
7019 
7020 void
7022 {
7024 }
7025 
7028 {
7029  std::bitset<0> bitset0;
7030  int n;
7031 
7032  bIterator = DeserializeSequence (&bitset0,false,bIterator);
7033  bIterator = DeserializeChoice (2,false,&n,bIterator);
7034  if (n == 1)
7035  {
7036  // Deserialize messageClassExtension
7037  bIterator = DeserializeSequence (&bitset0,false,bIterator);
7038  m_messageType = -1;
7039  }
7040  else if (n == 0)
7041  {
7042  // Deserialize c1
7043  bIterator = DeserializeChoice (4,false,&m_messageType,bIterator);
7044  }
7045 
7046  return bIterator;
7047 }
7048 
7049 void
7051 {
7052  SerializeSequence (std::bitset<0> (),false);
7053  // Choose c1
7054  SerializeChoice (2,0,false);
7055  // Choose message type
7056  SerializeChoice (4,messageType,false);
7057 }
7058 
7059 } // namespace ns3
7060 
ns3::LteRrcSap::LogicalChannelConfig::prioritizedBitRateKbps
uint16_t prioritizedBitRateKbps
prioritized bit rate Kbps
Definition: lte-rrc-sap.h:111
ns3::LteRrcSap::ReportConfigEutra::reportInterval
enum ns3::LteRrcSap::ReportConfigEutra::@5 reportInterval
Report interval enumeration.
ns3::RrcConnectionSetupHeader::GetRadioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated() const
Getter for m_radioResourceConfigDedicated.
Definition: lte-rrc-header.cc:4881
ns3::HandoverPreparationInfoHeader::GetAsConfig
LteRrcSap::AsConfig GetAsConfig() const
Getter for m_asConfig.
Definition: lte-rrc-header.cc:5945
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveSoundingRsUlConfigDedicated
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
Definition: lte-rrc-sap.h:799
ns3::RrcConnectionReconfigurationHeader::m_mobilityControlInfo
LteRrcSap::MobilityControlInfo m_mobilityControlInfo
the modility control info
Definition: lte-rrc-header.h:827
ns3::RrcConnectionReestablishmentRejectHeader::RrcConnectionReestablishmentRejectHeader
RrcConnectionReestablishmentRejectHeader()
Definition: lte-rrc-header.cc:6348
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
ns3::Asn1Header::DeserializeEnum
Buffer::Iterator DeserializeEnum(int numElems, int *selectedElem, Buffer::Iterator bIterator)
Deserialize an Enum.
Definition: lte-asn1-header.cc:685
ns3::RrcAsn1Header::DeserializeRachConfigCommon
Buffer::Iterator DeserializeRachConfigCommon(LteRrcSap::RachConfigCommon *rachConfigCommon, Buffer::Iterator bIterator)
Deserialize RACH config common function.
Definition: lte-rrc-header.cc:3252
ns3::RrcAsn1Header::SerializePhysicalConfigDedicatedSCell
void SerializePhysicalConfigDedicatedSCell(LteRrcSap::PhysicalConfigDedicatedSCell pcdsc) const
Serialize physical config dedicated function.
Definition: lte-rrc-header.cc:1868
ns3::LteRrcSap::MeasObjectToAddMod::measObjectId
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:452
ns3::LteRrcSap::MeasResults::rsrqResult
uint8_t rsrqResult
RSRQ result.
Definition: lte-rrc-sap.h:682
ns3::LteRrcSap::DrbToAddMod::logicalChannelConfig
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:241
ns3::LteRrcSap::MobilityStateParameters::tEvaluation
uint8_t tEvaluation
evaluation
Definition: lte-rrc-sap.h:490
ns3::LteRrcSap::CellIdentification::dlCarrierFreq
uint32_t dlCarrierFreq
ARFCN - valueEUTRA.
Definition: lte-rrc-sap.h:715
ns3::LteRrcSap::ReportConfigEutra::MIN6
@ MIN6
Definition: lte-rrc-sap.h:432
ns3::LteRrcSap::ReportConfigEutra::threshold2
ThresholdEutra threshold2
Threshold for event A5.
Definition: lte-rrc-sap.h:382
ns3::LteRrcSap::SoundingRsUlConfigDedicated::RESET
@ RESET
Definition: lte-rrc-sap.h:134
ns3::RrcAsn1Header::SerializeRachConfigCommon
void SerializeRachConfigCommon(LteRrcSap::RachConfigCommon rachConfigCommon) const
Serialize RACH config common function.
Definition: lte-rrc-header.cc:789
ns3::RrcConnectionReconfigurationHeader::m_haveMeasConfig
bool m_haveMeasConfig
have measure config?
Definition: lte-rrc-header.h:824
ns3::LteRrcSap::MobilityControlInfo::radioResourceConfigCommon
RadioResourceConfigCommon radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:566
ns3::LteRrcSap::MeasResultScell
MeasResultScell structure.
Definition: lte-rrc-sap.h:649
ns3::RrcConnectionReconfigurationCompleteHeader::~RrcConnectionReconfigurationCompleteHeader
~RrcConnectionReconfigurationCompleteHeader()
Definition: lte-rrc-header.cc:4998
ns3::LteRrcSap::CellsToAddMod
CellsToAddMod structure.
Definition: lte-rrc-sap.h:303
ns3::RrcAsn1Header::DeserializeSystemInformationBlockType1
Buffer::Iterator DeserializeSystemInformationBlockType1(LteRrcSap::SystemInformationBlockType1 *systemInformationBlockType1, Buffer::Iterator bIterator)
Deserialize system information block type 1 function.
Definition: lte-rrc-header.cc:2973
ns3::LteRrcSap::NonUlConfiguration::antennaInfoCommon
AntennaInfoCommon antennaInfoCommon
2: Physical configuration, general antennaInfoCommon-r10
Definition: lte-rrc-sap.h:743
ns3::LteRrcSap::MeasResultScell::servFreqId
uint16_t servFreqId
service frequency ID
Definition: lte-rrc-sap.h:650
ns3::LteRrcSap::ReportConfigEutra::EVENT_A1
@ EVENT_A1
Event A1: Serving becomes better than absolute threshold.
Definition: lte-rrc-sap.h:373
ns3::LteRrcSap::RadioResourceConfigDedicated::physicalConfigDedicated
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated
Definition: lte-rrc-sap.h:291
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition: assert.h:67
ns3::LteRrcSap::MeasConfig::measIdToRemoveList
std::list< uint8_t > measIdToRemoveList
measure ID to remove list
Definition: lte-rrc-sap.h:524
ns3::LteRrcSap::AsConfig::sourceMeasConfig
MeasConfig sourceMeasConfig
source measure config
Definition: lte-rrc-sap.h:617
ns3::LteRrcSap::MeasurementReport::measResults
MeasResults measResults
measure results
Definition: lte-rrc-sap.h:903
ns3::LteRrcSap::MeasObjectToAddMod::measObjectEutra
MeasObjectEutra measObjectEutra
measure object eutra
Definition: lte-rrc-sap.h:453
ns3::LteRrcSap::RrcConnectionReconfiguration::measConfig
MeasConfig measConfig
measure config
Definition: lte-rrc-sap.h:840
ns3::RrcConnectionReestablishmentRequestHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6079
ns3::RrcConnectionReconfigurationHeader::m_nonCriticalExtension
LteRrcSap::NonCriticalExtensionConfiguration m_nonCriticalExtension
the critical extension
Definition: lte-rrc-header.h:831
ns3::LteRrcSap::MasterInformationBlock::dlBandwidth
uint16_t dlBandwidth
DL bandwidth.
Definition: lte-rrc-sap.h:589
ns3::LteRrcSap::ReportConfigEutra::MS10240
@ MS10240
Definition: lte-rrc-sap.h:430
ns3::LteRrcSap::RrcConnectionSetupCompleted
RrcConnectionSetupCompleted structure.
Definition: lte-rrc-sap.h:706
ns3::LteRrcSap::MobilityStateParameters::nCellChangeHigh
uint8_t nCellChangeHigh
cell change high
Definition: lte-rrc-sap.h:493
ns3::LteRrcSap::ReportConfigToAddMod::reportConfigEutra
ReportConfigEutra reportConfigEutra
report config eutra
Definition: lte-rrc-sap.h:460
ns3::LteRrcSap::AsConfig::sourceSystemInformationBlockType1
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1
Definition: lte-rrc-sap.h:621
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::antennaInfo
AntennaInfoDedicated antennaInfo
antenna info dedicated
Definition: lte-rrc-sap.h:788
ns3::LteRrcSap::MeasResultScell::rsrpResult
uint8_t rsrpResult
the RSRP result
Definition: lte-rrc-sap.h:652
ns3::RrcConnectionReestablishmentRequestHeader::~RrcConnectionReestablishmentRequestHeader
~RrcConnectionReestablishmentRequestHeader()
Definition: lte-rrc-header.cc:5956
ns3::LteRrcSap::MeasObjectEutra::haveCellForWhichToReportCGI
bool haveCellForWhichToReportCGI
have cell for which to report CGI?
Definition: lte-rrc-sap.h:336
ns3::LteRrcSap::MeasConfig::measObjectToRemoveList
std::list< uint8_t > measObjectToRemoveList
measure object to remove list
Definition: lte-rrc-sap.h:520
ns3::RrcUlCcchMessage::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6954
ns3::LteRrcSap::MobilityControlInfo::newUeIdentity
uint16_t newUeIdentity
new UE identity
Definition: lte-rrc-sap.h:565
ns3::LteRrcSap::CellIdentification
CellIdentification structure.
Definition: lte-rrc-sap.h:713
ns3::LteRrcSap::RrcConnectionSetup::radioResourceConfigDedicated
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:701
ns3::LteRrcSap::RrcConnectionSetup::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:700
ns3::LteRrcSap::CarrierBandwidthEutra::dlBandwidth
uint16_t dlBandwidth
DL bandwidth.
Definition: lte-rrc-sap.h:546
ns3::LteRrcSap::ReportConfigToAddMod
ReportConfigToAddMod structure.
Definition: lte-rrc-sap.h:458
ns3::LteRrcSap::MeasObjectEutra::neighCellConfig
uint8_t neighCellConfig
neighbor cell config
Definition: lte-rrc-sap.h:330
ns3::RrcConnectionRequestHeader::RrcConnectionRequestHeader
RrcConnectionRequestHeader()
Definition: lte-rrc-header.cc:4564
ns3::LteRrcSap::MobilityControlInfo::haveCarrierBandwidth
bool haveCarrierBandwidth
have carrier bandwidth?
Definition: lte-rrc-sap.h:563
ns3::RrcAsn1Header::DeserializeSrbToAddModList
Buffer::Iterator DeserializeSrbToAddModList(std::list< LteRrcSap::SrbToAddMod > *srbToAddModList, Buffer::Iterator bIterator)
Deserialize SRB to add mod list function.
Definition: lte-rrc-header.cc:2185
ns3::RrcAsn1Header::DeserializeQoffsetRange
Buffer::Iterator DeserializeQoffsetRange(int8_t *qOffsetRange, Buffer::Iterator bIterator)
Deserialize Qoffset range function.
Definition: lte-rrc-header.cc:2027
ns3::LteRrcSap::MeasObjectEutra::offsetFreq
int8_t offsetFreq
offset frequency
Definition: lte-rrc-sap.h:331
ns3::LteRrcSap::ThresholdEutra::range
uint8_t range
Value range used in RSRP/RSRQ threshold.
Definition: lte-rrc-sap.h:357
ns3::LteRrcSap::MobilityControlInfo::haveRachConfigDedicated
bool haveRachConfigDedicated
Have RACH config dedicated?
Definition: lte-rrc-sap.h:567
ns3::LteRrcSap::MeasResultScell::haveRsrpResult
bool haveRsrpResult
have RSRP result?
Definition: lte-rrc-sap.h:651
ns3::LteRrcSap::RachConfigCommon::txFailParam
TxFailParam txFailParam
txFailParams
Definition: lte-rrc-sap.h:268
ns3::LteRrcSap::RrcConnectionRelease
RrcConnectionRelease structure.
Definition: lte-rrc-sap.h:884
ns3::RrcAsn1Header::SerializeNonCriticalExtensionConfiguration
void SerializeNonCriticalExtensionConfiguration(LteRrcSap::NonCriticalExtensionConfiguration nonCriticalExtensionConfiguration) const
Serialize non critical extension config function.
Definition: lte-rrc-header.cc:1728
ns3::RrcConnectionReestablishmentRejectHeader::m_rrcConnectionReestablishmentReject
LteRrcSap::RrcConnectionReestablishmentReject m_rrcConnectionReestablishmentReject
RRC connection reestablishmnet reject.
Definition: lte-rrc-header.h:1017
ns3::LteRrcSap::AsConfig::sourceRadioResourceConfig
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config
Definition: lte-rrc-sap.h:618
ns3::LteRrcSap::CarrierFreqEutra::ulCarrierFreq
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:540
ns3::RrcConnectionReestablishmentRejectHeader::~RrcConnectionReestablishmentRejectHeader
~RrcConnectionReestablishmentRejectHeader()
Definition: lte-rrc-header.cc:6352
ns3::LteRrcSap::RadioResourceConfigCommonSCell::haveNonUlConfiguration
bool haveNonUlConfiguration
have non UL configuration?
Definition: lte-rrc-sap.h:806
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::RrcConnectionRequestHeader::m_spare
std::bitset< 1 > m_spare
spare bit
Definition: lte-rrc-header.h:556
ns3::RrcAsn1Header::SerializeRadioResourceConfigCommon
void SerializeRadioResourceConfigCommon(LteRrcSap::RadioResourceConfigCommon radioResourceConfigCommon) const
Serialize system information block type 2 function.
Definition: lte-rrc-header.cc:508
ns3::LteRrcSap::DrbToAddMod::epsBearerIdentity
uint8_t epsBearerIdentity
EPS bearer identity.
Definition: lte-rrc-sap.h:237
ns3::LteRrcSap::MobilityControlInfo::targetPhysCellId
uint16_t targetPhysCellId
target Phy cell ID
Definition: lte-rrc-sap.h:560
ns3::LteRrcSap::RachConfigCommon
RachConfigCommon structure.
Definition: lte-rrc-sap.h:265
ns3::HandoverPreparationInfoHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:5915
ns3::RrcConnectionSetupHeader::HavePhysicalConfigDedicated
bool HavePhysicalConfigDedicated() const
Gets m_radioResourceConfigDedicated.havePhysicalConfigDedicated.
Definition: lte-rrc-header.cc:4851
ns3::LteRrcSap::SrbToAddMod::logicalChannelConfig
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:231
ns3::LteRrcSap::ReestabUeIdentity::cRnti
uint16_t cRnti
RNTI.
Definition: lte-rrc-sap.h:574
ns3::RrcConnectionReconfigurationCompleteHeader::RrcConnectionReconfigurationCompleteHeader
RrcConnectionReconfigurationCompleteHeader()
Definition: lte-rrc-header.cc:4994
ns3::RrcConnectionReestablishmentHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6127
ns3::LteRrcSap::ReportConfigEutra::MS640
@ MS640
Definition: lte-rrc-sap.h:426
ns3::MeasurementReportHeader::GetMessage
LteRrcSap::MeasurementReport GetMessage() const
Returns a MeasurementReport IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6808
ns3::LteRrcSap::PhysCellIdRange::haveRange
bool haveRange
has a range?
Definition: lte-rrc-sap.h:313
ns3::RrcConnectionRequestHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:4597
ns3::LteRrcSap::LogicalChannelConfig::bucketSizeDurationMs
uint16_t bucketSizeDurationMs
bucket size duration ms
Definition: lte-rrc-sap.h:112
ns3::RrcConnectionReleaseHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6539
ns3::RrcUlDcchMessage::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6838
ns3::LteRrcSap::CgiInfo::cellIdentity
uint32_t cellIdentity
cell identity
Definition: lte-rrc-sap.h:630
ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommonSCell
Buffer::Iterator DeserializeRadioResourceConfigCommonSCell(LteRrcSap::RadioResourceConfigCommonSCell *rrccsc, Buffer::Iterator bIterator)
Deserialize radio resource config common SCell function.
Definition: lte-rrc-header.cc:2666
ns3::RrcAsn1Header::DeserializeLogicalChannelConfig
Buffer::Iterator DeserializeLogicalChannelConfig(LteRrcSap::LogicalChannelConfig *logicalChannelConfig, Buffer::Iterator bIterator)
Deserialize logical channel config function.
Definition: lte-rrc-header.cc:2344
ns3::Asn1Header::SerializeNull
void SerializeNull() const
Serialize nothing (null op)
Definition: lte-asn1-header.cc:418
ns3::LteRrcSap::RrcConnectionReconfiguration::radioResourceConfigDedicated
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:844
MAX_SCELL_REPORT
#define MAX_SCELL_REPORT
Definition: lte-rrc-header.cc:42
ns3::RrcConnectionSetupCompleteHeader::m_rrcTransactionIdentifier
uint8_t m_rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-header.h:665
ns3::LteRrcSap::SpeedStateScaleFactors::sfMedium
uint8_t sfMedium
scale factor medium
Definition: lte-rrc-sap.h:500
ns3::RrcConnectionRequestHeader::m_establishmentCause
enum ns3::RrcConnectionRequestHeader::@0 m_establishmentCause
EstablishmentCause enumeration.
ns3::RrcUlDcchMessage::DeserializeUlDcchMessage
Buffer::Iterator DeserializeUlDcchMessage(Buffer::Iterator bIterator)
Deserialize UL DCCH message function.
Definition: lte-rrc-header.cc:6844
ns3::LteRrcSap::MeasObjectEutra::cellsToAddModList
std::list< CellsToAddMod > cellsToAddModList
cells to add mod list
Definition: lte-rrc-sap.h:333
ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommon
Buffer::Iterator DeserializeRadioResourceConfigCommon(LteRrcSap::RadioResourceConfigCommon *radioResourceConfigCommon, Buffer::Iterator bIterator)
Deserialize radio resource config common function.
Definition: lte-rrc-header.cc:3135
ns3::RrcConnectionReestablishmentRejectHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6357
ns3::LteRrcSap::SrbToAddMod::srbIdentity
uint8_t srbIdentity
SB identity.
Definition: lte-rrc-sap.h:230
ns3::RrcConnectionReleaseHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6442
ns3::RrcAsn1Header::SerializeThresholdEutra
void SerializeThresholdEutra(LteRrcSap::ThresholdEutra thresholdEutra) const
Serialize threshold eutra function.
Definition: lte-rrc-header.cc:1055
ns3::LteRrcSap::RadioResourceConfigCommonSCell::ulConfiguration
UlConfiguration ulConfiguration
UL configuration.
Definition: lte-rrc-sap.h:809
ns3::LteRrcSap::MeasIdToAddMod
MeasIdToAddMod structure.
Definition: lte-rrc-sap.h:465
ns3::RrcAsn1Header
This class extends Asn1Header functions, adding serialization/deserialization of some Information ele...
Definition: lte-rrc-header.h:46
ns3::LteRrcSap::SCellToAddMod::haveRadioResourceConfigDedicatedSCell
bool haveRadioResourceConfigDedicatedSCell
have radio resource config dedicated SCell?
Definition: lte-rrc-sap.h:824
ns3::RrcConnectionReleaseHeader::GetMessage
LteRrcSap::RrcConnectionRelease GetMessage() const
Returns a RrcConnectionRelease IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6551
ns3::RrcAsn1Header::SerializePhysicalConfigDedicated
void SerializePhysicalConfigDedicated(LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated) const
Serialize physical config dedicated function.
Definition: lte-rrc-header.cc:305
ns3::RrcAsn1Header::DeserializePhysicalConfigDedicatedSCell
Buffer::Iterator DeserializePhysicalConfigDedicatedSCell(LteRrcSap::PhysicalConfigDedicatedSCell *pcdsc, Buffer::Iterator bIterator)
Deserialize physical config dedicated SCell function.
Definition: lte-rrc-header.cc:2732
ns3::RrcConnectionReconfigurationCompleteHeader::GetRrcTransactionIdentifier
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
Definition: lte-rrc-header.cc:5078
ns3::RrcUlCcchMessage::RrcUlCcchMessage
RrcUlCcchMessage()
Definition: lte-rrc-header.cc:6938
ns3::Asn1Header::SerializeChoice
void SerializeChoice(int numOptions, int selectedOption, bool isExtensionMarkerPresent) const
Serialize a Choice (set of options)
Definition: lte-asn1-header.cc:305
ns3::RrcConnectionReconfigurationHeader::GetDrbToAddModList
std::list< LteRrcSap::DrbToAddMod > GetDrbToAddModList() const
Gets m_radioResourceConfigDedicated.drbToAddModList.
Definition: lte-rrc-header.cc:5700
ns3::RrcConnectionSetupHeader::GetRrcTransactionIdentifier
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
Definition: lte-rrc-header.cc:4845
ns3::LteRrcSap::MeasResultEutra::haveCgiInfo
bool haveCgiInfo
have CGI info?
Definition: lte-rrc-sap.h:639
ns3::Asn1Header::GetSerializedSize
uint32_t GetSerializedSize(void) const
Definition: lte-asn1-header.cc:62
ns3::LteRrcSap::PdschConfigDedicated::pa
uint8_t pa
P_A value.
Definition: lte-rrc-sap.h:171
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveNonUlConfiguration
bool haveNonUlConfiguration
have non UL configuration?
Definition: lte-rrc-sap.h:786
ns3::LteRrcSap::MeasResults::rsrpResult
uint8_t rsrpResult
RSRP result.
Definition: lte-rrc-sap.h:681
ns3::LteRrcSap::SpeedStatePars::timeToTriggerSf
SpeedStateScaleFactors timeToTriggerSf
time to trigger scale factors
Definition: lte-rrc-sap.h:514
ns3::RrcConnectionReestablishmentHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReestablishment msg)
Receives a RrcConnectionReestablishment IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6220
ns3::RrcConnectionSetupHeader::m_radioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated m_radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-header.h:629
ns3::RrcConnectionReestablishmentHeader::GetRrcTransactionIdentifier
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier attribute.
Definition: lte-rrc-header.cc:6237
ns3::LteRrcSap::RrcConnectionReestablishment::radioResourceConfigDedicated
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:868
ns3::RrcConnectionSetupHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:4726
ns3::RrcConnectionReconfigurationHeader::GetMobilityControlInfo
LteRrcSap::MobilityControlInfo GetMobilityControlInfo()
Getter for m_mobilityControlInfo.
Definition: lte-rrc-header.cc:5658
ns3::LteRrcSap::RrcConnectionSetupCompleted::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:707
ns3::RrcConnectionReconfigurationHeader::m_haveRadioResourceConfigDedicated
bool m_haveRadioResourceConfigDedicated
have radio resource config dedicated?
Definition: lte-rrc-header.h:828
ns3::RrcAsn1Header::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:2583
ns3::LteRrcSap::MeasObjectEutra::cellForWhichToReportCGI
uint16_t cellForWhichToReportCGI
cell for which to report CGI
Definition: lte-rrc-sap.h:337
ns3::LteRrcSap::ReestabUeIdentity::physCellId
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:575
ns3::LteRrcSap::FreqInfo::ulCarrierFreq
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:90
ns3::RrcConnectionReestablishmentHeader::m_radioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated m_radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-header.h:952
ns3::LteRrcSap::ReportConfigEutra::purpose
enum ns3::LteRrcSap::ReportConfigEutra::report purpose
purpose
ns3::RrcAsn1Header::DeserializeNonCriticalExtensionConfig
Buffer::Iterator DeserializeNonCriticalExtensionConfig(LteRrcSap::NonCriticalExtensionConfiguration *nonCriticalExtension, Buffer::Iterator bIterator)
Deserialize non critical extension config function.
Definition: lte-rrc-header.cc:2590
ns3::LteRrcSap::MeasResults::haveScellsMeas
bool haveScellsMeas
has SCells measure
Definition: lte-rrc-sap.h:685
ns3::LteRrcSap::RlcConfig::AM
@ AM
Definition: lte-rrc-sap.h:100
ns3::RrcConnectionSetupHeader::GetSrbToAddModList
std::list< LteRrcSap::SrbToAddMod > GetSrbToAddModList() const
Gets m_radioResourceConfigDedicated.srbToAddModList.
Definition: lte-rrc-header.cc:4857
ns3::RrcConnectionReestablishmentRejectHeader::GetMessage
LteRrcSap::RrcConnectionReestablishmentReject GetMessage() const
Returns a RrcConnectionReestablishmentReject IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6426
ns3::RrcConnectionReestablishmentHeader::GetMessage
LteRrcSap::RrcConnectionReestablishment GetMessage() const
Returns a RrcConnectionReestablishment IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6228
ns3::LteRrcSap::MeasConfig::quantityConfig
QuantityConfig quantityConfig
quantity config
Definition: lte-rrc-sap.h:527
ns3::LteRrcSap::MobilityControlInfo::carrierBandwidth
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth
Definition: lte-rrc-sap.h:564
ns3::LteRrcSap::MobilityControlInfo
MobilityControlInfo structure.
Definition: lte-rrc-sap.h:559
ns3::RrcConnectionSetupCompleteHeader::GetMessage
LteRrcSap::RrcConnectionSetupCompleted GetMessage() const
Returns a RrcConnectionSetupCompleted IE from the values in the class attributes.
Definition: lte-rrc-header.cc:4985
ns3::LteRrcSap::MeasConfig::speedStatePars
SpeedStatePars speedStatePars
speed state parameters
Definition: lte-rrc-sap.h:533
ns3::LteRrcSap::MeasResultEutra
MeasResultEutra structure.
Definition: lte-rrc-sap.h:637
ns3::LteRrcSap::RrcConnectionReconfigurationCompleted
RrcConnectionReconfigurationCompleted structure.
Definition: lte-rrc-sap.h:852
ns3::RrcConnectionReestablishmentCompleteHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReestablishmentComplete msg)
Receives a RrcConnectionReestablishmentComplete IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6326
ns3::LteRrcSap::ThresholdEutra::choice
enum ns3::LteRrcSap::ThresholdEutra::@0 choice
Threshold enumeration.
ns3::LteRrcSap::MasterInformationBlock::systemFrameNumber
uint16_t systemFrameNumber
system frame number
Definition: lte-rrc-sap.h:590
ns3::LteRrcSap::MeasObjectEutra::blackCellsToAddModList
std::list< BlackCellsToAddMod > blackCellsToAddModList
black cells to add mod list
Definition: lte-rrc-sap.h:335
ns3::LteRrcSap::RrcConnectionReject
RrcConnectionReject structure.
Definition: lte-rrc-sap.h:890
ns3::LteRrcSap::HandoverPreparationInfo
HandoverPreparationInfo structure.
Definition: lte-rrc-sap.h:896
ns3::RrcConnectionReestablishmentRequestHeader::RrcConnectionReestablishmentRequestHeader
RrcConnectionReestablishmentRequestHeader()
Definition: lte-rrc-header.cc:5952
ns3::LteRrcSap::MeasResultEutra::cgiInfo
CgiInfo cgiInfo
CGI info.
Definition: lte-rrc-sap.h:640
ns3::RrcAsn1Header::SerializeMeasResults
void SerializeMeasResults(LteRrcSap::MeasResults measResults) const
Serialize measure results function.
Definition: lte-rrc-header.cc:645
ns3::LteRrcSap::ReportConfigEutra::threshold1
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
Definition: lte-rrc-sap.h:381
ns3::LteRrcSap::PrachConfigSCell::index
uint16_t index
the index
Definition: lte-rrc-sap.h:733
ns3::RrcConnectionReestablishmentHeader::~RrcConnectionReestablishmentHeader
~RrcConnectionReestablishmentHeader()
Definition: lte-rrc-header.cc:6122
ns3::RrcConnectionReestablishmentCompleteHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6320
ns3::LteRrcSap::MeasGapConfig::gapOffsetChoice
enum ns3::LteRrcSap::MeasGapConfig::gap gapOffsetChoice
gap offset
ns3::LteRrcSap::ReportConfigEutra::MS1024
@ MS1024
Definition: lte-rrc-sap.h:427
ns3::LteRrcSap::DrbToAddMod
DrbToAddMod structure.
Definition: lte-rrc-sap.h:236
ns3::LteRrcSap::ReportConfigEutra::SPARE3
@ SPARE3
Definition: lte-rrc-sap.h:436
ns3::LteRrcSap::RrcConnectionSetup
RrcConnectionSetup structure.
Definition: lte-rrc-sap.h:699
ns3::LteRrcSap::ReportConfigEutra::RSRP
@ RSRP
Reference Signal Received Power.
Definition: lte-rrc-sap.h:406
ns3::LteRrcSap::HANDOVER_FAILURE
@ HANDOVER_FAILURE
Definition: lte-rrc-sap.h:582
ns3::LteRrcSap::PhysicalConfigDedicated::havePdschConfigDedicated
bool havePdschConfigDedicated
have PDSCH config dedicated?
Definition: lte-rrc-sap.h:222
ns3::LteRrcSap::MobilityStateParameters::nCellChangeMedium
uint8_t nCellChangeMedium
cell change medium
Definition: lte-rrc-sap.h:492
ns3::RrcConnectionReestablishmentHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6212
ns3::LteRrcSap::PhysicalConfigDedicated::antennaInfo
AntennaInfoDedicated antennaInfo
antenna info
Definition: lte-rrc-sap.h:221
ns3::RrcAsn1Header::GetInstanceTypeId
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Definition: lte-rrc-header.cc:65
ns3::RrcConnectionRejectHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6567
ns3::RrcConnectionReestablishmentHeader::GetRadioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated() const
Getter for m_radioResourceConfigDedicated attribute.
Definition: lte-rrc-header.cc:6243
ns3::LteRrcSap::RadioResourceConfigCommonSib::rachConfigCommon
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:280
ns3::LteRrcSap::PhysicalConfigDedicated
PhysicalConfigDedicated structure.
Definition: lte-rrc-sap.h:217
ns3::LteRrcSap::MeasObjectEutra::presenceAntennaPort1
bool presenceAntennaPort1
antenna port 1 present?
Definition: lte-rrc-sap.h:329
ns3::Asn1Header::SerializeSequenceOf
void SerializeSequenceOf(int numElems, int nMax, int nMin) const
Serialize a Sequence.
Definition: lte-asn1-header.cc:293
ns3::RrcAsn1Header::DeserializeCellIdentification
Buffer::Iterator DeserializeCellIdentification(LteRrcSap::CellIdentification *ci, Buffer::Iterator bIterator)
Deserialize cell identification function.
Definition: lte-rrc-header.cc:2648
ns3::RrcConnectionReestablishmentRejectHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReestablishmentReject msg)
Receives a RrcConnectionReestablishmentReject IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6419
ns3::LteRrcSap::RachConfigCommon::raSupervisionInfo
RaSupervisionInfo raSupervisionInfo
RA supervision info.
Definition: lte-rrc-sap.h:267
ns3::LteRrcSap::LogicalChannelConfig
LogicalChannelConfig structure.
Definition: lte-rrc-sap.h:109
ns3::Asn1Header::SerializeBoolean
void SerializeBoolean(bool value) const
Serialize a bool.
Definition: lte-asn1-header.cc:219
ns3::HandoverPreparationInfoHeader::SetMessage
void SetMessage(LteRrcSap::HandoverPreparationInfo msg)
Receives a HandoverPreparationInfo IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:5929
ns3::TypeId::SetParent
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:923
ns3::LteRrcSap::MeasConfig
MeasConfig structure.
Definition: lte-rrc-sap.h:519
ns3::RrcUlCcchMessage::DeserializeUlCcchMessage
Buffer::Iterator DeserializeUlCcchMessage(Buffer::Iterator bIterator)
Deserialize DL CCCH message function.
Definition: lte-rrc-header.cc:6966
ns3::RrcDlDcchMessage::~RrcDlDcchMessage
~RrcDlDcchMessage()
Definition: lte-rrc-header.cc:6881
ns3::RrcConnectionReconfigurationHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:5094
ns3::RrcConnectionReconfigurationCompleteHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:5057
ns3::RrcAsn1Header::m_messageType
int m_messageType
Stores RRC message type, according to 3GPP TS 36.331.
Definition: lte-rrc-header.h:376
ns3::LteRrcSap::MeasObjectEutra::blackCellsToRemoveList
std::list< uint8_t > blackCellsToRemoveList
black cells to remove list
Definition: lte-rrc-sap.h:334
ns3::LteRrcSap::SpeedStatePars::SETUP
@ SETUP
Definition: lte-rrc-sap.h:510
ns3::LteRrcSap::CgiInfo::plmnIdentity
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:629
ns3::LteRrcSap::MeasConfig::measIdToAddModList
std::list< MeasIdToAddMod > measIdToAddModList
measure ID to add mod list
Definition: lte-rrc-sap.h:525
ns3::LteRrcSap::SCellToAddMod::radioResourceConfigCommonSCell
RadioResourceConfigCommonSCell radioResourceConfigCommonSCell
radio resource config common SCell
Definition: lte-rrc-sap.h:823
MAX_SI_MESSAGE
#define MAX_SI_MESSAGE
Definition: lte-rrc-header.cc:33
ns3::LteRrcSap::MeasGapConfig::type
enum ns3::LteRrcSap::MeasGapConfig::action type
action type
ns3::RrcAsn1Header::GetMessageType
int GetMessageType()
Get message type.
Definition: lte-rrc-header.cc:71
ns3::LteRrcSap::UlConfiguration::ulPowerControlCommonSCell
UlPowerControlCommonSCell ulPowerControlCommonSCell
3GPP TS 36.331 v.11.10 R11 pag.223
Definition: lte-rrc-sap.h:756
ns3::LteRrcSap::RrcConnectionReconfiguration::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:838
ns3::HandoverPreparationInfoHeader::HandoverPreparationInfoHeader
HandoverPreparationInfoHeader()
Definition: lte-rrc-header.cc:5720
ns3::RrcConnectionRequestHeader::GetMessage
LteRrcSap::RrcConnectionRequest GetMessage() const
Returns a RrcConnectionRequest IE from the values in the class attributes.
Definition: lte-rrc-header.cc:4687
ns3::Asn1Header::m_isDataSerialized
bool m_isDataSerialized
true if data is serialized
Definition: lte-asn1-header.h:70
ns3::RrcConnectionReconfigurationHeader::GetMeasConfig
LteRrcSap::MeasConfig GetMeasConfig()
Getter for m_measConfig.
Definition: lte-rrc-header.cc:5646
ns3::LteRrcSap::ReportConfigEutra::reportQuantity
enum ns3::LteRrcSap::ReportConfigEutra::@4 reportQuantity
Report type enumeration.
ns3::LteRrcSap::UlConfiguration::ulFreqInfo
FreqInfo ulFreqInfo
UL frequency info.
Definition: lte-rrc-sap.h:755
ns3::LteRrcSap::ReportConfigEutra::MS480
@ MS480
Definition: lte-rrc-sap.h:425
ns3::RrcConnectionSetupHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionSetup msg)
Receives a RrcConnectionSetup IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:4828
ns3::RrcUlCcchMessage::SerializeUlCcchMessage
void SerializeUlCcchMessage(int msgType) const
Serialize UL CCCH message function.
Definition: lte-rrc-header.cc:6989
ns3::LteRrcSap::LogicalChannelConfig::priority
uint8_t priority
priority
Definition: lte-rrc-sap.h:110
ns3::LteRrcSap::RlcConfig::UM_UNI_DIRECTIONAL_DL
@ UM_UNI_DIRECTIONAL_DL
Definition: lte-rrc-sap.h:103
ns3::RrcAsn1Header::BandwidthToEnum
int BandwidthToEnum(uint16_t bandwidth) const
Convert from bandwidth (in RBs) to ENUMERATED value.
Definition: lte-rrc-header.cc:77
ns3::RrcAsn1Header::DeserializeRadioResourceConfigDedicatedSCell
Buffer::Iterator DeserializeRadioResourceConfigDedicatedSCell(LteRrcSap::RadioResourceConfigDedicatedSCell *rrcdsc, Buffer::Iterator bIterator)
Deserialize radio resource config dedicated SCell function.
Definition: lte-rrc-header.cc:2721
ns3::LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY
@ SAME_AS_TRIGGER_QUANTITY
Definition: lte-rrc-sap.h:413
ns3::LteRrcSap::ReestabUeIdentity
ReestabUeIdentity structure.
Definition: lte-rrc-sap.h:573
ns3::RrcConnectionRequestHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:4588
ns3::LteRrcSap::RaSupervisionInfo::preambleTransMax
uint8_t preambleTransMax
preamble transmit maximum
Definition: lte-rrc-sap.h:253
ns3::RrcConnectionSetupHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:4718
ns3::LteRrcSap::NonUlConfiguration::dlBandwidth
uint16_t dlBandwidth
1: Cell characteristics
Definition: lte-rrc-sap.h:741
ns3::HandoverPreparationInfoHeader::GetMessage
LteRrcSap::HandoverPreparationInfo GetMessage() const
Returns a HandoverPreparationInfo IE from the values in the class attributes.
Definition: lte-rrc-header.cc:5936
ns3::RrcConnectionReleaseHeader::RrcConnectionReleaseHeader
RrcConnectionReleaseHeader()
Definition: lte-rrc-header.cc:6433
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition: fatal-error.h:165
ns3::RrcConnectionSetupCompleteHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionSetupCompleted msg)
Receives a RrcConnectionSetupCompleted IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:4972
ns3::LteRrcSap::ReportConfigEutra::eventId
enum ns3::LteRrcSap::ReportConfigEutra::@2 eventId
Event enumeration.
ns3::RrcAsn1Header::SerializeDrbToAddModList
void SerializeDrbToAddModList(std::list< LteRrcSap::DrbToAddMod > drbToAddModList) const
Serialize DRB to add mod list function.
Definition: lte-rrc-header.cc:113
ns3::Asn1Header::DeserializeBoolean
Buffer::Iterator DeserializeBoolean(bool *value, Buffer::Iterator bIterator)
Deserialize a boolean.
Definition: lte-asn1-header.cc:533
ns3::LteRrcSap::MeasResultEutra::physCellId
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:638
ns3::Asn1Header::SerializeSequence
void SerializeSequence(std::bitset< N > optionalOrDefaultMask, bool isExtensionMarkerPresent) const
Serialize a sequence.
Definition: lte-asn1-header.cc:228
ns3::LteRrcSap::RadioResourceConfigCommonSCell::haveUlConfiguration
bool haveUlConfiguration
have UL configuration
Definition: lte-rrc-sap.h:808
ns3::LteRrcSap::SpeedStatePars::RESET
@ RESET
Definition: lte-rrc-sap.h:511
ns3::RrcAsn1Header::DeserializeDrbToAddModList
Buffer::Iterator DeserializeDrbToAddModList(std::list< LteRrcSap::DrbToAddMod > *drbToAddModLis, Buffer::Iterator bIterator)
Deserialize DRB to add mod list function.
Definition: lte-rrc-header.cc:2237
ns3::LteRrcSap::ReportConfigEutra::EVENT_A2
@ EVENT_A2
Event A2: Serving becomes worse than absolute threshold.
Definition: lte-rrc-sap.h:374
ns3::LteRrcSap::RrcConnectionReject::waitTime
uint8_t waitTime
wait time
Definition: lte-rrc-sap.h:891
ns3::LteRrcSap::SoundingRsUlConfigDedicated::SETUP
@ SETUP
Definition: lte-rrc-sap.h:134
MAX_MEAS_ID
#define MAX_MEAS_ID
Definition: lte-rrc-header.cc:38
ns3::RrcConnectionReconfigurationHeader::GetMessage
LteRrcSap::RrcConnectionReconfiguration GetMessage() const
Returns a RrcConnectionReconfiguration IE from the values in the class attributes.
Definition: lte-rrc-header.cc:5616
ns3::LteRrcSap::AntennaInfoCommon::antennaPortsCount
uint16_t antennaPortsCount
antenna ports count
Definition: lte-rrc-sap.h:721
ns3::RrcConnectionReconfigurationHeader::GetRrcTransactionIdentifier
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
Definition: lte-rrc-header.cc:5634
ns3::LteRrcSap::AsConfig
AsConfig structure.
Definition: lte-rrc-sap.h:616
ns3::LteRrcSap::MeasConfig::reportConfigToAddModList
std::list< ReportConfigToAddMod > reportConfigToAddModList
report config to add mod list
Definition: lte-rrc-sap.h:523
ns3::RrcDlCcchMessage::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:7015
MAX_SIB
#define MAX_SIB
Definition: lte-rrc-header.cc:34
ns3::LteRrcSap::MobilityStateParameters::tHystNormal
uint8_t tHystNormal
hyst normal
Definition: lte-rrc-sap.h:491
ns3::RrcConnectionRequestHeader::GetMmec
std::bitset< 8 > GetMmec() const
Get MMEC attribute.
Definition: lte-rrc-header.cc:4696
ns3::RrcAsn1Header::DeserializeSystemInformationBlockType2
Buffer::Iterator DeserializeSystemInformationBlockType2(LteRrcSap::SystemInformationBlockType2 *systemInformationBlockType2, Buffer::Iterator bIterator)
Deserialize system information block type 2 function.
Definition: lte-rrc-header.cc:3077
ns3::LteRrcSap::ReportConfigEutra::MIN60
@ MIN60
Definition: lte-rrc-sap.h:435
ns3::LteRrcSap::RachConfigCommon::preambleInfo
PreambleInfo preambleInfo
preamble info
Definition: lte-rrc-sap.h:266
ns3::RrcConnectionRequestHeader::m_mTmsi
std::bitset< 32 > m_mTmsi
TMSI.
Definition: lte-rrc-header.h:549
ns3::Asn1Header::DeserializeInteger
Buffer::Iterator DeserializeInteger(int *n, int nmin, int nmax, Buffer::Iterator bIterator)
Deserialize an integer.
Definition: lte-asn1-header.cc:541
ns3::LteRrcSap::ReportConfigEutra::triggerQuantity
enum ns3::LteRrcSap::ReportConfigEutra::@3 triggerQuantity
Trigger type enumeration.
ns3::LteRrcSap::TxFailParam::connEstFailCount
uint8_t connEstFailCount
Number of times that the UE detects T300 expiry on the same cell.
Definition: lte-rrc-sap.h:260
ns3::LteRrcSap::HandoverPreparationInfo::asConfig
AsConfig asConfig
AS config.
Definition: lte-rrc-sap.h:897
ns3::LteRrcSap::RadioResourceConfigCommon
RadioResourceConfigCommon structure.
Definition: lte-rrc-sap.h:273
ns3::RrcConnectionReconfigurationHeader::m_haveMobilityControlInfo
bool m_haveMobilityControlInfo
have mobility control info?
Definition: lte-rrc-header.h:826
ns3::LteRrcSap::PhysCellIdRange::start
uint16_t start
starting cell ID
Definition: lte-rrc-sap.h:312
ns3::LteRrcSap::PhysicalConfigDedicated::pdschConfigDedicated
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
Definition: lte-rrc-sap.h:223
ns3::MeasurementReportHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6675
ns3::LteRrcSap::MeasConfig::haveQuantityConfig
bool haveQuantityConfig
have quantity config?
Definition: lte-rrc-sap.h:526
ns3::LteRrcSap::SystemInformationBlockType1::cellAccessRelatedInfo
CellAccessRelatedInfo cellAccessRelatedInfo
cell access related info
Definition: lte-rrc-sap.h:596
ns3::LteRrcSap::MeasGapConfig::GP1
@ GP1
Definition: lte-rrc-sap.h:482
ns3::LteRrcSap::RrcConnectionRequest
RrcConnectionRequest structure.
Definition: lte-rrc-sap.h:693
ns3::LteRrcSap::MeasObjectToAddMod
MeasObjectToAddMod structure.
Definition: lte-rrc-sap.h:451
ns3::LteRrcSap::RrcConnectionReestablishmentReject
RrcConnectionReestablishmentReject structure.
Definition: lte-rrc-sap.h:879
ns3::RrcConnectionReconfigurationCompleteHeader::GetMessage
LteRrcSap::RrcConnectionReconfigurationCompleted GetMessage() const
Returns a RrcConnectionReconfigurationCompleted IE from the values in the class attributes.
Definition: lte-rrc-header.cc:5070
ns3::RrcUlDcchMessage::SerializeUlDcchMessage
void SerializeUlDcchMessage(int msgType) const
Serialize UL DCCH message function.
Definition: lte-rrc-header.cc:6867
ns3::LteRrcSap::ReportConfigToAddMod::reportConfigId
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:459
ns3::RrcConnectionSetupHeader::GetMessage
LteRrcSap::RrcConnectionSetup GetMessage() const
Returns a RrcConnectionSetup IE from the values in the class attributes.
Definition: lte-rrc-header.cc:4836
ns3::LteRrcSap::SpeedStatePars::type
enum ns3::LteRrcSap::SpeedStatePars::action type
action type
ns3::RrcConnectionRequestHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionRequest msg)
Receives a RrcConnectionRequest IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:4679
ns3::RrcAsn1Header::DeserializeRadioResourceConfigDedicated
Buffer::Iterator DeserializeRadioResourceConfigDedicated(LteRrcSap::RadioResourceConfigDedicated *radioResourceConfigDedicated, Buffer::Iterator bIterator)
Deserialize radio resource config dedicated function.
Definition: lte-rrc-header.cc:2131
MAX_REPORT_CONFIG_ID
#define MAX_REPORT_CONFIG_ID
Definition: lte-rrc-header.cc:36
ns3::LteRrcSap::SoundingRsUlConfigDedicated::srsConfigIndex
uint16_t srsConfigIndex
SRS config index.
Definition: lte-rrc-sap.h:137
ns3::RrcConnectionRequestHeader::GetMtmsi
std::bitset< 32 > GetMtmsi() const
Get M-TMSI attribute.
Definition: lte-rrc-header.cc:4702
ns3::RrcConnectionReestablishmentRejectHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6414
ns3::LteRrcSap::ReportConfigEutra::maxReportCells
uint8_t maxReportCells
Maximum number of cells, excluding the serving cell, to be included in the measurement report.
Definition: lte-rrc-sap.h:418
ns3::LteRrcSap::PhysicalConfigDedicated::haveAntennaInfoDedicated
bool haveAntennaInfoDedicated
have antenna info dedicated?
Definition: lte-rrc-sap.h:220
ns3::LteRrcSap::ReestablishmentCause
ReestablishmentCause
ReestablishmentCause enumeration.
Definition: lte-rrc-sap.h:580
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::soundingRsUlConfigDedicated
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
Definition: lte-rrc-sap.h:800
ns3::LteRrcSap::ThresholdEutra::THRESHOLD_RSRP
@ THRESHOLD_RSRP
RSRP is used for the threshold.
Definition: lte-rrc-sap.h:354
ns3::RrcConnectionRejectHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReject msg)
Receives a RrcConnectionReject IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6652
ns3::LteRrcSap::PlmnIdentityInfo::plmnIdentity
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:68
ns3::LteRrcSap::RachConfigDedicated::raPrachMaskIndex
uint8_t raPrachMaskIndex
RA PRACH mask index.
Definition: lte-rrc-sap.h:554
ns3::Asn1Header::SerializeInteger
void SerializeInteger(int n, int nmin, int nmax) const
Serialize an Integer.
Definition: lte-asn1-header.cc:322
ns3::RrcConnectionReestablishmentCompleteHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6255
ns3::LteRrcSap::DrbToAddMod::logicalChannelIdentity
uint8_t logicalChannelIdentity
logical channel identify
Definition: lte-rrc-sap.h:240
ns3::LteRrcSap::SoundingRsUlConfigDedicated::srsBandwidth
uint16_t srsBandwidth
SRS bandwidth.
Definition: lte-rrc-sap.h:136
ns3::LteRrcSap::SystemInformationBlockType2
SystemInformationBlockType2 structure.
Definition: lte-rrc-sap.h:602
ns3::Asn1Header::m_serializationResult
Buffer m_serializationResult
serialization result
Definition: lte-asn1-header.h:71
ns3::LteRrcSap::MeasConfig::haveMeasGapConfig
bool haveMeasGapConfig
have measure gap config?
Definition: lte-rrc-sap.h:528
ns3::LteRrcSap::RlcConfig::choice
enum ns3::LteRrcSap::RlcConfig::direction choice
direction choice
ns3::LteRrcSap::ReportConfigEutra::BOTH
@ BOTH
Both the RSRP and RSRQ quantities are to be included in the measurement report.
Definition: lte-rrc-sap.h:414
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveAntennaInfoDedicated
bool haveAntennaInfoDedicated
have antenna info dedicated?
Definition: lte-rrc-sap.h:787
ns3::RrcAsn1Header::SerializeSystemInformationBlockType1
void SerializeSystemInformationBlockType1(LteRrcSap::SystemInformationBlockType1 systemInformationBlockType1) const
Serialize system information block type 1 function.
Definition: lte-rrc-header.cc:449
ns3::LteRrcSap::BlackCellsToAddMod::cellIndex
uint8_t cellIndex
cell index
Definition: lte-rrc-sap.h:320
ns3::LteRrcSap::RECONFIGURATION_FAILURE
@ RECONFIGURATION_FAILURE
Definition: lte-rrc-sap.h:581
ns3::LteRrcSap::ReportConfigEutra::MS5120
@ MS5120
Definition: lte-rrc-sap.h:429
ns3::RrcConnectionSetupCompleteHeader::RrcConnectionSetupCompleteHeader
RrcConnectionSetupCompleteHeader()
Definition: lte-rrc-header.cc:4888
ns3::RrcConnectionRejectHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6646
ns3::LteRrcSap::MeasObjectEutra::carrierFreq
uint32_t carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:327
ns3::LteRrcSap::ReportConfigEutra::RSRQ
@ RSRQ
Reference Signal Received Quality.
Definition: lte-rrc-sap.h:407
ns3::LteRrcSap::RachConfigDedicated::raPreambleIndex
uint8_t raPreambleIndex
RA preamble index.
Definition: lte-rrc-sap.h:553
ns3::Buffer
automatically resized byte buffer
Definition: buffer.h:93
ns3::RrcConnectionReestablishmentCompleteHeader::GetRrcTransactionIdentifier
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier attribute.
Definition: lte-rrc-header.cc:6341
ns3::Asn1Header::DeserializeSequenceOf
Buffer::Iterator DeserializeSequenceOf(int *numElems, int nMax, int nMin, Buffer::Iterator bIterator)
Deserialize a Sequence.
Definition: lte-asn1-header.cc:762
ns3::LteRrcSap::ReportConfigEutra::REPORT_CGI
@ REPORT_CGI
Definition: lte-rrc-sap.h:400
ns3::Asn1Header::FinalizeSerialization
void FinalizeSerialization() const
Finalizes an in progress serialization.
Definition: lte-asn1-header.cc:424
ns3::RrcConnectionReconfigurationHeader::m_haveNonCriticalExtension
bool m_haveNonCriticalExtension
Have critical extension.
Definition: lte-rrc-header.h:830
ns3::RrcAsn1Header::SerializePlmnIdentity
void SerializePlmnIdentity(uint32_t plmnId) const
Serialize PLMN identity function.
Definition: lte-rrc-header.cc:768
ns3::RrcConnectionRequestHeader::m_mmec
std::bitset< 8 > m_mmec
MMEC.
Definition: lte-rrc-header.h:548
ns3::LteRrcSap::RadioResourceConfigCommon::rachConfigCommon
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:274
ns3::LteRrcSap::MeasGapConfig::RESET
@ RESET
Definition: lte-rrc-sap.h:477
ns3::LteRrcSap::CellsToAddMod::cellIndividualOffset
int8_t cellIndividualOffset
cell individual offset
Definition: lte-rrc-sap.h:306
ns3::MeasurementReportHeader::m_measurementReport
LteRrcSap::MeasurementReport m_measurementReport
measurement report
Definition: lte-rrc-header.h:1107
ns3::LteRrcSap::ReportConfigEutra::reportOnLeave
bool reportOnLeave
Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving c...
Definition: lte-rrc-sap.h:385
ns3::LteRrcSap::ReportConfigEutra::MS240
@ MS240
Definition: lte-rrc-sap.h:424
ns3::LteRrcSap::UlConfiguration::prachConfigSCell
PrachConfigSCell prachConfigSCell
PRACH config SCell.
Definition: lte-rrc-sap.h:758
ns3::Asn1Header::DeserializeNull
Buffer::Iterator DeserializeNull(Buffer::Iterator bIterator)
Deserialize nothing (null op)
Definition: lte-asn1-header.cc:757
ns3::Header
Protocol header serialization and deserialization.
Definition: header.h:43
ns3::LteRrcSap::MeasResultEutra::haveRsrpResult
bool haveRsrpResult
have RSRP result
Definition: lte-rrc-sap.h:641
ns3::LteRrcSap::MeasConfig::measGapConfig
MeasGapConfig measGapConfig
measure gap config
Definition: lte-rrc-sap.h:529
ns3::RrcConnectionReestablishmentRequestHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReestablishmentRequest msg)
Receives a RrcConnectionReestablishmentRequest IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6087
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveUlConfiguration
bool haveUlConfiguration
have UL configuration?
Definition: lte-rrc-sap.h:794
ns3::LteRrcSap::MeasResultScell::haveRsrqResult
bool haveRsrqResult
have RSRQ result?
Definition: lte-rrc-sap.h:653
ns3::LteRrcSap::PhysicalConfigDedicatedSCell
PhysicalConfigDedicatedSCell structure.
Definition: lte-rrc-sap.h:784
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveAntennaInfoUlDedicated
bool haveAntennaInfoUlDedicated
have antenna info UL dedicated?
Definition: lte-rrc-sap.h:795
ns3::LteRrcSap::RrcConnectionReconfiguration::nonCriticalExtension
NonCriticalExtensionConfiguration nonCriticalExtension
3GPP TS 36.331 v.11.10 R11 Sec. 6.2.2 pag. 147 (also known as ETSI TS 136 331 v.11....
Definition: lte-rrc-sap.h:847
ns3::LteRrcSap::RrcConnectionReconfiguration::haveNonCriticalExtension
bool haveNonCriticalExtension
have critical extension?
Definition: lte-rrc-sap.h:845
ns3::LteRrcSap::RrcConnectionRequest::ueIdentity
uint64_t ueIdentity
UE identity.
Definition: lte-rrc-sap.h:694
ns3::LteRrcSap::CarrierFreqEutra::dlCarrierFreq
uint32_t dlCarrierFreq
DL carrier frequency.
Definition: lte-rrc-sap.h:539
ns3::LteRrcSap::RrcConnectionReestablishment
RrcConnectionReestablishment structure.
Definition: lte-rrc-sap.h:866
ns3::RrcDlDcchMessage::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6893
ns3::RrcAsn1Header::DeserializeMeasResults
Buffer::Iterator DeserializeMeasResults(LteRrcSap::MeasResults *measResults, Buffer::Iterator bIterator)
Deserialize measure results function.
Definition: lte-rrc-header.cc:3539
ns3::RrcConnectionReestablishmentRequestHeader::GetMessage
LteRrcSap::RrcConnectionReestablishmentRequest GetMessage() const
Returns a RrcConnectionReestablishmentRequest IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6095
ns3::RrcAsn1Header::SerializeLogicalChannelConfig
void SerializeLogicalChannelConfig(LteRrcSap::LogicalChannelConfig logicalChannelConfig) const
Serialize logicala channel config function.
Definition: lte-rrc-header.cc:230
ns3::LteRrcSap::ReportConfigEutra::MIN30
@ MIN30
Definition: lte-rrc-sap.h:434
ns3::RrcAsn1Header::SerializeMeasConfig
void SerializeMeasConfig(LteRrcSap::MeasConfig measConfig) const
Serialize measure config function.
Definition: lte-rrc-header.cc:1071
ns3::RrcConnectionReconfigurationHeader::GetHaveNonCriticalExtensionConfig
bool GetHaveNonCriticalExtensionConfig()
Getter for m_haveNonCriticalExtension.
Definition: lte-rrc-header.cc:5676
MAX_CELL_MEAS
#define MAX_CELL_MEAS
Definition: lte-rrc-header.cc:39
ns3::LteRrcSap::RrcConnectionReconfiguration::haveMeasConfig
bool haveMeasConfig
have measure config
Definition: lte-rrc-sap.h:839
ns3::LteRrcSap::RrcConnectionReestablishmentRequest
RrcConnectionReestablishmentRequest structure.
Definition: lte-rrc-sap.h:859
ns3::RrcConnectionReestablishmentRequestHeader::m_ueIdentity
LteRrcSap::ReestabUeIdentity m_ueIdentity
UE identity.
Definition: lte-rrc-header.h:908
ns3::RrcAsn1Header::DeserializeMeasConfig
Buffer::Iterator DeserializeMeasConfig(LteRrcSap::MeasConfig *measConfig, Buffer::Iterator bIterator)
Deserialize measure config function.
Definition: lte-rrc-header.cc:3747
ns3::RrcConnectionReestablishmentHeader::m_rrcTransactionIdentifier
uint8_t m_rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-header.h:951
ns3::LteRrcSap::MobilityControlInfo::rachConfigDedicated
RachConfigDedicated rachConfigDedicated
RACH config dedicated.
Definition: lte-rrc-sap.h:568
ns3::LteRrcSap::DrbToAddMod::drbIdentity
uint8_t drbIdentity
DRB identity.
Definition: lte-rrc-sap.h:238
ns3::RrcUlCcchMessage
This class only serves to discriminate which message type has been received in uplink (ue to eNb) for...
Definition: lte-rrc-header.h:447
ns3::LteRrcSap::MeasResults::measResultListEutra
std::list< MeasResultEutra > measResultListEutra
measure result list eutra
Definition: lte-rrc-sap.h:684
ns3::HandoverPreparationInfoHeader::m_asConfig
LteRrcSap::AsConfig m_asConfig
AS config.
Definition: lte-rrc-header.h:866
MAX_OBJECT_ID
#define MAX_OBJECT_ID
Definition: lte-rrc-header.cc:37
ns3::LteRrcSap::SCellToAddMod
SCellToAddMod structure.
Definition: lte-rrc-sap.h:820
ns3::RrcConnectionRequestHeader::~RrcConnectionRequestHeader
~RrcConnectionRequestHeader()
Definition: lte-rrc-header.cc:4573
ns3::LteRrcSap::PdschConfigCommon::referenceSignalPower
int8_t referenceSignalPower
INTEGER (-60..50),.
Definition: lte-rrc-sap.h:149
ns3::Asn1Header::SerializeBitstring
void SerializeBitstring(std::bitset< N > bitstring) const
Serialize a bitstring.
Definition: lte-asn1-header.cc:173
ns3::RrcAsn1Header::DeserializeThresholdEutra
Buffer::Iterator DeserializeThresholdEutra(LteRrcSap::ThresholdEutra *thresholdEutra, Buffer::Iterator bIterator)
Deserialize threshold eutra function.
Definition: lte-rrc-header.cc:2004
MAX_EARFCN
#define MAX_EARFCN
Definition: lte-rrc-header.cc:31
ns3::RrcConnectionReconfigurationHeader::RrcConnectionReconfigurationHeader
RrcConnectionReconfigurationHeader()
Definition: lte-rrc-header.cc:5085
ns3::RrcDlDcchMessage::RrcDlDcchMessage
RrcDlDcchMessage()
Definition: lte-rrc-header.cc:6877
ns3::RrcAsn1Header::DeserializePhysicalConfigDedicated
Buffer::Iterator DeserializePhysicalConfigDedicated(LteRrcSap::PhysicalConfigDedicated *physicalConfigDedicated, Buffer::Iterator bIterator)
Deserialize physical config dedicated function.
Definition: lte-rrc-header.cc:2436
ns3::Asn1Header::DeserializeBitstring
Buffer::Iterator DeserializeBitstring(std::bitset< N > *bitstring, Buffer::Iterator bIterator)
Deserialize a bitstring.
Definition: lte-asn1-header.cc:488
ns3::LteRrcSap::RadioResourceConfigDedicatedSCell
RadioResourceConfigDedicatedSCell structure.
Definition: lte-rrc-sap.h:814
ns3::LteRrcSap::MeasurementReport
MeasurementReport structure.
Definition: lte-rrc-sap.h:902
ns3::RrcAsn1Header::DeserializeRadioResourceConfigCommonSib
Buffer::Iterator DeserializeRadioResourceConfigCommonSib(LteRrcSap::RadioResourceConfigCommonSib *radioResourceConfigCommonSib, Buffer::Iterator bIterator)
Deserialize radio resource config common SIB function.
Definition: lte-rrc-header.cc:3430
ns3::LteRrcSap::MeasResultServFreqList::haveMeasurementResultsNeighCell
bool haveMeasurementResultsNeighCell
always false since not implemented
Definition: lte-rrc-sap.h:673
ns3::LteRrcSap::RrcConnectionReconfiguration::haveMobilityControlInfo
bool haveMobilityControlInfo
have mobility control info
Definition: lte-rrc-sap.h:841
ns3::LteRrcSap::CarrierBandwidthEutra::ulBandwidth
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:547
ns3::Header::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the object from a buffer iterator.
ns3::RrcAsn1Header::SerializeSystemInformationBlockType2
void SerializeSystemInformationBlockType2(LteRrcSap::SystemInformationBlockType2 systemInformationBlockType2) const
Serialize system information block type 2 function.
Definition: lte-rrc-header.cc:618
ns3::RrcConnectionSetupCompleteHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:4966
ns3::RrcConnectionReestablishmentCompleteHeader::m_rrcTransactionIdentifier
uint8_t m_rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-header.h:987
ns3::MeasurementReportHeader::MeasurementReportHeader
MeasurementReportHeader()
Definition: lte-rrc-header.cc:6666
ns3::LteRrcSap::ReportConfigEutra::PERIODICAL
@ PERIODICAL
periodical report
Definition: lte-rrc-sap.h:367
ns3::RrcUlDcchMessage::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6832
ns3::LteRrcSap::RadioResourceConfigCommonSCell::nonUlConfiguration
NonUlConfiguration nonUlConfiguration
non UL configuration
Definition: lte-rrc-sap.h:807
ns3::RrcConnectionRequestHeader::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-rrc-header.cc:4578
ns3::LteRrcSap::RrcConnectionReconfigurationCompleted::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:853
ns3::LteRrcSap::MeasResultServFreqList::measResultScell
std::list< MeasResultScell > measResultScell
measure results Scells
Definition: lte-rrc-sap.h:672
ns3::RrcConnectionReconfigurationHeader::HavePhysicalConfigDedicated
bool HavePhysicalConfigDedicated() const
Gets m_radioResourceConfigDedicated.havePhysicalConfigDedicated.
Definition: lte-rrc-header.cc:5688
ns3::LteRrcSap::MeasConfig::haveSpeedStatePars
bool haveSpeedStatePars
have speed state parameters?
Definition: lte-rrc-sap.h:532
ns3::LteRrcSap::MeasResults
MeasResults structure.
Definition: lte-rrc-sap.h:679
ns3::LteRrcSap::RadioResourceConfigDedicatedSCell::physicalConfigDedicatedSCell
PhysicalConfigDedicatedSCell physicalConfigDedicatedSCell
physical config dedicated SCell
Definition: lte-rrc-sap.h:815
ns3::LteRrcSap::RadioResourceConfigCommonSCell
RadioResourceConfigCommonSCell.
Definition: lte-rrc-sap.h:805
ns3::LteRrcSap::ReportConfigEutra::EVENT_A4
@ EVENT_A4
Event A4: Neighbour becomes better than absolute threshold.
Definition: lte-rrc-sap.h:376
ns3::LteRrcSap::ReportConfigEutra::reportAmount
uint8_t reportAmount
Number of measurement reports applicable, always assumed to be infinite.
Definition: lte-rrc-sap.h:442
ns3::RrcConnectionSetupHeader::m_rrcTransactionIdentifier
uint8_t m_rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-header.h:628
MAX_DRB
#define MAX_DRB
Definition: lte-rrc-header.cc:30
ns3::RrcConnectionReestablishmentHeader::RrcConnectionReestablishmentHeader
RrcConnectionReestablishmentHeader()
Definition: lte-rrc-header.cc:6118
ns3::LteRrcSap::MeasConfig::measObjectToAddModList
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list
Definition: lte-rrc-sap.h:521
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition: buffer.h:99
ns3::RrcConnectionRejectHeader::RrcConnectionRejectHeader
RrcConnectionRejectHeader()
Definition: lte-rrc-header.cc:6558
ns3::RrcConnectionReconfigurationHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReconfiguration msg)
Receives a RrcConnectionReconfiguration IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:5600
ns3::LteRrcSap::RadioResourceConfigDedicated::srbToAddModList
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list.
Definition: lte-rrc-sap.h:287
ns3::RrcConnectionReconfigurationCompleteHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Receives a RrcConnectionReconfigurationCompleted IE and stores the contents into the class attributes...
Definition: lte-rrc-header.cc:5063
ns3::LteRrcSap::ReportConfigEutra::a3Offset
int8_t a3Offset
Offset value for Event A3. An integer between -30 and 30. The actual value is (value * 0....
Definition: lte-rrc-sap.h:388
ns3::RrcConnectionReconfigurationCompleteHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:5003
ns3::LteRrcSap::SoundingRsUlConfigDedicated::type
enum ns3::LteRrcSap::SoundingRsUlConfigDedicated::action type
action type
ns3::LteRrcSap::SystemInformationBlockType2::freqInfo
FreqInfo freqInfo
frequency info
Definition: lte-rrc-sap.h:604
ns3::LteRrcSap::ReportConfigEutra::EVENT
@ EVENT
event report
Definition: lte-rrc-sap.h:366
ns3::LteRrcSap::SpeedStateScaleFactors::sfHigh
uint8_t sfHigh
scale factor high
Definition: lte-rrc-sap.h:501
ns3::LteRrcSap::UlPowerControlCommonSCell::alpha
uint16_t alpha
alpha value
Definition: lte-rrc-sap.h:727
ns3::LteRrcSap::MeasObjectEutra::cellsToRemoveList
std::list< uint8_t > cellsToRemoveList
cells to remove list
Definition: lte-rrc-sap.h:332
ns3::LteRrcSap::MeasResults::haveMeasResultNeighCells
bool haveMeasResultNeighCells
have measure result neighbor cells
Definition: lte-rrc-sap.h:683
ns3::LteRrcSap::MeasConfig::haveSmeasure
bool haveSmeasure
have S measure?
Definition: lte-rrc-sap.h:530
ns3::LteRrcSap::PdschConfigCommon::pb
int8_t pb
INTEGER (0..3),.
Definition: lte-rrc-sap.h:150
ns3::RrcConnectionReconfigurationHeader::GetPhysicalConfigDedicated
LteRrcSap::PhysicalConfigDedicated GetPhysicalConfigDedicated() const
Gets m_radioResourceConfigDedicated.physicalConfigDedicated.
Definition: lte-rrc-header.cc:5712
ns3::LteRrcSap::MobilityControlInfo::carrierFreq
CarrierFreqEutra carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:562
ns3::LteRrcSap::RrcConnectionRelease::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:885
ns3::LteRrcSap::MeasConfig::reportConfigToRemoveList
std::list< uint8_t > reportConfigToRemoveList
report config to remove list
Definition: lte-rrc-sap.h:522
ns3::LteRrcSap::MeasResultEutra::rsrpResult
uint8_t rsrpResult
RSRP result.
Definition: lte-rrc-sap.h:642
ns3::LteRrcSap::MeasResultScell::rsrqResult
uint8_t rsrqResult
the RSRQ result
Definition: lte-rrc-sap.h:654
ns3::LteRrcSap::RadioResourceConfigCommonSib
RadioResourceConfigCommonSib structure.
Definition: lte-rrc-sap.h:279
ns3::RrcDlCcchMessage::~RrcDlCcchMessage
~RrcDlCcchMessage()
Definition: lte-rrc-header.cc:7003
ns3::LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL
@ UM_BI_DIRECTIONAL
Definition: lte-rrc-sap.h:101
ns3::LteRrcSap::RrcConnectionReestablishmentComplete::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:874
ns3::LteRrcSap::SystemInformationBlockType1
SystemInformationBlockType1 structure.
Definition: lte-rrc-sap.h:595
ns3::RrcConnectionRejectHeader::~RrcConnectionRejectHeader
~RrcConnectionRejectHeader()
Definition: lte-rrc-header.cc:6562
ns3::LteRrcSap::ReportConfigEutra::MIN1
@ MIN1
Definition: lte-rrc-sap.h:431
ns3::RrcAsn1Header::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-rrc-header.cc:55
ns3::RrcConnectionRejectHeader::m_rrcConnectionReject
LteRrcSap::RrcConnectionReject m_rrcConnectionReject
RRC connection reject.
Definition: lte-rrc-header.h:1077
ns3::LteRrcSap::AsConfig::sourceMasterInformationBlock
MasterInformationBlock sourceMasterInformationBlock
source master information block
Definition: lte-rrc-sap.h:620
ns3::LteRrcSap::OTHER_FAILURE
@ OTHER_FAILURE
Definition: lte-rrc-sap.h:583
ns3::RrcUlDcchMessage::RrcUlDcchMessage
RrcUlDcchMessage()
Definition: lte-rrc-header.cc:6816
ns3::RrcAsn1Header::SerializeRadioResourceDedicatedSCell
void SerializeRadioResourceDedicatedSCell(LteRrcSap::RadioResourceConfigDedicatedSCell rrcdsc) const
Serialize radio resource dedicated SCell function.
Definition: lte-rrc-header.cc:1856
ns3::LteRrcSap::MeasObjectEutra::allowedMeasBandwidth
uint16_t allowedMeasBandwidth
allowed measure bandwidth
Definition: lte-rrc-sap.h:328
ns3::RrcConnectionReconfigurationHeader::GetNonCriticalExtensionConfig
LteRrcSap::NonCriticalExtensionConfiguration GetNonCriticalExtensionConfig()
Getter for m_nonCriticalExtension.
Definition: lte-rrc-header.cc:5682
ns3::Asn1Header::DeserializeSequence
Buffer::Iterator DeserializeSequence(std::bitset< N > *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator)
Deserialize a sequence.
Definition: lte-asn1-header.cc:691
ns3::LteRrcSap::CgiInfo::plmnIdentityList
std::list< uint32_t > plmnIdentityList
PLMN identity list.
Definition: lte-rrc-sap.h:632
ns3::LteRrcSap::SpeedStatePars::mobilityStateParameters
MobilityStateParameters mobilityStateParameters
mobility state parameters
Definition: lte-rrc-sap.h:513
ns3::LteRrcSap::ReportConfigEutra::MS120
@ MS120
Definition: lte-rrc-sap.h:423
ns3::RrcConnectionReconfigurationHeader::GetSrbToAddModList
std::list< LteRrcSap::SrbToAddMod > GetSrbToAddModList() const
Gets m_radioResourceConfigDedicated.srbToAddModList.
Definition: lte-rrc-header.cc:5694
ns3::RrcConnectionReconfigurationHeader::m_radioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated m_radioResourceConfigDedicated
the radio resource config dedicated
Definition: lte-rrc-header.h:829
MAX_RAT_CAPABILITIES
#define MAX_RAT_CAPABILITIES
Definition: lte-rrc-header.cc:32
ns3::LteRrcSap::MeasResultEutra::haveRsrqResult
bool haveRsrqResult
have RSRQ result?
Definition: lte-rrc-sap.h:643
ns3::LteRrcSap::ReportConfigEutra::triggerType
enum ns3::LteRrcSap::ReportConfigEutra::@1 triggerType
Trigger enumeration.
ns3::LteRrcSap::ThresholdEutra
Threshold for event evaluation.
Definition: lte-rrc-sap.h:350
ns3::LteRrcSap::MeasResults::measId
uint8_t measId
measure ID
Definition: lte-rrc-sap.h:680
ns3::RrcConnectionSetupCompleteHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:4897
ns3::LteRrcSap::MeasResultServFreqList::haveMeasurementResultsServingSCells
bool haveMeasurementResultsServingSCells
have measure results serving Scells
Definition: lte-rrc-sap.h:671
ns3::LteRrcSap::BlackCellsToAddMod
BlackCellsToAddMod structure.
Definition: lte-rrc-sap.h:319
ns3::RrcConnectionReestablishmentRequestHeader::GetReestablishmentCause
LteRrcSap::ReestablishmentCause GetReestablishmentCause() const
Getter for m_reestablishmentCause.
Definition: lte-rrc-header.cc:6111
ns3::LteRrcSap::LogicalChannelConfig::logicalChannelGroup
uint8_t logicalChannelGroup
logical channel group
Definition: lte-rrc-sap.h:113
ns3::LteRrcSap::RrcConnectionReestablishmentRequest::ueIdentity
ReestabUeIdentity ueIdentity
UE identity.
Definition: lte-rrc-sap.h:860
ns3::LteRrcSap::SCellToAddMod::sCellIndex
uint32_t sCellIndex
SCell index.
Definition: lte-rrc-sap.h:821
ns3::RrcConnectionSetupHeader::GetDrbToReleaseList
std::list< uint8_t > GetDrbToReleaseList() const
Gets m_radioResourceConfigDedicated.drbToReleaseList.
Definition: lte-rrc-header.cc:4869
ns3::RrcDlDcchMessage::SerializeDlDcchMessage
void SerializeDlDcchMessage(int msgType) const
Serialize DL DCCH message function.
Definition: lte-rrc-header.cc:6928
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition: log-macros-enabled.h:244
ns3::LteRrcSap::RlcConfig::UM_UNI_DIRECTIONAL_UL
@ UM_UNI_DIRECTIONAL_UL
Definition: lte-rrc-sap.h:102
ns3::RrcDlDcchMessage::DeserializeDlDcchMessage
Buffer::Iterator DeserializeDlDcchMessage(Buffer::Iterator bIterator)
Deserialize DL DCCH message function.
Definition: lte-rrc-header.cc:6905
ns3::LteRrcSap::RadioResourceConfigDedicated::drbToReleaseList
std::list< uint8_t > drbToReleaseList
DRB to release list.
Definition: lte-rrc-sap.h:289
ns3::LteRrcSap::PhysicalConfigDedicated::soundingRsUlConfigDedicated
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
Definition: lte-rrc-sap.h:219
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::pdschConfigDedicated
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
Definition: lte-rrc-sap.h:791
ns3::LteRrcSap::ReportConfigEutra::EVENT_A5
@ EVENT_A5
Event A5: PCell becomes worse than absolute threshold1 AND Neighbour becomes better than another abso...
Definition: lte-rrc-sap.h:377
ns3::LteRrcSap::CellIdentification::physCellId
uint32_t physCellId
physical cell ID
Definition: lte-rrc-sap.h:714
ns3::LteRrcSap::CgiInfo::trackingAreaCode
uint16_t trackingAreaCode
tracking area code
Definition: lte-rrc-sap.h:631
ns3::LteRrcSap::ReportConfigEutra::REPORT_STRONGEST_CELLS
@ REPORT_STRONGEST_CELLS
Definition: lte-rrc-sap.h:399
ns3::RrcConnectionReconfigurationHeader::GetDrbToReleaseList
std::list< uint8_t > GetDrbToReleaseList() const
Gets m_radioResourceConfigDedicated.drbToReleaseList.
Definition: lte-rrc-header.cc:5706
ns3::LteRrcSap::RrcConnectionReconfiguration
RrcConnectionReconfiguration structure.
Definition: lte-rrc-sap.h:837
ns3::LteRrcSap::SystemInformationBlockType2::radioResourceConfigCommon
RadioResourceConfigCommonSib radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:603
ns3::LteRrcSap::RrcConnectionReestablishmentRequest::reestablishmentCause
ReestablishmentCause reestablishmentCause
reestablishment cause
Definition: lte-rrc-sap.h:861
ns3::LteRrcSap::MeasResults::measScellResultList
MeasResultServFreqList measScellResultList
measure SCell result list
Definition: lte-rrc-sap.h:686
ns3::LteRrcSap::RrcConnectionReconfiguration::mobilityControlInfo
MobilityControlInfo mobilityControlInfo
mobility control info
Definition: lte-rrc-sap.h:842
ns3::LteRrcSap::ReportConfigEutra::EVENT_A3
@ EVENT_A3
Event A3: Neighbour becomes amount of offset better than PCell.
Definition: lte-rrc-sap.h:375
ns3::LteRrcSap::SrbToAddMod
SrbToAddMod structure.
Definition: lte-rrc-sap.h:229
ns3::LteRrcSap::SCellToAddMod::cellIdentification
CellIdentification cellIdentification
cell identification
Definition: lte-rrc-sap.h:822
ns3::RrcConnectionReconfigurationHeader::m_rrcTransactionIdentifier
uint8_t m_rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-header.h:823
ns3::RrcDlCcchMessage::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:7021
ns3::LteRrcSap::PreambleInfo::numberOfRaPreambles
uint8_t numberOfRaPreambles
number of RA preambles
Definition: lte-rrc-sap.h:247
ns3::RrcConnectionReleaseHeader::~RrcConnectionReleaseHeader
~RrcConnectionReleaseHeader()
Definition: lte-rrc-header.cc:6437
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::havePdschConfigDedicated
bool havePdschConfigDedicated
have PDSCH config dedicated?
Definition: lte-rrc-sap.h:790
ns3::LteRrcSap::QuantityConfig::filterCoefficientRSRP
uint8_t filterCoefficientRSRP
filter coefficient RSRP
Definition: lte-rrc-sap.h:297
ns3::RrcConnectionReconfigurationCompleteHeader::m_rrcTransactionIdentifier
uint8_t m_rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-header.h:702
ns3::MeasurementReportHeader::~MeasurementReportHeader
~MeasurementReportHeader()
Definition: lte-rrc-header.cc:6670
ns3::LteRrcSap::RaSupervisionInfo::raResponseWindowSize
uint8_t raResponseWindowSize
RA response window size.
Definition: lte-rrc-sap.h:254
MAX_CELL_REPORT
#define MAX_CELL_REPORT
Definition: lte-rrc-header.cc:40
ns3::LteRrcSap::RadioResourceConfigDedicated::drbToAddModList
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list.
Definition: lte-rrc-sap.h:288
ns3::LteRrcSap::MeasGapConfig::SETUP
@ SETUP
Definition: lte-rrc-sap.h:477
ns3::RrcAsn1Header::RrcAsn1Header
RrcAsn1Header()
Definition: lte-rrc-header.cc:50
ns3::RrcConnectionRequestHeader::MO_SIGNALLING
@ MO_SIGNALLING
Definition: lte-rrc-header.h:554
ns3::RrcConnectionReconfigurationHeader::GetRadioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated()
Getter for m_radioResourceConfigDedicated.
Definition: lte-rrc-header.cc:5670
ns3::RrcAsn1Header::SerializeQoffsetRange
void SerializeQoffsetRange(int8_t qOffsetRange) const
Serialize Q offset range function.
Definition: lte-rrc-header.cc:952
ns3::RrcDlCcchMessage::DeserializeDlCcchMessage
Buffer::Iterator DeserializeDlCcchMessage(Buffer::Iterator bIterator)
Deserialize DL CCCH message function.
Definition: lte-rrc-header.cc:7027
ns3::RrcConnectionSetupCompleteHeader::~RrcConnectionSetupCompleteHeader
~RrcConnectionSetupCompleteHeader()
Definition: lte-rrc-header.cc:4892
ns3::RrcConnectionReconfigurationHeader::GetHaveMobilityControlInfo
bool GetHaveMobilityControlInfo()
Getter for m_haveMobilityControlInfo.
Definition: lte-rrc-header.cc:5652
ns3::LteRrcSap::MeasConfig::sMeasure
uint8_t sMeasure
S measure.
Definition: lte-rrc-sap.h:531
ns3::LteRrcSap::AsConfig::sourceUeIdentity
uint16_t sourceUeIdentity
source UE identity
Definition: lte-rrc-sap.h:619
ns3::LteRrcSap::MeasIdToAddMod::reportConfigId
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:468
ns3::RrcConnectionSetupHeader::RrcConnectionSetupHeader
RrcConnectionSetupHeader()
Definition: lte-rrc-header.cc:4709
ns3::RrcConnectionReestablishmentRequestHeader::GetUeIdentity
LteRrcSap::ReestabUeIdentity GetUeIdentity() const
Getter for m_ueIdentity.
Definition: lte-rrc-header.cc:6105
ns3::LteRrcSap::MobilityControlInfo::haveCarrierFreq
bool haveCarrierFreq
have carrier frequency?
Definition: lte-rrc-sap.h:561
ns3::LteRrcSap::SCellToAddMod::radioResourceConfigDedicateSCell
RadioResourceConfigDedicatedSCell radioResourceConfigDedicateSCell
radio resource config dedicated SCell
Definition: lte-rrc-sap.h:825
ns3::RrcAsn1Header::SerializeRadioResourceConfigCommonSCell
void SerializeRadioResourceConfigCommonSCell(LteRrcSap::RadioResourceConfigCommonSCell rrccsc) const
Serialize radio resource config common SCell function.
Definition: lte-rrc-header.cc:1776
ns3::RrcDlDcchMessage::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6899
ns3::RrcConnectionReconfigurationHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:5363
ns3::Asn1Header::DeserializeChoice
Buffer::Iterator DeserializeChoice(int numOptions, bool isExtensionMarkerPresent, int *selectedOption, Buffer::Iterator bIterator)
Deserialize a Choice (set of options)
Definition: lte-asn1-header.cc:675
ns3::RrcConnectionSetupHeader::GetDrbToAddModList
std::list< LteRrcSap::DrbToAddMod > GetDrbToAddModList() const
Gets m_radioResourceConfigDedicated.drbToAddModList.
Definition: lte-rrc-header.cc:4863
ns3::RrcConnectionSetupHeader::GetPhysicalConfigDedicated
LteRrcSap::PhysicalConfigDedicated GetPhysicalConfigDedicated() const
Gets m_radioResourceConfigDedicated.physicalConfigDedicated.
Definition: lte-rrc-header.cc:4875
ns3::LteRrcSap::PhysicalConfigDedicated::haveSoundingRsUlConfigDedicated
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
Definition: lte-rrc-sap.h:218
ns3::LteRrcSap::NonUlConfiguration::pdschConfigCommon
PdschConfigCommon pdschConfigCommon
4: Physical configuration, physical channels pdsch-ConfigCommon-r10
Definition: lte-rrc-sap.h:747
ns3::LteRrcSap::MeasIdToAddMod::measId
uint8_t measId
measure ID
Definition: lte-rrc-sap.h:466
ns3::LteRrcSap::CellsToAddMod::physCellId
uint16_t physCellId
Phy cell ID.
Definition: lte-rrc-sap.h:305
ns3::RrcConnectionReconfigurationHeader::GetHaveMeasConfig
bool GetHaveMeasConfig()
Getter for m_haveMeasConfig.
Definition: lte-rrc-header.cc:5640
ns3::RrcConnectionReestablishmentCompleteHeader::GetMessage
LteRrcSap::RrcConnectionReestablishmentComplete GetMessage() const
Returns a RrcConnectionReestablishmentComplete IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6333
ns3::RrcConnectionReestablishmentCompleteHeader::RrcConnectionReestablishmentCompleteHeader
RrcConnectionReestablishmentCompleteHeader()
Definition: lte-rrc-header.cc:6250
ns3::LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ
@ THRESHOLD_RSRQ
RSRQ is used for the threshold.
Definition: lte-rrc-sap.h:355
ns3::LteRrcSap::CellsToAddMod::cellIndex
uint8_t cellIndex
cell index
Definition: lte-rrc-sap.h:304
ns3::LteRrcSap::MeasResultEutra::rsrqResult
uint8_t rsrqResult
RSRQ result.
Definition: lte-rrc-sap.h:644
ns3::RrcConnectionSetupCompleteHeader::GetRrcTransactionIdentifier
uint8_t GetRrcTransactionIdentifier() const
Getter for m_rrcTransactionIdentifier.
Definition: lte-rrc-header.cc:4979
ns3::LteRrcSap::NonCriticalExtensionConfiguration
NonCriticalExtensionConfiguration structure.
Definition: lte-rrc-sap.h:830
ns3::LteRrcSap::AsConfig::sourceDlCarrierFreq
uint32_t sourceDlCarrierFreq
source DL carrier frequency
Definition: lte-rrc-sap.h:623
ns3::LteRrcSap::RrcConnectionReconfiguration::haveRadioResourceConfigDedicated
bool haveRadioResourceConfigDedicated
have radio resource config dedicated
Definition: lte-rrc-sap.h:843
ns3::LteRrcSap::ReportConfigEutra::SPARE1
@ SPARE1
Definition: lte-rrc-sap.h:438
ns3::LteRrcSap::BlackCellsToAddMod::physCellIdRange
PhysCellIdRange physCellIdRange
Phy cell ID range.
Definition: lte-rrc-sap.h:321
ns3::LteRrcSap::MeasGapConfig::gapOffsetValue
uint8_t gapOffsetValue
gap offset value
Definition: lte-rrc-sap.h:484
ns3::LteRrcSap::RadioResourceConfigDedicated::havePhysicalConfigDedicated
bool havePhysicalConfigDedicated
have physical config dedicated?
Definition: lte-rrc-sap.h:290
ns3::LteRrcSap::NonCriticalExtensionConfiguration::sCellsToAddModList
std::list< SCellToAddMod > sCellsToAddModList
SCell to add mod list.
Definition: lte-rrc-sap.h:831
ns3::RrcAsn1Header::SerializeRadioResourceConfigDedicated
void SerializeRadioResourceConfigDedicated(LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const
Serialize radio resource config function.
Definition: lte-rrc-header.cc:402
ns3::RrcDlCcchMessage::RrcDlCcchMessage
RrcDlCcchMessage()
Definition: lte-rrc-header.cc:6999
ns3::LteRrcSap::ReportConfigEutra::timeToTrigger
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:394
ns3::RrcConnectionReleaseHeader::m_rrcConnectionRelease
LteRrcSap::RrcConnectionRelease m_rrcConnectionRelease
RRC connection release.
Definition: lte-rrc-header.h:1047
ns3::RrcConnectionReestablishmentRequestHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:5961
ns3::LteRrcSap::RrcConnectionReestablishmentComplete
RrcConnectionReestablishmentComplete structure.
Definition: lte-rrc-sap.h:873
ns3::RrcUlCcchMessage::~RrcUlCcchMessage
~RrcUlCcchMessage()
Definition: lte-rrc-header.cc:6942
ns3::LteRrcSap::RadioResourceConfigDedicated
RadioResourceConfigDedicated structure.
Definition: lte-rrc-sap.h:286
ns3::RrcAsn1Header::SerializeSrbToAddModList
void SerializeSrbToAddModList(std::list< LteRrcSap::SrbToAddMod > srbToAddModList) const
Serialize SRB to add mod list function.
Definition: lte-rrc-header.cc:201
ns3::LteRrcSap::ReportConfigEutra::MS2048
@ MS2048
Definition: lte-rrc-sap.h:428
ns3::LteRrcSap::MeasIdToAddMod::measObjectId
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:467
ns3::LteRrcSap::AntennaInfoDedicated::transmissionMode
uint8_t transmissionMode
transmission mode
Definition: lte-rrc-sap.h:143
ns3::LteRrcSap::QuantityConfig::filterCoefficientRSRQ
uint8_t filterCoefficientRSRQ
filter coefficient RSRQ
Definition: lte-rrc-sap.h:298
ns3::RrcConnectionReconfigurationHeader::m_measConfig
LteRrcSap::MeasConfig m_measConfig
the measure config
Definition: lte-rrc-header.h:825
ns3::MeasurementReportHeader::SetMessage
void SetMessage(LteRrcSap::MeasurementReport msg)
Receives a MeasurementReport IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6801
ns3::LteRrcSap::RrcConnectionReestablishment::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:867
ns3::RrcDlCcchMessage::SerializeDlCcchMessage
void SerializeDlCcchMessage(int msgType) const
Serialize DL CCCH message function.
Definition: lte-rrc-header.cc:7050
ns3::LteRrcSap::MeasGapConfig::GP0
@ GP0
Definition: lte-rrc-sap.h:482
sample-rng-plot.n
n
Definition: sample-rng-plot.py:37
ns3::RrcConnectionReconfigurationHeader::GetHaveRadioResourceConfigDedicated
bool GetHaveRadioResourceConfigDedicated()
Getter for m_haveRadioResourceConfigDedicated.
Definition: lte-rrc-header.cc:5664
ns3::HandoverPreparationInfoHeader::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:5725
ns3::RrcConnectionReleaseHeader::SetMessage
void SetMessage(LteRrcSap::RrcConnectionRelease msg)
Receives a RrcConnectionRelease IE and stores the contents into the class attributes.
Definition: lte-rrc-header.cc:6544
ns3::RrcAsn1Header::EnumToBandwidth
uint16_t EnumToBandwidth(int n) const
Convert from ENUMERATED value to bandwidth (in RBs)
Definition: lte-rrc-header.cc:95
ns3::RrcConnectionRejectHeader::GetMessage
LteRrcSap::RrcConnectionReject GetMessage() const
Returns a RrcConnectionReject IE from the values in the class attributes.
Definition: lte-rrc-header.cc:6659
ns3::LteRrcSap::ReportConfigEutra::MIN12
@ MIN12
Definition: lte-rrc-sap.h:433
ns3::LteRrcSap::PhysCellIdRange::range
uint16_t range
the range
Definition: lte-rrc-sap.h:314
ns3::LteRrcSap::ReportConfigEutra::hysteresis
uint8_t hysteresis
Parameter used within the entry and leave condition of an event triggered reporting condition....
Definition: lte-rrc-sap.h:391
ns3::LteRrcSap::FreqInfo::ulBandwidth
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:91
ns3::Asn1Header::SerializeEnum
void SerializeEnum(int numElems, int selectedElem) const
Serialize an Enum.
Definition: lte-asn1-header.cc:299
ns3::RrcConnectionSetupHeader::~RrcConnectionSetupHeader
~RrcConnectionSetupHeader()
Definition: lte-rrc-header.cc:4713
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::antennaInfoUl
AntennaInfoDedicated antennaInfoUl
antenna info UL
Definition: lte-rrc-sap.h:796
ns3::LteRrcSap::AsConfig::sourceSystemInformationBlockType2
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2
Definition: lte-rrc-sap.h:622
ns3::LteRrcSap::ReportConfigEutra::SPARE2
@ SPARE2
Definition: lte-rrc-sap.h:437
ns3::RrcUlCcchMessage::PreSerialize
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
Definition: lte-rrc-header.cc:6960
ns3::RrcAsn1Header::SerializeRadioResourceConfigCommonSib
void SerializeRadioResourceConfigCommonSib(LteRrcSap::RadioResourceConfigCommonSib radioResourceConfigCommonSib) const
Serialize radio resource config common SIB function.
Definition: lte-rrc-header.cc:559
ns3::LteRrcSap::DrbToAddMod::rlcConfig
RlcConfig rlcConfig
RLC config.
Definition: lte-rrc-sap.h:239
ns3::MeasurementReportHeader::Print
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
Definition: lte-rrc-header.cc:6754
ns3::RrcConnectionReconfigurationHeader::~RrcConnectionReconfigurationHeader
~RrcConnectionReconfigurationHeader()
Definition: lte-rrc-header.cc:5089
ns3::RrcAsn1Header::DeserializePlmnIdentity
Buffer::Iterator DeserializePlmnIdentity(uint32_t *plmnId, Buffer::Iterator bIterator)
Deserialize PLMN identity function.
Definition: lte-rrc-header.cc:3716
ns3::RrcConnectionReestablishmentRequestHeader::m_reestablishmentCause
LteRrcSap::ReestablishmentCause m_reestablishmentCause
reestablishment cause
Definition: lte-rrc-header.h:909
ns3::RrcUlDcchMessage::~RrcUlDcchMessage
~RrcUlDcchMessage()
Definition: lte-rrc-header.cc:6820