src/lte/model/epc-x2-header.cc
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Fri, 26 Sep 2014 15:51:00 -0700
changeset 10968 2d29fee2b7b8
parent 10652 dc18deba4502
child 11274 609de51c9b88
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:
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     2
/*
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     4
 *
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     8
 *
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    13
 *
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    17
 *
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    18
 * Author: Manuel Requena <manuel.requena@cttc.es>
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    19
 */
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    20
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    21
#include "ns3/log.h"
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    22
#include "ns3/epc-x2-header.h"
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    23
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    24
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    25
namespace ns3 {
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    26
10968
2d29fee2b7b8 [Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10652
diff changeset
    27
NS_LOG_COMPONENT_DEFINE ("EpcX2Header");
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    28
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
    29
NS_OBJECT_ENSURE_REGISTERED (EpcX2Header);
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    30
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    31
EpcX2Header::EpcX2Header ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    32
  : m_messageType (0xfa),
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    33
    m_procedureCode (0xfa),
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    34
    m_lengthOfIes (0xfa),
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    35
    m_numberOfIes (0xfa)
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    36
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    37
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    38
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    39
EpcX2Header::~EpcX2Header ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    40
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    41
  m_messageType = 0xfb;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    42
  m_procedureCode = 0xfb;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    43
  m_lengthOfIes = 0xfb;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    44
  m_numberOfIes = 0xfb;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    45
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    46
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    47
TypeId
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    48
EpcX2Header::GetTypeId (void)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    49
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    50
  static TypeId tid = TypeId ("ns3::EpcX2Header")
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    51
    .SetParent<Header> ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    52
    .AddConstructor<EpcX2Header> ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    53
  ;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    54
  return tid;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    55
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    56
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    57
TypeId
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    58
EpcX2Header::GetInstanceTypeId (void) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    59
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    60
  return GetTypeId ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    61
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    62
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    63
uint32_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    64
EpcX2Header::GetSerializedSize (void) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    65
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    66
  return 7;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    67
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    68
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    69
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    70
EpcX2Header::Serialize (Buffer::Iterator start) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    71
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    72
  Buffer::Iterator i = start;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    73
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    74
  i.WriteU8 (m_messageType);
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    75
  i.WriteU8 (m_procedureCode);
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    76
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    77
  i.WriteU8 (0x00); // criticality = REJECT
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    78
  i.WriteU8 (m_lengthOfIes + 3);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    79
  i.WriteHtonU16 (0);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    80
  i.WriteU8 (m_numberOfIes);
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    81
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    82
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    83
uint32_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    84
EpcX2Header::Deserialize (Buffer::Iterator start)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    85
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    86
  Buffer::Iterator i = start;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    87
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    88
  m_messageType = i.ReadU8 ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    89
  m_procedureCode = i.ReadU8 ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    90
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    91
  i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    92
  m_lengthOfIes = i.ReadU8 () - 3;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    93
  i.ReadNtohU16 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    94
  m_numberOfIes = i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
    95
  
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    96
  return GetSerializedSize ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    97
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    98
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
    99
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   100
EpcX2Header::Print (std::ostream &os) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   101
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   102
  os << "MessageType=" << (uint32_t) m_messageType;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   103
  os << " ProcedureCode=" << (uint32_t) m_procedureCode;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   104
  os << " LengthOfIEs=" << (uint32_t) m_lengthOfIes;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   105
  os << " NumberOfIEs=" << (uint32_t) m_numberOfIes;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   106
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   107
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   108
uint8_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   109
EpcX2Header::GetMessageType () const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   110
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   111
  return m_messageType;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   112
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   113
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   114
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   115
EpcX2Header::SetMessageType (uint8_t messageType)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   116
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   117
  m_messageType = messageType;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   118
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   119
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   120
uint8_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   121
EpcX2Header::GetProcedureCode () const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   122
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   123
  return m_procedureCode;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   124
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   125
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   126
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   127
EpcX2Header::SetProcedureCode (uint8_t procedureCode)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   128
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   129
  m_procedureCode = procedureCode;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   130
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   131
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   132
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   133
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   134
EpcX2Header::SetLengthOfIes (uint32_t lengthOfIes)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   135
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   136
  m_lengthOfIes = lengthOfIes;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   137
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   138
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   139
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   140
EpcX2Header::SetNumberOfIes (uint32_t numberOfIes)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   141
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   142
  m_numberOfIes = numberOfIes;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   143
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   144
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   145
/////////////////////////////////////////////////////////////////////
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   146
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   147
NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverRequestHeader);
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   148
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   149
EpcX2HandoverRequestHeader::EpcX2HandoverRequestHeader ()
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   150
  : m_numberOfIes (1 + 1 + 1 + 1),
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   151
    m_headerLength (6 + 5 + 12 + (3 + 4 + 8 + 8 + 4)),
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   152
    m_oldEnbUeX2apId (0xfffa),
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   153
    m_cause (0xfffa),
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   154
    m_targetCellId (0xfffa),
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   155
    m_mmeUeS1apId (0xfffffffa)
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   156
{
9417
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
   157
  m_erabsToBeSetupList.clear ();
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   158
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   159
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   160
EpcX2HandoverRequestHeader::~EpcX2HandoverRequestHeader ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   161
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   162
  m_numberOfIes = 0;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   163
  m_headerLength = 0;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   164
  m_oldEnbUeX2apId = 0xfffb;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   165
  m_cause = 0xfffb;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   166
  m_targetCellId = 0xfffb;
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   167
  m_mmeUeS1apId = 0xfffffffb;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   168
  m_erabsToBeSetupList.clear ();
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   169
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   170
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   171
TypeId
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   172
EpcX2HandoverRequestHeader::GetTypeId (void)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   173
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   174
  static TypeId tid = TypeId ("ns3::EpcX2HandoverRequestHeader")
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   175
    .SetParent<Header> ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   176
    .AddConstructor<EpcX2HandoverRequestHeader> ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   177
  ;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   178
  return tid;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   179
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   180
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   181
TypeId
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   182
EpcX2HandoverRequestHeader::GetInstanceTypeId (void) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   183
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   184
  return GetTypeId ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   185
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   186
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   187
uint32_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   188
EpcX2HandoverRequestHeader::GetSerializedSize (void) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   189
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   190
  return m_headerLength;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   191
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   192
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   193
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   194
EpcX2HandoverRequestHeader::Serialize (Buffer::Iterator start) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   195
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   196
  Buffer::Iterator i = start;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   197
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   198
  i.WriteHtonU16 (10);              // id = OLD_ENB_UE_X2AP_ID
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   199
  i.WriteU8 (0);                    // criticality = REJECT
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   200
  i.WriteU8 (2);                    // length of OLD_ENB_UE_X2AP_ID
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   201
  i.WriteHtonU16 (m_oldEnbUeX2apId);
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   202
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   203
  i.WriteHtonU16 (5);               // id = CAUSE
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   204
  i.WriteU8 (1 << 6);               // criticality = IGNORE
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   205
  i.WriteU8 (1);                    // length of CAUSE
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   206
  i.WriteU8 (m_cause);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   207
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   208
  i.WriteHtonU16 (11);              // id = TARGET_CELLID
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   209
  i.WriteU8 (0);                    // criticality = REJECT
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   210
  i.WriteU8 (8);                    // length of TARGET_CELLID
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   211
  i.WriteHtonU32 (0x123456);        // fake PLMN
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   212
  i.WriteHtonU32 (m_targetCellId << 4);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   213
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   214
  i.WriteHtonU16 (14);              // id = UE_CONTEXT_INFORMATION
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   215
  i.WriteU8 (0);                    // criticality = REJECT
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   216
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   217
  i.WriteHtonU32 (m_mmeUeS1apId);
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   218
  i.WriteHtonU64 (m_ueAggregateMaxBitRateDownlink);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   219
  i.WriteHtonU64 (m_ueAggregateMaxBitRateUplink);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   220
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   221
  std::vector <EpcX2Sap::ErabToBeSetupItem>::size_type sz = m_erabsToBeSetupList.size (); 
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   222
  i.WriteHtonU32 (sz);              // number of bearers
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   223
  for (int j = 0; j < (int) sz; j++)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   224
    {
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   225
      i.WriteHtonU16 (m_erabsToBeSetupList [j].erabId);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   226
      i.WriteHtonU16 (m_erabsToBeSetupList [j].erabLevelQosParameters.qci);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   227
      i.WriteHtonU64 (m_erabsToBeSetupList [j].erabLevelQosParameters.gbrQosInfo.gbrDl);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   228
      i.WriteHtonU64 (m_erabsToBeSetupList [j].erabLevelQosParameters.gbrQosInfo.gbrUl);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   229
      i.WriteHtonU64 (m_erabsToBeSetupList [j].erabLevelQosParameters.gbrQosInfo.mbrDl);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   230
      i.WriteHtonU64 (m_erabsToBeSetupList [j].erabLevelQosParameters.gbrQosInfo.mbrUl);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   231
      i.WriteU8 (m_erabsToBeSetupList [j].erabLevelQosParameters.arp.priorityLevel);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   232
      i.WriteU8 (m_erabsToBeSetupList [j].erabLevelQosParameters.arp.preemptionCapability);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   233
      i.WriteU8 (m_erabsToBeSetupList [j].erabLevelQosParameters.arp.preemptionVulnerability);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   234
      i.WriteU8 (m_erabsToBeSetupList [j].dlForwarding);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   235
      i.WriteHtonU32 (m_erabsToBeSetupList [j].transportLayerAddress.Get ());
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   236
      i.WriteHtonU32 (m_erabsToBeSetupList [j].gtpTeid);
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   237
    }
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   238
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   239
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   240
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   241
uint32_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   242
EpcX2HandoverRequestHeader::Deserialize (Buffer::Iterator start)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   243
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   244
  Buffer::Iterator i = start;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   245
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   246
  m_headerLength = 0;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   247
  m_numberOfIes = 0;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   248
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   249
  i.ReadNtohU16 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   250
  i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   251
  i.ReadU8 ();
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   252
  m_oldEnbUeX2apId = i.ReadNtohU16 ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   253
  m_headerLength += 6;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   254
  m_numberOfIes++;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   255
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   256
  i.ReadNtohU16 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   257
  i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   258
  i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   259
  m_cause = i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   260
  m_headerLength += 5;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   261
  m_numberOfIes++;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   262
  
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   263
  i.ReadNtohU16 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   264
  i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   265
  i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   266
  i.ReadNtohU32 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   267
  m_targetCellId = i.ReadNtohU32 () >> 4;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   268
  m_headerLength += 12;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   269
  m_numberOfIes++;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   270
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   271
  i.ReadNtohU16 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   272
  i.ReadU8 ();
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   273
  m_mmeUeS1apId = i.ReadNtohU32 ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   274
  m_ueAggregateMaxBitRateDownlink = i.ReadNtohU64 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   275
  m_ueAggregateMaxBitRateUplink   = i.ReadNtohU64 ();
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   276
  int sz = i.ReadNtohU32 ();
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   277
  m_headerLength += 27;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   278
  m_numberOfIes++;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   279
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   280
  for (int j = 0; j < sz; j++)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   281
    {
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   282
      EpcX2Sap::ErabToBeSetupItem erabItem;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   283
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   284
      erabItem.erabId = i.ReadNtohU16 ();
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   285
 
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   286
      erabItem.erabLevelQosParameters = EpsBearer ((EpsBearer::Qci) i.ReadNtohU16 ());
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   287
      erabItem.erabLevelQosParameters.gbrQosInfo.gbrDl = i.ReadNtohU64 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   288
      erabItem.erabLevelQosParameters.gbrQosInfo.gbrUl = i.ReadNtohU64 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   289
      erabItem.erabLevelQosParameters.gbrQosInfo.mbrDl = i.ReadNtohU64 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   290
      erabItem.erabLevelQosParameters.gbrQosInfo.mbrUl = i.ReadNtohU64 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   291
      erabItem.erabLevelQosParameters.arp.priorityLevel = i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   292
      erabItem.erabLevelQosParameters.arp.preemptionCapability = i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   293
      erabItem.erabLevelQosParameters.arp.preemptionVulnerability = i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   294
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   295
      erabItem.dlForwarding = i.ReadU8 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   296
      erabItem.transportLayerAddress = Ipv4Address (i.ReadNtohU32 ());
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   297
      erabItem.gtpTeid = i.ReadNtohU32 ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   298
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   299
      m_erabsToBeSetupList.push_back (erabItem);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   300
      m_headerLength += 48;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   301
    }
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   302
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   303
  return GetSerializedSize ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   304
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   305
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   306
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   307
EpcX2HandoverRequestHeader::Print (std::ostream &os) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   308
{
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   309
  os << "OldEnbUeX2apId = " << m_oldEnbUeX2apId;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   310
  os << " Cause = " << m_cause;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   311
  os << " TargetCellId = " << m_targetCellId;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   312
  os << " MmeUeS1apId = " << m_mmeUeS1apId;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   313
  os << " UeAggrMaxBitRateDownlink = " << m_ueAggregateMaxBitRateDownlink;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   314
  os << " UeAggrMaxBitRateUplink = " << m_ueAggregateMaxBitRateUplink;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   315
  os << " NumOfBearers = " << m_erabsToBeSetupList.size ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   316
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   317
  std::vector <EpcX2Sap::ErabToBeSetupItem>::size_type sz = m_erabsToBeSetupList.size ();
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   318
  if (sz > 0)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   319
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   320
      os << " [";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   321
    }
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   322
  for (int j = 0; j < (int) sz; j++)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   323
    {
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   324
      os << m_erabsToBeSetupList[j].erabId;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   325
      if (j < (int) sz - 1)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   326
        {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   327
          os << ", ";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   328
        }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   329
      else
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   330
        {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   331
          os << "]";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   332
        }
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   333
    }
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   334
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   335
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   336
uint16_t
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   337
EpcX2HandoverRequestHeader::GetOldEnbUeX2apId () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   338
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   339
  return m_oldEnbUeX2apId;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   340
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   341
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   342
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   343
EpcX2HandoverRequestHeader::SetOldEnbUeX2apId (uint16_t x2apId)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   344
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   345
  m_oldEnbUeX2apId = x2apId;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   346
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   347
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   348
uint16_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   349
EpcX2HandoverRequestHeader::GetCause () const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   350
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   351
  return m_cause;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   352
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   353
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   354
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   355
EpcX2HandoverRequestHeader::SetCause (uint16_t cause)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   356
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   357
  m_cause = cause;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   358
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   359
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   360
uint16_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   361
EpcX2HandoverRequestHeader::GetTargetCellId () const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   362
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   363
  return m_targetCellId;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   364
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   365
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   366
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   367
EpcX2HandoverRequestHeader::SetTargetCellId (uint16_t targetCellId)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   368
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   369
  m_targetCellId = targetCellId;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   370
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   371
9437
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   372
uint32_t
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   373
EpcX2HandoverRequestHeader::GetMmeUeS1apId () const
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   374
{
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   375
  return m_mmeUeS1apId;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   376
}
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   377
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   378
void
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   379
EpcX2HandoverRequestHeader::SetMmeUeS1apId (uint32_t mmeUeS1apId)
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   380
{
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   381
  m_mmeUeS1apId = mmeUeS1apId;
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   382
}
9c5081f582ad Add support for MME UE S1AP ID in HandoverRequest X2 primitive
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   383
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   384
std::vector <EpcX2Sap::ErabToBeSetupItem>
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   385
EpcX2HandoverRequestHeader::GetBearers () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   386
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   387
  return m_erabsToBeSetupList;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   388
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   389
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   390
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   391
EpcX2HandoverRequestHeader::SetBearers (std::vector <EpcX2Sap::ErabToBeSetupItem> bearers)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   392
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   393
  m_headerLength += 48 * bearers.size ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   394
  m_erabsToBeSetupList = bearers;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   395
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   396
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   397
uint64_t
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   398
EpcX2HandoverRequestHeader::GetUeAggregateMaxBitRateDownlink () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   399
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   400
  return m_ueAggregateMaxBitRateDownlink;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   401
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   402
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   403
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   404
EpcX2HandoverRequestHeader::SetUeAggregateMaxBitRateDownlink (uint64_t bitRate)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   405
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   406
  m_ueAggregateMaxBitRateDownlink = bitRate;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   407
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   408
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   409
uint64_t
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   410
EpcX2HandoverRequestHeader::GetUeAggregateMaxBitRateUplink () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   411
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   412
  return m_ueAggregateMaxBitRateUplink;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   413
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   414
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   415
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   416
EpcX2HandoverRequestHeader::SetUeAggregateMaxBitRateUplink (uint64_t bitRate)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   417
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   418
  m_ueAggregateMaxBitRateUplink = bitRate;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   419
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   420
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   421
uint32_t
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   422
EpcX2HandoverRequestHeader::GetLengthOfIes () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   423
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   424
  return m_headerLength;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   425
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   426
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   427
uint32_t
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   428
EpcX2HandoverRequestHeader::GetNumberOfIes () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   429
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   430
  return m_numberOfIes;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   431
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   432
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   433
/////////////////////////////////////////////////////////////////////
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   434
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   435
NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverRequestAckHeader);
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   436
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   437
EpcX2HandoverRequestAckHeader::EpcX2HandoverRequestAckHeader ()
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   438
  : m_numberOfIes (1 + 1 + 1 + 1),
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   439
    m_headerLength (2 + 2 + 4 + 4),
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   440
    m_oldEnbUeX2apId (0xfffa),
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   441
    m_newEnbUeX2apId (0xfffa)
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   442
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   443
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   444
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   445
EpcX2HandoverRequestAckHeader::~EpcX2HandoverRequestAckHeader ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   446
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   447
  m_numberOfIes = 0;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   448
  m_headerLength = 0;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   449
  m_oldEnbUeX2apId = 0xfffb;
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   450
  m_newEnbUeX2apId = 0xfffb;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   451
  m_erabsAdmittedList.clear ();
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   452
  m_erabsNotAdmittedList.clear ();
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   453
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   454
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   455
TypeId
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   456
EpcX2HandoverRequestAckHeader::GetTypeId (void)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   457
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   458
  static TypeId tid = TypeId ("ns3::EpcX2HandoverRequestAckHeader")
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   459
    .SetParent<Header> ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   460
    .AddConstructor<EpcX2HandoverRequestAckHeader> ()
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   461
  ;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   462
  return tid;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   463
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   464
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   465
TypeId
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   466
EpcX2HandoverRequestAckHeader::GetInstanceTypeId (void) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   467
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   468
  return GetTypeId ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   469
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   470
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   471
uint32_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   472
EpcX2HandoverRequestAckHeader::GetSerializedSize (void) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   473
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   474
  return m_headerLength;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   475
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   476
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   477
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   478
EpcX2HandoverRequestAckHeader::Serialize (Buffer::Iterator start) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   479
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   480
  Buffer::Iterator i = start;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   481
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   482
  i.WriteHtonU16 (m_oldEnbUeX2apId);
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   483
  i.WriteHtonU16 (m_newEnbUeX2apId);
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   484
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   485
  std::vector <EpcX2Sap::ErabAdmittedItem>::size_type sz = m_erabsAdmittedList.size (); 
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   486
  i.WriteHtonU32 (sz);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   487
  for (int j = 0; j < (int) sz; j++)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   488
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   489
      i.WriteHtonU16 (m_erabsAdmittedList [j].erabId);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   490
      i.WriteHtonU32 (m_erabsAdmittedList [j].ulGtpTeid);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   491
      i.WriteHtonU32 (m_erabsAdmittedList [j].dlGtpTeid);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   492
    }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   493
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   494
  std::vector <EpcX2Sap::ErabNotAdmittedItem>::size_type sz2 = m_erabsNotAdmittedList.size (); 
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   495
  i.WriteHtonU32 (sz2);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   496
  for (int j = 0; j < (int) sz2; j++)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   497
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   498
      i.WriteHtonU16 (m_erabsNotAdmittedList [j].erabId);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   499
      i.WriteHtonU16 (m_erabsNotAdmittedList [j].cause);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   500
    }
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   501
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   502
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   503
uint32_t
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   504
EpcX2HandoverRequestAckHeader::Deserialize (Buffer::Iterator start)
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   505
{
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   506
  Buffer::Iterator i = start;
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   507
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   508
  m_headerLength = 0;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   509
  m_numberOfIes = 0;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   510
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   511
  m_oldEnbUeX2apId = i.ReadNtohU16 ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   512
  m_newEnbUeX2apId = i.ReadNtohU16 ();
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   513
  m_headerLength += 4;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   514
  m_numberOfIes += 2;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   515
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   516
  int sz = i.ReadNtohU32 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   517
  m_headerLength += 4;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   518
  m_numberOfIes++;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   519
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   520
  for (int j = 0; j < sz; j++)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   521
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   522
      EpcX2Sap::ErabAdmittedItem erabItem;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   523
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   524
      erabItem.erabId = i.ReadNtohU16 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   525
      erabItem.ulGtpTeid = i.ReadNtohU32 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   526
      erabItem.dlGtpTeid = i.ReadNtohU32 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   527
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   528
      m_erabsAdmittedList.push_back (erabItem);
9502
70b34ab48f6e Fix header length of the HandoverRequestAck message
Manuel Requena <manuel.requena@cttc.es>
parents: 9480
diff changeset
   529
      m_headerLength += 10;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   530
    }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   531
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   532
  sz = i.ReadNtohU32 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   533
  m_headerLength += 4;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   534
  m_numberOfIes++;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   535
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   536
  for (int j = 0; j < sz; j++)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   537
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   538
      EpcX2Sap::ErabNotAdmittedItem erabItem;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   539
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   540
      erabItem.erabId = i.ReadNtohU16 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   541
      erabItem.cause  = i.ReadNtohU16 ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   542
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   543
      m_erabsNotAdmittedList.push_back (erabItem);
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   544
      m_headerLength += 4;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   545
    }
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   546
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   547
  return GetSerializedSize ();
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   548
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   549
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   550
void
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   551
EpcX2HandoverRequestAckHeader::Print (std::ostream &os) const
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   552
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   553
  os << "OldEnbUeX2apId=" << m_oldEnbUeX2apId;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   554
  os << " NewEnbUeX2apId=" << m_newEnbUeX2apId;
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   555
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   556
  os << " AdmittedBearers=" << m_erabsAdmittedList.size ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   557
  std::vector <EpcX2Sap::ErabAdmittedItem>::size_type sz = m_erabsAdmittedList.size ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   558
  if (sz > 0)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   559
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   560
      os << " [";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   561
    }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   562
  for (int j = 0; j < (int) sz; j++)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   563
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   564
      os << m_erabsAdmittedList[j].erabId;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   565
      if (j < (int) sz - 1)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   566
        {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   567
          os << ", ";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   568
        }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   569
      else
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   570
        {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   571
          os << "]";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   572
        }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   573
    }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   574
  
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   575
  os << " NotAdmittedBearers=" << m_erabsNotAdmittedList.size ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   576
  std::vector <EpcX2Sap::ErabNotAdmittedItem>::size_type sz2 = m_erabsNotAdmittedList.size ();
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   577
  if (sz2 > 0)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   578
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   579
      os << " [";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   580
    }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   581
  for (int j = 0; j < (int) sz2; j++)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   582
    {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   583
      os << m_erabsNotAdmittedList[j].erabId;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   584
      if (j < (int) sz2 - 1)
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   585
        {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   586
          os << ", ";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   587
        }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   588
      else
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   589
        {
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   590
          os << "]";
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   591
        }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   592
    }
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   593
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   594
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   595
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   596
uint16_t
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   597
EpcX2HandoverRequestAckHeader::GetOldEnbUeX2apId () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   598
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   599
  return m_oldEnbUeX2apId;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   600
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   601
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   602
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   603
EpcX2HandoverRequestAckHeader::SetOldEnbUeX2apId (uint16_t x2apId)
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   604
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   605
  m_oldEnbUeX2apId = x2apId;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   606
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   607
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   608
uint16_t
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   609
EpcX2HandoverRequestAckHeader::GetNewEnbUeX2apId () const
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   610
{
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   611
  return m_newEnbUeX2apId;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   612
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   613
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   614
void
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   615
EpcX2HandoverRequestAckHeader::SetNewEnbUeX2apId (uint16_t x2apId)
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   616
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   617
  m_newEnbUeX2apId = x2apId;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   618
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   619
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   620
std::vector <EpcX2Sap::ErabAdmittedItem> 
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   621
EpcX2HandoverRequestAckHeader::GetAdmittedBearers () const
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   622
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   623
  return m_erabsAdmittedList;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   624
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   625
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   626
void
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   627
EpcX2HandoverRequestAckHeader::SetAdmittedBearers (std::vector <EpcX2Sap::ErabAdmittedItem> bearers)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   628
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   629
  m_headerLength += 10 * bearers.size ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   630
  m_erabsAdmittedList = bearers;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   631
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   632
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   633
std::vector <EpcX2Sap::ErabNotAdmittedItem>
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   634
EpcX2HandoverRequestAckHeader::GetNotAdmittedBearers () const
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   635
{
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   636
  return m_erabsNotAdmittedList;
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   637
}
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   638
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   639
void
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   640
EpcX2HandoverRequestAckHeader::SetNotAdmittedBearers (std::vector <EpcX2Sap::ErabNotAdmittedItem> bearers)
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   641
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   642
  m_headerLength += 4 * bearers.size ();
9397
08dde5bce775 Add some IEs to the X2 message headers
Manuel Requena <manuel.requena@cttc.es>
parents: 9331
diff changeset
   643
  m_erabsNotAdmittedList = bearers;
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   644
}
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
   645
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   646
uint32_t
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   647
EpcX2HandoverRequestAckHeader::GetLengthOfIes () const
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   648
{
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   649
  return m_headerLength;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   650
}
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   651
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   652
uint32_t
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   653
EpcX2HandoverRequestAckHeader::GetNumberOfIes () const
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   654
{
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   655
  return m_numberOfIes;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   656
}
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   657
9404
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   658
/////////////////////////////////////////////////////////////////////
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   659
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   660
NS_OBJECT_ENSURE_REGISTERED (EpcX2HandoverPreparationFailureHeader);
9455
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   661
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   662
EpcX2HandoverPreparationFailureHeader::EpcX2HandoverPreparationFailureHeader ()
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   663
  : m_numberOfIes (1 + 1 + 1),
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   664
    m_headerLength (2 + 2 + 2),
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   665
    m_oldEnbUeX2apId (0xfffa),
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   666
    m_cause (0xfffa),
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   667
    m_criticalityDiagnostics (0xfffa)
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   668
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   669
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   670
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   671
EpcX2HandoverPreparationFailureHeader::~EpcX2HandoverPreparationFailureHeader ()
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   672
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   673
  m_numberOfIes = 0;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   674
  m_headerLength = 0;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   675
  m_oldEnbUeX2apId = 0xfffb;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   676
  m_cause = 0xfffb;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   677
  m_criticalityDiagnostics = 0xfffb;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   678
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   679
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   680
TypeId
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   681
EpcX2HandoverPreparationFailureHeader::GetTypeId (void)
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   682
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   683
  static TypeId tid = TypeId ("ns3::EpcX2HandoverPreparationFailureHeader")
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   684
    .SetParent<Header> ()
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   685
    .AddConstructor<EpcX2HandoverPreparationFailureHeader> ()
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   686
  ;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   687
  return tid;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   688
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   689
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   690
TypeId
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   691
EpcX2HandoverPreparationFailureHeader::GetInstanceTypeId (void) const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   692
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   693
  return GetTypeId ();
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   694
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   695
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   696
uint32_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   697
EpcX2HandoverPreparationFailureHeader::GetSerializedSize (void) const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   698
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   699
  return m_headerLength;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   700
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   701
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   702
void
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   703
EpcX2HandoverPreparationFailureHeader::Serialize (Buffer::Iterator start) const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   704
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   705
  Buffer::Iterator i = start;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   706
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   707
  i.WriteHtonU16 (m_oldEnbUeX2apId);
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   708
  i.WriteHtonU16 (m_cause);
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   709
  i.WriteHtonU16 (m_criticalityDiagnostics);
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   710
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   711
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   712
uint32_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   713
EpcX2HandoverPreparationFailureHeader::Deserialize (Buffer::Iterator start)
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   714
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   715
  Buffer::Iterator i = start;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   716
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   717
  m_oldEnbUeX2apId = i.ReadNtohU16 ();
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   718
  m_cause = i.ReadNtohU16 ();
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   719
  m_criticalityDiagnostics = i.ReadNtohU16 ();
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   720
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   721
  m_headerLength = 6;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   722
  m_numberOfIes = 3;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   723
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   724
  return GetSerializedSize ();
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   725
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   726
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   727
void
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   728
EpcX2HandoverPreparationFailureHeader::Print (std::ostream &os) const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   729
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   730
  os << "OldEnbUeX2apId = " << m_oldEnbUeX2apId;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   731
  os << " Cause = " << m_cause;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   732
  os << " CriticalityDiagnostics = " << m_criticalityDiagnostics;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   733
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   734
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   735
uint16_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   736
EpcX2HandoverPreparationFailureHeader::GetOldEnbUeX2apId () const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   737
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   738
  return m_oldEnbUeX2apId;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   739
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   740
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   741
void
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   742
EpcX2HandoverPreparationFailureHeader::SetOldEnbUeX2apId (uint16_t x2apId)
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   743
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   744
  m_oldEnbUeX2apId = x2apId;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   745
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   746
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   747
uint16_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   748
EpcX2HandoverPreparationFailureHeader::GetCause () const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   749
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   750
  return m_cause;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   751
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   752
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   753
void
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   754
EpcX2HandoverPreparationFailureHeader::SetCause (uint16_t cause)
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   755
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   756
  m_cause = cause;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   757
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   758
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   759
uint16_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   760
EpcX2HandoverPreparationFailureHeader::GetCriticalityDiagnostics () const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   761
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   762
  return m_criticalityDiagnostics;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   763
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   764
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   765
void
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   766
EpcX2HandoverPreparationFailureHeader::SetCriticalityDiagnostics (uint16_t criticalityDiagnostics)
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   767
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   768
  m_criticalityDiagnostics = criticalityDiagnostics;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   769
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   770
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   771
uint32_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   772
EpcX2HandoverPreparationFailureHeader::GetLengthOfIes () const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   773
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   774
  return m_headerLength;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   775
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   776
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   777
uint32_t
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   778
EpcX2HandoverPreparationFailureHeader::GetNumberOfIes () const
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   779
{
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   780
  return m_numberOfIes;
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   781
}
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   782
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   783
/////////////////////////////////////////////////////////////////////
9d73d503574d Add HandoverPreparationFailure X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9434
diff changeset
   784
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   785
NS_OBJECT_ENSURE_REGISTERED (EpcX2SnStatusTransferHeader);
9478
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   786
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   787
EpcX2SnStatusTransferHeader::EpcX2SnStatusTransferHeader ()
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   788
  : m_numberOfIes (3),
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   789
    m_headerLength (6),
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   790
    m_oldEnbUeX2apId (0xfffa),
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   791
    m_newEnbUeX2apId (0xfffa)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   792
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   793
  m_erabsSubjectToStatusTransferList.clear (); 
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   794
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   795
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   796
EpcX2SnStatusTransferHeader::~EpcX2SnStatusTransferHeader ()
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   797
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   798
  m_numberOfIes = 0;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   799
  m_headerLength = 0;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   800
  m_oldEnbUeX2apId = 0xfffb;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   801
  m_newEnbUeX2apId = 0xfffb;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   802
  m_erabsSubjectToStatusTransferList.clear (); 
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   803
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   804
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   805
TypeId
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   806
EpcX2SnStatusTransferHeader::GetTypeId (void)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   807
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   808
  static TypeId tid = TypeId ("ns3::EpcX2SnStatusTransferHeader")
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   809
    .SetParent<Header> ()
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   810
    .AddConstructor<EpcX2SnStatusTransferHeader> ()
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   811
  ;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   812
  return tid;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   813
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   814
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   815
TypeId
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   816
EpcX2SnStatusTransferHeader::GetInstanceTypeId (void) const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   817
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   818
  return GetTypeId ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   819
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   820
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   821
uint32_t
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   822
EpcX2SnStatusTransferHeader::GetSerializedSize (void) const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   823
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   824
  return m_headerLength;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   825
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   826
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   827
void
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   828
EpcX2SnStatusTransferHeader::Serialize (Buffer::Iterator start) const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   829
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   830
  Buffer::Iterator i = start;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   831
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   832
  i.WriteHtonU16 (m_oldEnbUeX2apId);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   833
  i.WriteHtonU16 (m_newEnbUeX2apId);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   834
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   835
  std::vector <EpcX2Sap::ErabsSubjectToStatusTransferItem>::size_type sz = m_erabsSubjectToStatusTransferList.size ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   836
  i.WriteHtonU16 (sz);              // number of ErabsSubjectToStatusTransferItems
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   837
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   838
  for (int j = 0; j < (int) sz; j++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   839
    {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   840
      EpcX2Sap::ErabsSubjectToStatusTransferItem item = m_erabsSubjectToStatusTransferList [j];
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   841
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   842
      i.WriteHtonU16 (item.erabId);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   843
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   844
      uint16_t bitsetSize = EpcX2Sap::m_maxPdcpSn / 64;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   845
      for (int k = 0; k < bitsetSize; k++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   846
        {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   847
          uint64_t statusValue = 0;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   848
          for (int m = 0; m < 64; m++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   849
            {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   850
              statusValue |= item.receiveStatusOfUlPdcpSdus[64 * k + m] << m;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   851
            }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   852
          i.WriteHtonU64 (statusValue);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   853
        }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   854
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   855
      i.WriteHtonU16 (item.ulPdcpSn);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   856
      i.WriteHtonU32 (item.ulHfn);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   857
      i.WriteHtonU16 (item.dlPdcpSn);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   858
      i.WriteHtonU32 (item.dlHfn);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   859
    }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   860
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   861
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   862
uint32_t
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   863
EpcX2SnStatusTransferHeader::Deserialize (Buffer::Iterator start)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   864
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   865
  Buffer::Iterator i = start;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   866
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   867
  m_oldEnbUeX2apId = i.ReadNtohU16 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   868
  m_newEnbUeX2apId = i.ReadNtohU16 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   869
  int sz = i.ReadNtohU16 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   870
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   871
  m_numberOfIes = 3;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   872
  m_headerLength = 6 + sz * (14 + (EpcX2Sap::m_maxPdcpSn / 64));
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   873
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   874
  for (int j = 0; j < sz; j++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   875
    {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   876
      EpcX2Sap::ErabsSubjectToStatusTransferItem ErabItem;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   877
      ErabItem.erabId = i.ReadNtohU16 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   878
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   879
      uint16_t bitsetSize = EpcX2Sap::m_maxPdcpSn / 64;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   880
      for (int k = 0; k < bitsetSize; k++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   881
        {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   882
          uint64_t statusValue = i.ReadNtohU64 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   883
          for (int m = 0; m < 64; m++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   884
            {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   885
              ErabItem.receiveStatusOfUlPdcpSdus[64 * k + m] = (statusValue >> m) & 1;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   886
            }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   887
        }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   888
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   889
      ErabItem.ulPdcpSn = i.ReadNtohU16 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   890
      ErabItem.ulHfn    = i.ReadNtohU32 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   891
      ErabItem.dlPdcpSn = i.ReadNtohU16 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   892
      ErabItem.dlHfn    = i.ReadNtohU32 ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   893
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   894
      m_erabsSubjectToStatusTransferList.push_back (ErabItem);
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   895
    }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   896
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   897
  return GetSerializedSize ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   898
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   899
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   900
void
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   901
EpcX2SnStatusTransferHeader::Print (std::ostream &os) const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   902
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   903
  os << "OldEnbUeX2apId = " << m_oldEnbUeX2apId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   904
  os << " NewEnbUeX2apId = " << m_newEnbUeX2apId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   905
  os << " ErabsSubjectToStatusTransferList size = " << m_erabsSubjectToStatusTransferList.size ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   906
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   907
  std::vector <EpcX2Sap::ErabsSubjectToStatusTransferItem>::size_type sz = m_erabsSubjectToStatusTransferList.size ();
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   908
  if (sz > 0)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   909
    {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   910
      os << " [";
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   911
    }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   912
  for (int j = 0; j < (int) sz; j++)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   913
    {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   914
      os << m_erabsSubjectToStatusTransferList[j].erabId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   915
      if (j < (int) sz - 1)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   916
        {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   917
          os << ", ";
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   918
        }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   919
      else
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   920
        {
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   921
          os << "]";
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   922
        }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   923
    }
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   924
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   925
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   926
uint16_t
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   927
EpcX2SnStatusTransferHeader::GetOldEnbUeX2apId () const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   928
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   929
  return m_oldEnbUeX2apId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   930
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   931
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   932
void
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   933
EpcX2SnStatusTransferHeader::SetOldEnbUeX2apId (uint16_t x2apId)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   934
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   935
  m_oldEnbUeX2apId = x2apId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   936
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   937
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   938
uint16_t
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   939
EpcX2SnStatusTransferHeader::GetNewEnbUeX2apId () const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   940
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   941
  return m_newEnbUeX2apId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   942
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   943
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   944
void
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   945
EpcX2SnStatusTransferHeader::SetNewEnbUeX2apId (uint16_t x2apId)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   946
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   947
  m_newEnbUeX2apId = x2apId;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   948
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   949
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   950
std::vector <EpcX2Sap::ErabsSubjectToStatusTransferItem>
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   951
EpcX2SnStatusTransferHeader::GetErabsSubjectToStatusTransferList () const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   952
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   953
  return m_erabsSubjectToStatusTransferList;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   954
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   955
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   956
void
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   957
EpcX2SnStatusTransferHeader::SetErabsSubjectToStatusTransferList (std::vector <EpcX2Sap::ErabsSubjectToStatusTransferItem> erabs)
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   958
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   959
  m_headerLength += erabs.size () * (14 + (EpcX2Sap::m_maxPdcpSn / 8));
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   960
  m_erabsSubjectToStatusTransferList = erabs;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   961
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   962
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   963
uint32_t
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   964
EpcX2SnStatusTransferHeader::GetLengthOfIes () const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   965
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   966
  return m_headerLength;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   967
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   968
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   969
uint32_t
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   970
EpcX2SnStatusTransferHeader::GetNumberOfIes () const
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   971
{
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   972
  return m_numberOfIes;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   973
}
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   974
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   975
/////////////////////////////////////////////////////////////////////
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
   976
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   977
NS_OBJECT_ENSURE_REGISTERED (EpcX2UeContextReleaseHeader);
9404
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   978
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   979
EpcX2UeContextReleaseHeader::EpcX2UeContextReleaseHeader ()
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   980
  : m_numberOfIes (1 + 1),
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   981
    m_headerLength (2 + 2),
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   982
    m_oldEnbUeX2apId (0xfffa),
9404
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   983
    m_newEnbUeX2apId (0xfffa)
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   984
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   985
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   986
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   987
EpcX2UeContextReleaseHeader::~EpcX2UeContextReleaseHeader ()
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   988
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   989
  m_numberOfIes = 0;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
   990
  m_headerLength = 0;
9404
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   991
  m_oldEnbUeX2apId = 0xfffb;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   992
  m_newEnbUeX2apId = 0xfffb;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   993
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   994
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   995
TypeId
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   996
EpcX2UeContextReleaseHeader::GetTypeId (void)
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   997
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   998
  static TypeId tid = TypeId ("ns3::EpcX2UeContextReleaseHeader")
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
   999
    .SetParent<Header> ()
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1000
    .AddConstructor<EpcX2UeContextReleaseHeader> ()
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1001
  ;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1002
  return tid;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1003
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1004
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1005
TypeId
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1006
EpcX2UeContextReleaseHeader::GetInstanceTypeId (void) const
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1007
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1008
  return GetTypeId ();
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1009
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1010
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1011
uint32_t
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1012
EpcX2UeContextReleaseHeader::GetSerializedSize (void) const
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1013
{
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1014
  return m_headerLength;
9404
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1015
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1016
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1017
void
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1018
EpcX2UeContextReleaseHeader::Serialize (Buffer::Iterator start) const
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1019
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1020
  Buffer::Iterator i = start;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1021
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1022
  i.WriteHtonU16 (m_oldEnbUeX2apId);
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1023
  i.WriteHtonU16 (m_newEnbUeX2apId);
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1024
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1025
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1026
uint32_t
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1027
EpcX2UeContextReleaseHeader::Deserialize (Buffer::Iterator start)
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1028
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1029
  Buffer::Iterator i = start;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1030
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1031
  m_oldEnbUeX2apId = i.ReadNtohU16 ();
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1032
  m_newEnbUeX2apId = i.ReadNtohU16 ();
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1033
  m_numberOfIes = 2;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1034
  m_headerLength = 4;
9404
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1035
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1036
  return GetSerializedSize ();
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1037
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1038
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1039
void
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1040
EpcX2UeContextReleaseHeader::Print (std::ostream &os) const
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1041
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1042
  os << "OldEnbUeX2apId=" << m_oldEnbUeX2apId;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1043
  os << " NewEnbUeX2apId=" << m_newEnbUeX2apId;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1044
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1045
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1046
uint16_t
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1047
EpcX2UeContextReleaseHeader::GetOldEnbUeX2apId () const
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1048
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1049
  return m_oldEnbUeX2apId;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1050
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1051
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1052
void
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1053
EpcX2UeContextReleaseHeader::SetOldEnbUeX2apId (uint16_t x2apId)
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1054
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1055
  m_oldEnbUeX2apId = x2apId;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1056
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1057
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1058
uint16_t
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1059
EpcX2UeContextReleaseHeader::GetNewEnbUeX2apId () const
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1060
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1061
  return m_newEnbUeX2apId;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1062
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1063
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1064
void
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1065
EpcX2UeContextReleaseHeader::SetNewEnbUeX2apId (uint16_t x2apId)
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1066
{
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1067
  m_newEnbUeX2apId = x2apId;
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1068
}
1f737f190823 Add UE Context Release X2 message
Manuel Requena <manuel.requena@cttc.es>
parents: 9397
diff changeset
  1069
9410
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1070
uint32_t
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1071
EpcX2UeContextReleaseHeader::GetLengthOfIes () const
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1072
{
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1073
  return m_headerLength;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1074
}
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1075
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1076
uint32_t
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1077
EpcX2UeContextReleaseHeader::GetNumberOfIes () const
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1078
{
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1079
  return m_numberOfIes;
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1080
}
fa212cd4e671 management of the bearers in the X2 messages
Manuel Requena <manuel.requena@cttc.es>
parents: 9404
diff changeset
  1081
9417
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1082
/////////////////////////////////
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1083
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
  1084
NS_OBJECT_ENSURE_REGISTERED (EpcX2LoadInformationHeader);
9417
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1085
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1086
EpcX2LoadInformationHeader::EpcX2LoadInformationHeader ()
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1087
  : m_numberOfIes (1),
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1088
    m_headerLength (6)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1089
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1090
  m_cellInformationList.clear ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1091
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1092
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1093
EpcX2LoadInformationHeader::~EpcX2LoadInformationHeader ()
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1094
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1095
  m_numberOfIes = 0;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1096
  m_headerLength = 0;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1097
  m_cellInformationList.clear ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1098
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1099
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1100
TypeId
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1101
EpcX2LoadInformationHeader::GetTypeId (void)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1102
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1103
  static TypeId tid = TypeId ("ns3::EpcX2LoadInformationHeader")
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1104
    .SetParent<Header> ()
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1105
    .AddConstructor<EpcX2LoadInformationHeader> ()
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1106
  ;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1107
  return tid;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1108
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1109
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1110
TypeId
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1111
EpcX2LoadInformationHeader::GetInstanceTypeId (void) const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1112
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1113
  return GetTypeId ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1114
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1115
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1116
uint32_t
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1117
EpcX2LoadInformationHeader::GetSerializedSize (void) const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1118
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1119
  return m_headerLength;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1120
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1121
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1122
void
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1123
EpcX2LoadInformationHeader::Serialize (Buffer::Iterator start) const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1124
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1125
  Buffer::Iterator i = start;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1126
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1127
  i.WriteHtonU16 (6);               // id = CELL_INFORMATION
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1128
  i.WriteU8 (1 << 6);               // criticality = IGNORE
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1129
  i.WriteU8 (4);                    // length of CELL_INFORMATION_ID
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1130
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1131
  std::vector <EpcX2Sap::CellInformationItem>::size_type sz = m_cellInformationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1132
  i.WriteHtonU16 (sz);              // number of cellInformationItems
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1133
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1134
  for (int j = 0; j < (int) sz; j++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1135
    {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1136
      i.WriteHtonU16 (m_cellInformationList [j].sourceCellId);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1137
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1138
      std::vector <EpcX2Sap::UlInterferenceOverloadIndicationItem>::size_type sz2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1139
      sz2 = m_cellInformationList [j].ulInterferenceOverloadIndicationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1140
      i.WriteHtonU16 (sz2);         // number of UlInterferenceOverloadIndicationItem
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1141
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1142
      for (int k = 0; k < (int) sz2; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1143
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1144
          i.WriteU8 (m_cellInformationList [j].ulInterferenceOverloadIndicationList [k]);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1145
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1146
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1147
      std::vector <EpcX2Sap::UlHighInterferenceInformationItem>::size_type sz3;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1148
      sz3 = m_cellInformationList [j].ulHighInterferenceInformationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1149
      i.WriteHtonU16 (sz3);         // number of UlHighInterferenceInformationItem
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1150
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1151
      for (int k = 0; k < (int) sz3; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1152
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1153
          i.WriteHtonU16 (m_cellInformationList [j].ulHighInterferenceInformationList [k].targetCellId);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1154
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1155
          std::vector <bool>::size_type sz4;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1156
          sz4 = m_cellInformationList [j].ulHighInterferenceInformationList [k].ulHighInterferenceIndicationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1157
          i.WriteHtonU16 (sz4);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1158
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1159
          for (int m = 0; m < (int) sz4; m++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1160
            {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1161
              i.WriteU8 (m_cellInformationList [j].ulHighInterferenceInformationList [k].ulHighInterferenceIndicationList [m]);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1162
            }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1163
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1164
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1165
      std::vector <bool>::size_type sz5;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1166
      sz5 = m_cellInformationList [j].relativeNarrowbandTxBand.rntpPerPrbList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1167
      i.WriteHtonU16 (sz5);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1168
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1169
      for (int k = 0; k < (int) sz5; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1170
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1171
          i.WriteU8 (m_cellInformationList [j].relativeNarrowbandTxBand.rntpPerPrbList [k]);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1172
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1173
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1174
      i.WriteHtonU16 (m_cellInformationList [j].relativeNarrowbandTxBand.rntpThreshold);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1175
      i.WriteHtonU16 (m_cellInformationList [j].relativeNarrowbandTxBand.antennaPorts);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1176
      i.WriteHtonU16 (m_cellInformationList [j].relativeNarrowbandTxBand.pB);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1177
      i.WriteHtonU16 (m_cellInformationList [j].relativeNarrowbandTxBand.pdcchInterferenceImpact);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1178
    }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1179
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1180
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1181
uint32_t
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1182
EpcX2LoadInformationHeader::Deserialize (Buffer::Iterator start)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1183
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1184
  Buffer::Iterator i = start;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1185
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1186
  m_headerLength = 0;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1187
  m_numberOfIes = 0;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1188
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1189
  i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1190
  i.ReadU8 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1191
  i.ReadU8 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1192
  int sz = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1193
  m_headerLength += 6;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1194
  m_numberOfIes++;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1195
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1196
  for (int j = 0; j < sz; j++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1197
    {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1198
      EpcX2Sap::CellInformationItem cellInfoItem;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1199
      cellInfoItem.sourceCellId = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1200
      m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1201
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1202
      int sz2 = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1203
      m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1204
      for (int k = 0; k < sz2; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1205
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1206
          EpcX2Sap::UlInterferenceOverloadIndicationItem item = (EpcX2Sap::UlInterferenceOverloadIndicationItem) i.ReadU8 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1207
          cellInfoItem.ulInterferenceOverloadIndicationList.push_back (item);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1208
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1209
      m_headerLength += sz2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1210
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1211
      int sz3 = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1212
      m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1213
      for (int k = 0; k < sz3; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1214
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1215
          EpcX2Sap::UlHighInterferenceInformationItem item;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1216
          item.targetCellId = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1217
          m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1218
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1219
          int sz4 = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1220
          m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1221
          for (int m = 0; m < sz4; m++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1222
            {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1223
              item.ulHighInterferenceIndicationList.push_back (i.ReadU8 ());
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1224
            }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1225
          m_headerLength += sz4;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1226
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1227
          cellInfoItem.ulHighInterferenceInformationList.push_back (item);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1228
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1229
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1230
      int sz5 = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1231
      m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1232
      for (int k = 0; k < sz5; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1233
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1234
          cellInfoItem.relativeNarrowbandTxBand.rntpPerPrbList.push_back (i.ReadU8 ());
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1235
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1236
      m_headerLength += sz5;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1237
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1238
      cellInfoItem.relativeNarrowbandTxBand.rntpThreshold = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1239
      cellInfoItem.relativeNarrowbandTxBand.antennaPorts = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1240
      cellInfoItem.relativeNarrowbandTxBand.pB = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1241
      cellInfoItem.relativeNarrowbandTxBand.pdcchInterferenceImpact = i.ReadNtohU16 ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1242
      m_headerLength += 8;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1243
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1244
      m_cellInformationList.push_back (cellInfoItem);
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1245
    }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1246
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1247
  return GetSerializedSize ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1248
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1249
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1250
void
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1251
EpcX2LoadInformationHeader::Print (std::ostream &os) const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1252
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1253
  os << "NumOfCellInformationItems=" << m_cellInformationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1254
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1255
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1256
std::vector <EpcX2Sap::CellInformationItem>
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1257
EpcX2LoadInformationHeader::GetCellInformationList () const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1258
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1259
  return m_cellInformationList;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1260
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1261
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1262
void
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1263
EpcX2LoadInformationHeader::SetCellInformationList (std::vector <EpcX2Sap::CellInformationItem> cellInformationList)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1264
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1265
  m_cellInformationList = cellInformationList;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1266
  m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1267
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1268
  std::vector <EpcX2Sap::CellInformationItem>::size_type sz = m_cellInformationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1269
  for (int j = 0; j < (int) sz; j++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1270
    {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1271
      m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1272
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1273
      std::vector <EpcX2Sap::UlInterferenceOverloadIndicationItem>::size_type sz2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1274
      sz2 = m_cellInformationList [j].ulInterferenceOverloadIndicationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1275
      m_headerLength += 2 + sz2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1276
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1277
      std::vector <EpcX2Sap::UlHighInterferenceInformationItem>::size_type sz3;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1278
      sz3 = m_cellInformationList [j].ulHighInterferenceInformationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1279
      m_headerLength += 2;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1280
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1281
      for (int k = 0; k < (int) sz3; k++)
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1282
        {
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1283
          std::vector <bool>::size_type sz4;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1284
          sz4 = m_cellInformationList [j].ulHighInterferenceInformationList [k].ulHighInterferenceIndicationList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1285
          m_headerLength += 2 + 2 + sz4;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1286
        }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1287
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1288
      std::vector <bool>::size_type sz5;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1289
      sz5 = m_cellInformationList [j].relativeNarrowbandTxBand.rntpPerPrbList.size ();
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1290
      m_headerLength += 2 + sz5 + 8;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1291
    }
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1292
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1293
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1294
uint32_t
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1295
EpcX2LoadInformationHeader::GetLengthOfIes () const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1296
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1297
  return m_headerLength;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1298
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1299
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1300
uint32_t
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1301
EpcX2LoadInformationHeader::GetNumberOfIes () const
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1302
{
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1303
  return m_numberOfIes;
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1304
}
dc76cb60379a Add Load Informatin X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9410
diff changeset
  1305
9434
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1306
////////////////
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1307
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
  1308
NS_OBJECT_ENSURE_REGISTERED (EpcX2ResourceStatusUpdateHeader);
9434
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1309
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1310
EpcX2ResourceStatusUpdateHeader::EpcX2ResourceStatusUpdateHeader ()
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1311
  : m_numberOfIes (3),
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1312
    m_headerLength (6),
9478
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
  1313
    m_enb1MeasurementId (0xfffa),
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
  1314
    m_enb2MeasurementId (0xfffa)
9434
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1315
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1316
  m_cellMeasurementResultList.clear ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1317
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1318
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1319
EpcX2ResourceStatusUpdateHeader::~EpcX2ResourceStatusUpdateHeader ()
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1320
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1321
  m_numberOfIes = 0;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1322
  m_headerLength = 0;
9478
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
  1323
  m_enb1MeasurementId = 0xfffb;
f17713be49a3 Add SnStatusTransfer X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9455
diff changeset
  1324
  m_enb2MeasurementId = 0xfffb;
9434
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1325
  m_cellMeasurementResultList.clear ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1326
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1327
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1328
TypeId
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1329
EpcX2ResourceStatusUpdateHeader::GetTypeId (void)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1330
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1331
  static TypeId tid = TypeId ("ns3::EpcX2ResourceStatusUpdateHeader")
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1332
    .SetParent<Header> ()
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1333
    .AddConstructor<EpcX2ResourceStatusUpdateHeader> ()
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1334
  ;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1335
  return tid;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1336
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1337
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1338
TypeId
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1339
EpcX2ResourceStatusUpdateHeader::GetInstanceTypeId (void) const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1340
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1341
  return GetTypeId ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1342
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1343
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1344
uint32_t
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1345
EpcX2ResourceStatusUpdateHeader::GetSerializedSize (void) const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1346
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1347
  return m_headerLength;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1348
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1349
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1350
void
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1351
EpcX2ResourceStatusUpdateHeader::Serialize (Buffer::Iterator start) const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1352
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1353
  Buffer::Iterator i = start;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1354
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1355
  i.WriteHtonU16 (m_enb1MeasurementId);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1356
  i.WriteHtonU16 (m_enb2MeasurementId);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1357
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1358
  std::vector <EpcX2Sap::CellMeasurementResultItem>::size_type sz = m_cellMeasurementResultList.size ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1359
  i.WriteHtonU16 (sz);              // number of CellMeasurementResultItem
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1360
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1361
  for (int j = 0; j < (int) sz; j++)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1362
    {
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1363
      EpcX2Sap::CellMeasurementResultItem item = m_cellMeasurementResultList [j];
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1364
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1365
      i.WriteHtonU16 (item.sourceCellId);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1366
      i.WriteU8 (item.dlHardwareLoadIndicator);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1367
      i.WriteU8 (item.ulHardwareLoadIndicator);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1368
      i.WriteU8 (item.dlS1TnlLoadIndicator);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1369
      i.WriteU8 (item.ulS1TnlLoadIndicator);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1370
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1371
      i.WriteHtonU16 (item.dlGbrPrbUsage);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1372
      i.WriteHtonU16 (item.ulGbrPrbUsage);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1373
      i.WriteHtonU16 (item.dlNonGbrPrbUsage);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1374
      i.WriteHtonU16 (item.ulNonGbrPrbUsage);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1375
      i.WriteHtonU16 (item.dlTotalPrbUsage);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1376
      i.WriteHtonU16 (item.ulTotalPrbUsage);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1377
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1378
      i.WriteHtonU16 (item.dlCompositeAvailableCapacity.cellCapacityClassValue);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1379
      i.WriteHtonU16 (item.dlCompositeAvailableCapacity.capacityValue);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1380
      i.WriteHtonU16 (item.ulCompositeAvailableCapacity.cellCapacityClassValue);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1381
      i.WriteHtonU16 (item.ulCompositeAvailableCapacity.capacityValue);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1382
    }
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1383
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1384
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1385
uint32_t
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1386
EpcX2ResourceStatusUpdateHeader::Deserialize (Buffer::Iterator start)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1387
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1388
  Buffer::Iterator i = start;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1389
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1390
  m_enb1MeasurementId = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1391
  m_enb2MeasurementId = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1392
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1393
  int sz = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1394
  for (int j = 0; j < sz; j++)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1395
    {
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1396
      EpcX2Sap::CellMeasurementResultItem item;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1397
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1398
      item.sourceCellId = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1399
      item.dlHardwareLoadIndicator = (EpcX2Sap::LoadIndicator) i.ReadU8 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1400
      item.ulHardwareLoadIndicator = (EpcX2Sap::LoadIndicator) i.ReadU8 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1401
      item.dlS1TnlLoadIndicator = (EpcX2Sap::LoadIndicator) i.ReadU8 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1402
      item.ulS1TnlLoadIndicator = (EpcX2Sap::LoadIndicator) i.ReadU8 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1403
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1404
      item.dlGbrPrbUsage = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1405
      item.ulGbrPrbUsage = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1406
      item.dlNonGbrPrbUsage = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1407
      item.ulNonGbrPrbUsage = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1408
      item.dlTotalPrbUsage = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1409
      item.ulTotalPrbUsage = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1410
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1411
      item.dlCompositeAvailableCapacity.cellCapacityClassValue = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1412
      item.dlCompositeAvailableCapacity.capacityValue = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1413
      item.ulCompositeAvailableCapacity.cellCapacityClassValue = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1414
      item.ulCompositeAvailableCapacity.capacityValue = i.ReadNtohU16 ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1415
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1416
      m_cellMeasurementResultList.push_back (item);
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1417
    }
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1418
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1419
  m_headerLength = 6 + sz * 26;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1420
  m_numberOfIes = 3;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1421
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1422
  return GetSerializedSize ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1423
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1424
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1425
void
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1426
EpcX2ResourceStatusUpdateHeader::Print (std::ostream &os) const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1427
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1428
  os << "Enb1MeasurementId = " << m_enb1MeasurementId
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1429
     << " Enb2MeasurementId = " << m_enb2MeasurementId
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1430
     << " NumOfCellMeasurementResultItems = " << m_cellMeasurementResultList.size ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1431
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1432
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1433
uint16_t
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1434
EpcX2ResourceStatusUpdateHeader::GetEnb1MeasurementId () const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1435
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1436
  return m_enb1MeasurementId;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1437
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1438
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1439
void
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1440
EpcX2ResourceStatusUpdateHeader::SetEnb1MeasurementId (uint16_t enb1MeasurementId)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1441
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1442
  m_enb1MeasurementId = enb1MeasurementId;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1443
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1444
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1445
uint16_t
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1446
EpcX2ResourceStatusUpdateHeader::GetEnb2MeasurementId () const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1447
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1448
  return m_enb2MeasurementId;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1449
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1450
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1451
void
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1452
EpcX2ResourceStatusUpdateHeader::SetEnb2MeasurementId (uint16_t enb2MeasurementId)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1453
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1454
  m_enb2MeasurementId = enb2MeasurementId;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1455
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1456
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1457
std::vector <EpcX2Sap::CellMeasurementResultItem>
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1458
EpcX2ResourceStatusUpdateHeader::GetCellMeasurementResultList () const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1459
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1460
  return m_cellMeasurementResultList;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1461
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1462
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1463
void
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1464
EpcX2ResourceStatusUpdateHeader::SetCellMeasurementResultList (std::vector <EpcX2Sap::CellMeasurementResultItem> cellMeasurementResultList)
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1465
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1466
  m_cellMeasurementResultList = cellMeasurementResultList;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1467
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1468
  std::vector <EpcX2Sap::CellMeasurementResultItem>::size_type sz = m_cellMeasurementResultList.size ();
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1469
  m_headerLength += sz * 26;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1470
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1471
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1472
uint32_t
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1473
EpcX2ResourceStatusUpdateHeader::GetLengthOfIes () const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1474
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1475
  return m_headerLength;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1476
}
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1477
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1478
uint32_t
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1479
EpcX2ResourceStatusUpdateHeader::GetNumberOfIes () const
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1480
{
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1481
  return m_numberOfIes;
6c3ce4dbad56 Add ResourceStatusUpdate X2 message header
Manuel Requena <manuel.requena@cttc.es>
parents: 9417
diff changeset
  1482
}
9331
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
  1483
6db5b873966c Add draft of X2AP protocol
Manuel Requena <manuel.requena@cttc.es>
parents:
diff changeset
  1484
} // namespace ns3