A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
lte-rrc-header.h
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  */
20 
21 #ifndef RRC_HEADER_H
22 #define RRC_HEADER_H
23 
24 #include "ns3/header.h"
25 
26 #include <bitset>
27 #include <string>
28 
29 #include "ns3/lte-rrc-sap.h"
30 #include "ns3/lte-asn1-header.h"
31 
32 namespace ns3 {
33 
38 class RrcAsn1Header : public Asn1Header
39 {
40 public:
41  RrcAsn1Header ();
42  int GetMessageType ();
43 
44 protected:
45  // Inherited from Asn1Header
46  static TypeId GetTypeId (void);
47  virtual TypeId GetInstanceTypeId (void) const;
48  uint32_t Deserialize (Buffer::Iterator bIterator) = 0;
49  virtual void PreSerialize (void) const = 0;
50 
51  // Serialization functions
52  void SerializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> srbToAddModList) const;
53  void SerializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> drbToAddModList) const;
54  void SerializeLogicalChannelConfig (LteRrcSap::LogicalChannelConfig logicalChannelConfig) const;
55  void SerializeRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const;
56  void SerializePhysicalConfigDedicated (LteRrcSap::PhysicalConfigDedicated physicalConfigDedicated) const;
57  void SerializeSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 systemInformationBlockType1) const;
58  void SerializeSystemInformationBlockType2 (LteRrcSap::SystemInformationBlockType2 systemInformationBlockType2) const;
59  void SerializeRadioResourceConfigCommon (LteRrcSap::RadioResourceConfigCommon radioResourceConfigCommon) const;
60  void SerializeRadioResourceConfigCommonSib (LteRrcSap::RadioResourceConfigCommonSib radioResourceConfigCommonSib) const;
61  void SerializeMeasResults (LteRrcSap::MeasResults measResults) const;
62  void SerializePlmnIdentity (uint32_t plmnId) const;
63  void SerializeRachConfigCommon (LteRrcSap::RachConfigCommon rachConfigCommon) const;
64  void SerializeMeasConfig (LteRrcSap::MeasConfig measConfig) const;
65  void SerializeQoffsetRange (int8_t qOffsetRange) const;
66  void SerializeThresholdEutra (LteRrcSap::ThresholdEutra thresholdEutra) const;
67 
68  // Deserialization functions
69  Buffer::Iterator DeserializeDrbToAddModList (std::list<LteRrcSap::DrbToAddMod> *drbToAddModLis, Buffer::Iterator bIterator);
70  Buffer::Iterator DeserializeSrbToAddModList (std::list<LteRrcSap::SrbToAddMod> *srbToAddModList, Buffer::Iterator bIterator);
71  Buffer::Iterator DeserializeLogicalChannelConfig (LteRrcSap::LogicalChannelConfig *logicalChannelConfig, Buffer::Iterator bIterator);
72  Buffer::Iterator DeserializeRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedicated *radioResourceConfigDedicated, Buffer::Iterator bIterator);
73  Buffer::Iterator DeserializePhysicalConfigDedicated (LteRrcSap::PhysicalConfigDedicated *physicalConfigDedicated, Buffer::Iterator bIterator);
74  Buffer::Iterator DeserializeSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 *systemInformationBlockType1, Buffer::Iterator bIterator);
75  Buffer::Iterator DeserializeSystemInformationBlockType2 (LteRrcSap::SystemInformationBlockType2 *systemInformationBlockType2, Buffer::Iterator bIterator);
76  Buffer::Iterator DeserializeRadioResourceConfigCommon (LteRrcSap::RadioResourceConfigCommon *radioResourceConfigCommon, Buffer::Iterator bIterator);
77  Buffer::Iterator DeserializeRadioResourceConfigCommonSib (LteRrcSap::RadioResourceConfigCommonSib *radioResourceConfigCommonSib, Buffer::Iterator bIterator);
78  Buffer::Iterator DeserializeMeasResults (LteRrcSap::MeasResults *measResults, Buffer::Iterator bIterator);
79  Buffer::Iterator DeserializePlmnIdentity (uint32_t *plmnId, Buffer::Iterator bIterator);
80  Buffer::Iterator DeserializeRachConfigCommon (LteRrcSap::RachConfigCommon * rachConfigCommon, Buffer::Iterator bIterator);
81  Buffer::Iterator DeserializeMeasConfig (LteRrcSap::MeasConfig * measConfig, Buffer::Iterator bIterator);
82  Buffer::Iterator DeserializeQoffsetRange (int8_t * qOffsetRange, Buffer::Iterator bIterator);
83  Buffer::Iterator DeserializeThresholdEutra (LteRrcSap::ThresholdEutra * thresholdEutra, Buffer::Iterator bIterator);
84 
90  void Print (std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const;
91 
94 };
95 
96 
102 {
103 public:
104  RrcUlDcchMessage ();
105  ~RrcUlDcchMessage ();
106 
107  // Inherited from RrcAsn1Header
108  uint32_t Deserialize (Buffer::Iterator bIterator);
109  void Print (std::ostream &os) const;
110  void PreSerialize () const;
111 
112 protected:
113  void SerializeUlDcchMessage (int msgType) const;
114  Buffer::Iterator DeserializeUlDcchMessage (Buffer::Iterator bIterator);
115 };
116 
122 {
123 public:
124  RrcDlDcchMessage ();
125  ~RrcDlDcchMessage ();
126 
127  // Inherited from RrcAsn1Header
128  uint32_t Deserialize (Buffer::Iterator bIterator);
129  void Print (std::ostream &os) const;
130  void PreSerialize () const;
131 
132 protected:
133  void SerializeDlDcchMessage (int msgType) const;
134  Buffer::Iterator DeserializeDlDcchMessage (Buffer::Iterator bIterator);
135 };
136 
142 {
143 public:
144  RrcUlCcchMessage ();
145  ~RrcUlCcchMessage ();
146 
147  // Inherited from RrcAsn1Header
148  uint32_t Deserialize (Buffer::Iterator bIterator);
149  void Print (std::ostream &os) const;
150  void PreSerialize () const;
151 
152 protected:
153  void SerializeUlCcchMessage (int msgType) const;
154  Buffer::Iterator DeserializeUlCcchMessage (Buffer::Iterator bIterator);
155 };
156 
162 {
163 public:
164  RrcDlCcchMessage ();
165  ~RrcDlCcchMessage ();
166 
167  // Inherited from RrcAsn1Header
168  uint32_t Deserialize (Buffer::Iterator bIterator);
169  void Print (std::ostream &os) const;
170  void PreSerialize () const;
171 
172 protected:
173  void SerializeDlCcchMessage (int msgType) const;
174  Buffer::Iterator DeserializeDlCcchMessage (Buffer::Iterator bIterator);
175 };
176 
181 {
182 public:
185 
186  // Inherited from RrcAsn1Header
187  static TypeId GetTypeId (void);
188  void PreSerialize () const;
189  uint32_t Deserialize (Buffer::Iterator bIterator);
190  void Print (std::ostream &os) const;
191 
197 
203 
208  std::bitset<8> GetMmec () const;
209 
214  std::bitset<32> GetMtmsi () const;
215 
216 private:
217  std::bitset<8> m_mmec;
218  std::bitset<32> m_mTmsi;
219  enum
220  {
221  EMERGENCY = 0, HIGHPRIORITYACCESS, MT_ACCESS,
222  MO_SIGNALLING, MO_DATA, SPARE3, SPARE2, SPARE1
223  } m_establishmentCause;
224  std::bitset<1> m_spare;
225 };
226 
231 {
232 public:
235 
236  // Inherited from RrcAsn1Header
237  void PreSerialize () const;
238  uint32_t Deserialize (Buffer::Iterator bIterator);
239  void Print (std::ostream &os) const;
240 
246 
252 
257  uint8_t GetRrcTransactionIdentifier () const;
258 
264 
269  bool HavePhysicalConfigDedicated () const;
270 
276 
281  std::list<LteRrcSap::SrbToAddMod> GetSrbToAddModList () const;
282 
287  std::list<LteRrcSap::DrbToAddMod> GetDrbToAddModList () const;
288 
293  std::list<uint8_t> GetDrbToReleaseList () const;
294 
295 private:
296  uint8_t m_rrcTransactionIdentifier;
297  mutable LteRrcSap::RadioResourceConfigDedicated m_radioResourceConfigDedicated;
298 };
299 
304 {
305 public:
308 
309  // Inherited from RrcAsn1Header
310  void PreSerialize () const;
311  uint32_t Deserialize (Buffer::Iterator bIterator);
312  void Print (std::ostream &os) const;
313 
319 
325 
330  uint8_t GetRrcTransactionIdentifier () const;
331 
332 private:
333  uint8_t m_rrcTransactionIdentifier;
334 
335 };
336 
341 {
342 public:
345 
346  // Inherited from RrcAsn1Header
347  void PreSerialize () const;
348  uint32_t Deserialize (Buffer::Iterator bIterator);
349  void Print (std::ostream &os) const;
350 
356 
362 
367  uint8_t GetRrcTransactionIdentifier () const;
368 
369 private:
370  uint8_t m_rrcTransactionIdentifier;
371 
372 };
373 
378 {
379 public:
382 
383  // Inherited from RrcAsn1Header
384  void PreSerialize () const;
385  uint32_t Deserialize (Buffer::Iterator bIterator);
386  void Print (std::ostream &os) const;
387 
393 
399 
404  bool GetHaveMeasConfig ();
405 
411 
417 
423 
429 
435 
440  uint8_t GetRrcTransactionIdentifier () const;
441 
447 
452  bool HavePhysicalConfigDedicated () const;
453 
459 
464  std::list<LteRrcSap::SrbToAddMod> GetSrbToAddModList () const;
465 
470  std::list<LteRrcSap::DrbToAddMod> GetDrbToAddModList () const;
471 
476  std::list<uint8_t> GetDrbToReleaseList () const;
477 
478 private:
479  uint8_t m_rrcTransactionIdentifier;
480  bool m_haveMeasConfig;
481  LteRrcSap::MeasConfig m_measConfig;
482  bool m_haveMobilityControlInfo;
483  LteRrcSap::MobilityControlInfo m_mobilityControlInfo;
484  bool m_haveRadioResourceConfigDedicated;
485  LteRrcSap::RadioResourceConfigDedicated m_radioResourceConfigDedicated;
486 };
487 
492 {
493 public:
495 
496  // Inherited from RrcAsn1Header
497  void PreSerialize () const;
498  uint32_t Deserialize (Buffer::Iterator bIterator);
499  void Print (std::ostream &os) const;
500 
506 
512 
518 
519 private:
520  LteRrcSap::AsConfig m_asConfig;
521 };
522 
527 {
528 public:
531 
532  // Inherited from RrcAsn1Header
533  void PreSerialize () const;
534  uint32_t Deserialize (Buffer::Iterator bIterator);
535  void Print (std::ostream &os) const;
536 
542 
548 
554 
559  LteRrcSap::ReestablishmentCause GetReestablishmentCause () const;
560 
561 private:
562  LteRrcSap::ReestabUeIdentity m_ueIdentity;
563  LteRrcSap::ReestablishmentCause m_reestablishmentCause;
564 };
565 
570 {
571 public:
574 
575  // Inherited from RrcAsn1Header
576  void PreSerialize () const;
577  uint32_t Deserialize (Buffer::Iterator bIterator);
578  void Print (std::ostream &os) const;
579 
585 
591 
596  uint8_t GetRrcTransactionIdentifier () const;
597 
603 
604 private:
605  uint8_t m_rrcTransactionIdentifier;
606  LteRrcSap::RadioResourceConfigDedicated m_radioResourceConfigDedicated;
607 };
608 
613 {
614 public:
616 
617  // Inherited from RrcAsn1Header
618  void PreSerialize () const;
619  uint32_t Deserialize (Buffer::Iterator bIterator);
620  void Print (std::ostream &os) const;
621 
627 
633 
638  uint8_t GetRrcTransactionIdentifier () const;
639 
640 private:
641  uint8_t m_rrcTransactionIdentifier;
642 };
643 
648 {
649 public:
652 
653  // Inherited from RrcAsn1Header
654  void PreSerialize () const;
655  uint32_t Deserialize (Buffer::Iterator bIterator);
656  void Print (std::ostream &os) const;
657 
663 
669 
670 private:
671  LteRrcSap::RrcConnectionReestablishmentReject m_rrcConnectionReestablishmentReject;
672 };
673 
678 {
679 public:
682 
683  // Inherited from RrcAsn1Header
684  void PreSerialize () const;
685  uint32_t Deserialize (Buffer::Iterator bIterator);
686  void Print (std::ostream &os) const;
687 
693 
699 
700 private:
701  LteRrcSap::RrcConnectionRelease m_rrcConnectionRelease;
702 };
703 
708 {
709 public:
712 
713  // Inherited from RrcAsn1Header
714  void PreSerialize () const;
715  uint32_t Deserialize (Buffer::Iterator bIterator);
716  void Print (std::ostream &os) const;
717 
723 
729 
730 private:
731  LteRrcSap::RrcConnectionReject m_rrcConnectionReject;
732 };
733 
738 {
739 public:
742 
743  // Inherited from RrcAsn1Header
744  void PreSerialize () const;
745  uint32_t Deserialize (Buffer::Iterator bIterator);
746  void Print (std::ostream &os) const;
747 
753 
759 
760 private:
761  LteRrcSap::MeasurementReport m_measurementReport;
762 
763 };
764 
765 } // namespace ns3
766 
767 #endif // RRC_HEADER_H
768 
LteRrcSap::ReestablishmentCause GetReestablishmentCause() const
void Print(std::ostream &os) const
uint32_t Deserialize(Buffer::Iterator bIterator)
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated()
void SetMessage(LteRrcSap::RrcConnectionRequest msg)
void SetMessage(LteRrcSap::RrcConnectionSetupCompleted msg)
std::list< uint8_t > GetDrbToReleaseList() const
void SetMessage(LteRrcSap::RrcConnectionReestablishmentRequest msg)
uint8_t GetRrcTransactionIdentifier() const
uint32_t Deserialize(Buffer::Iterator bIterator)
void Print(std::ostream &os) const
uint32_t Deserialize(Buffer::Iterator bIterator)
void SetMessage(LteRrcSap::RrcConnectionReestablishmentComplete msg)
void SetMessage(LteRrcSap::RrcConnectionReestablishment msg)
std::list< LteRrcSap::SrbToAddMod > GetSrbToAddModList() const
LteRrcSap::RrcConnectionReestablishment GetMessage() const
uint32_t Deserialize(Buffer::Iterator bIterator)=0
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::RrcConnectionRelease GetMessage() const
LteRrcSap::RrcConnectionReestablishmentRequest GetMessage() const
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::HandoverPreparationInfo GetMessage() const
iterator in a Buffer instance
Definition: buffer.h:98
virtual TypeId GetInstanceTypeId(void) const
void SetMessage(LteRrcSap::RrcConnectionRelease msg)
uint32_t Deserialize(Buffer::Iterator bIterator)
void Print(std::ostream &os) const
void SetMessage(LteRrcSap::RrcConnectionReestablishmentReject msg)
uint32_t Deserialize(Buffer::Iterator bIterator)
std::list< LteRrcSap::DrbToAddMod > GetDrbToAddModList() const
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::RrcConnectionReestablishmentReject GetMessage() const
void Print(std::ostream &os) const
void SetMessage(LteRrcSap::RrcConnectionReject msg)
void Print(std::ostream &os) const
uint32_t Deserialize(Buffer::Iterator bIterator)
void Print(std::ostream &os) const
LteRrcSap::PhysicalConfigDedicated GetPhysicalConfigDedicated() const
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated() const
void PreSerialize() const
void PreSerialize() const
void SetMessage(LteRrcSap::MeasurementReport msg)
void Print(std::ostream &os) const
void SetMessage(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::RrcConnectionRequest GetMessage() const
void Print(std::ostream &os) const
void Print(std::ostream &os) const
uint32_t Deserialize(Buffer::Iterator bIterator)
void Print(std::ostream &os) const
std::list< uint8_t > GetDrbToReleaseList() const
virtual void PreSerialize(void) const =0
LteRrcSap::MeasurementReport GetMessage() const
void PreSerialize() const
LteRrcSap::RrcConnectionSetup GetMessage() const
void PreSerialize() const
void SetMessage(LteRrcSap::HandoverPreparationInfo msg)
LteRrcSap::AsConfig GetAsConfig() const
std::list< LteRrcSap::DrbToAddMod > GetDrbToAddModList() const
LteRrcSap::RrcConnectionReconfigurationCompleted GetMessage() const
LteRrcSap::ReestabUeIdentity GetUeIdentity() const
LteRrcSap::RrcConnectionReconfiguration GetMessage() const
void SetMessage(LteRrcSap::RrcConnectionSetup msg)
uint32_t Deserialize(Buffer::Iterator bIterator)
void Print(std::ostream &os) const
int m_messageType
Stores RRC message type, according to 3GPP TS 36.331.
LteRrcSap::PhysicalConfigDedicated GetPhysicalConfigDedicated() const
void Print(std::ostream &os) const
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::RrcConnectionReestablishmentComplete GetMessage() const
void SetMessage(LteRrcSap::RrcConnectionReconfiguration msg)
void Print(std::ostream &os) const
void Print(std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigDedicated() const
uint32_t Deserialize(Buffer::Iterator bIterator)
a unique identifier for an interface.
Definition: type-id.h:44
LteRrcSap::RrcConnectionReject GetMessage() const
LteRrcSap::MobilityControlInfo GetMobilityControlInfo()
uint32_t Deserialize(Buffer::Iterator bIterator)
LteRrcSap::RrcConnectionSetupCompleted GetMessage() const
std::bitset< 32 > GetMtmsi() const
std::list< LteRrcSap::SrbToAddMod > GetSrbToAddModList() const
std::bitset< 8 > GetMmec() const
uint32_t Deserialize(Buffer::Iterator bIterator)