src/lte/model/lte-asn1-header.h
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Fri, 26 Sep 2014 15:51:00 -0700
changeset 10968 2d29fee2b7b8
parent 9650 9b70351a32b3
child 10988 60f2bc933de1
permissions -rw-r--r--
[Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     2
/*
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     3
 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     4
 *
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     8
 *
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    12
 * GNU General Public License for more details.
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    13
 *
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    17
 *
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    18
 * Author: Lluis Parcerisa <lparcerisa@cttc.cat>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    19
 */
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    20
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    21
#ifndef ASN1_HEADER_H
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    22
#define ASN1_HEADER_H
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    23
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    24
#include "ns3/header.h"
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    25
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    26
#include <bitset>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    27
#include <string>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    28
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    29
#include "ns3/lte-rrc-sap.h"
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    30
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    31
namespace ns3 {
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    32
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    33
/**
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    34
 * This class has the purpose to encode Information Elements according
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    35
 * to ASN.1 syntax, as defined in ITU-T  X-691.
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    36
 * IMPORTANT: The encoding is done following the UNALIGNED variant.
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    37
 */
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    38
class Asn1Header : public Header
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    39
{
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    40
public:
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    41
  Asn1Header ();
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    42
  virtual ~Asn1Header ();
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    43
9647
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    44
  // Inherited from ns3::Header base class
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    45
  static TypeId GetTypeId (void);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    46
  virtual TypeId GetInstanceTypeId (void) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    47
  uint32_t GetSerializedSize (void) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    48
  void Serialize (Buffer::Iterator bIterator) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    49
9647
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    50
  // Inherited from ns3::Header base class
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    51
  // Pure virtual methods, to be implemented in child classes
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    52
  virtual uint32_t Deserialize (Buffer::Iterator bIterator) = 0;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    53
  virtual void Print (std::ostream &os) const = 0;
9647
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    54
    
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    55
  /**
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    56
   * This function serializes class attributes to m_serializationResult local Buffer.
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    57
   * As ASN1 encoding produces a bitstream that does not have a fixed length,
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    58
   * this function is needed to store the result, so its length can be retrieved
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    59
   * with Header::GetSerializedSize() function.
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    60
   * This method is pure virtual in this class (needs to be implemented in child classes)
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    61
   * as the meningful information elements are in the subclasses.
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    62
   */
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
    63
  virtual void PreSerialize (void) const = 0;
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    64
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    65
protected:
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    66
  mutable uint8_t m_serializationPendingBits;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    67
  mutable uint8_t m_numSerializationPendingBits;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    68
  mutable bool m_isDataSerialized;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    69
  mutable Buffer m_serializationResult;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    70
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    71
  // Function to write in m_serializationResult, after resizing its size
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    72
  void WriteOctet (uint8_t octet) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    73
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    74
  // Serialization functions
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    75
  void SerializeBoolean (bool value) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    76
  void SerializeInteger (int n, int nmin, int nmax) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    77
  void SerializeOctetstring (std::string s) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    78
  void SerializeSequenceOf (int numElems, int nMax, int nMin) const;
9650
9b70351a32b3 Add extension marker flag to Serialize/Deserialize Choice
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9647
diff changeset
    79
  void SerializeChoice (int numOptions, int selectedOption, bool isExtensionMarkerPresent) const;
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    80
  void SerializeEnum (int numElems, int selectedElem) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    81
  void SerializeNull () const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    82
  void FinalizeSerialization () const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    83
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    84
  template <int N>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    85
  void SerializeBitset (std::bitset<N> data) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    86
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    87
  template <int N>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    88
  void SerializeSequence (std::bitset<N> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    89
  void SerializeSequence (std::bitset<0> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    90
  void SerializeSequence (std::bitset<1> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    91
  void SerializeSequence (std::bitset<2> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    92
  void SerializeSequence (std::bitset<3> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    93
  void SerializeSequence (std::bitset<4> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    94
  void SerializeSequence (std::bitset<5> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    95
  void SerializeSequence (std::bitset<6> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    96
  void SerializeSequence (std::bitset<9> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    97
  void SerializeSequence (std::bitset<10> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    98
  void SerializeSequence (std::bitset<11> optionalOrDefaultMask, bool isExtensionMarkerPresent) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
    99
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   100
  template <int N>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   101
  void SerializeBitstring (std::bitset<N> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   102
  void SerializeBitstring (std::bitset<1> bitstring) const;
9449
740c5c3b8070 Rrc header: implementation of RrcConnectionReestablishment, RrcConnectionReestablishmentRequest, RrcConnectionReestablishmentComplete.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9443
diff changeset
   103
  void SerializeBitstring (std::bitset<2> bitstring) const;
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   104
  void SerializeBitstring (std::bitset<8> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   105
  void SerializeBitstring (std::bitset<10> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   106
  void SerializeBitstring (std::bitset<16> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   107
  void SerializeBitstring (std::bitset<27> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   108
  void SerializeBitstring (std::bitset<28> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   109
  void SerializeBitstring (std::bitset<32> bitstring) const;
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   110
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   111
  // Deserialization functions
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   112
  template <int N>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   113
  Buffer::Iterator DeserializeBitset (std::bitset<N> *data, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   114
  Buffer::Iterator DeserializeBitset (std::bitset<8> *data, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   115
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   116
  Buffer::Iterator DeserializeBoolean (bool *value, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   117
  Buffer::Iterator DeserializeInteger (int *n, int nmin, int nmax, Buffer::Iterator bIterator);
9650
9b70351a32b3 Add extension marker flag to Serialize/Deserialize Choice
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9647
diff changeset
   118
  Buffer::Iterator DeserializeChoice (int numOptions, bool isExtensionMarkerPresent, int *selectedOption, Buffer::Iterator bIterator);
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   119
  Buffer::Iterator DeserializeEnum (int numElems, int *selectedElem, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   120
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   121
  template <int N>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   122
  Buffer::Iterator DeserializeSequence (std::bitset<N> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   123
  Buffer::Iterator DeserializeSequence (std::bitset<0> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   124
  Buffer::Iterator DeserializeSequence (std::bitset<1> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   125
  Buffer::Iterator DeserializeSequence (std::bitset<2> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   126
  Buffer::Iterator DeserializeSequence (std::bitset<3> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   127
  Buffer::Iterator DeserializeSequence (std::bitset<4> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   128
  Buffer::Iterator DeserializeSequence (std::bitset<5> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   129
  Buffer::Iterator DeserializeSequence (std::bitset<6> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   130
  Buffer::Iterator DeserializeSequence (std::bitset<9> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   131
  Buffer::Iterator DeserializeSequence (std::bitset<10> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   132
  Buffer::Iterator DeserializeSequence (std::bitset<11> *optionalOrDefaultMask, bool isExtensionMarkerPresent, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   133
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   134
  template <int N>
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   135
  Buffer::Iterator DeserializeBitstring (std::bitset<N> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   136
  Buffer::Iterator DeserializeBitstring (std::bitset<1> *bitstring, Buffer::Iterator bIterator);
9449
740c5c3b8070 Rrc header: implementation of RrcConnectionReestablishment, RrcConnectionReestablishmentRequest, RrcConnectionReestablishmentComplete.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9443
diff changeset
   137
  Buffer::Iterator DeserializeBitstring (std::bitset<2> *bitstring, Buffer::Iterator bIterator);
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   138
  Buffer::Iterator DeserializeBitstring (std::bitset<8> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   139
  Buffer::Iterator DeserializeBitstring (std::bitset<10> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   140
  Buffer::Iterator DeserializeBitstring (std::bitset<16> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   141
  Buffer::Iterator DeserializeBitstring (std::bitset<27> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   142
  Buffer::Iterator DeserializeBitstring (std::bitset<28> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   143
  Buffer::Iterator DeserializeBitstring (std::bitset<32> *bitstring, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   144
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   145
  Buffer::Iterator DeserializeNull (Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   146
  Buffer::Iterator DeserializeSequenceOf (int *numElems, int nMax, int nMin, Buffer::Iterator bIterator);
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   147
};
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   148
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   149
} // namespace ns3
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   150
9647
392b69275b78 Implement Nicola's review comments
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9449
diff changeset
   151
#endif // ASN1_HEADER_H
9443
33e358d8d64d Development of RRC headers based on the RRC SAP
Lluis Parcerisa <parcerisa@gmail.com>
parents:
diff changeset
   152