src/lte/model/lte-rrc-protocol-ideal.cc
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Fri, 26 Sep 2014 15:51:00 -0700
changeset 10968 2d29fee2b7b8
parent 10680 ace43d9baa17
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:
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     2
/*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     4
 *
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     8
 *
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    13
 *
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    17
 *
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    19
 */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    20
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    21
#include <ns3/fatal-error.h>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    22
#include <ns3/log.h>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    23
#include <ns3/nstime.h>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    24
#include <ns3/node-list.h>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    25
#include <ns3/node.h>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    26
#include <ns3/simulator.h>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    27
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    28
#include "lte-rrc-protocol-ideal.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    29
#include "lte-ue-rrc.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    30
#include "lte-enb-rrc.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    31
#include "lte-enb-net-device.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    32
#include "lte-ue-net-device.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    33
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    34
namespace ns3 {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    35
10968
2d29fee2b7b8 [Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10680
diff changeset
    36
NS_LOG_COMPONENT_DEFINE ("LteRrcProtocolIdeal");
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    37
10680
ace43d9baa17 make various implementation-specific tables static const.
Andrey Mazo <ahippo@yandex.com>
parents: 10652
diff changeset
    38
static const Time RRC_IDEAL_MSG_DELAY = MilliSeconds (0);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    39
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
    40
NS_OBJECT_ENSURE_REGISTERED (LteUeRrcProtocolIdeal);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    41
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    42
LteUeRrcProtocolIdeal::LteUeRrcProtocolIdeal ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    43
  :  m_ueRrcSapProvider (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    44
     m_enbRrcSapProvider (0)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    45
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    46
  m_ueRrcSapUser = new MemberLteUeRrcSapUser<LteUeRrcProtocolIdeal> (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    47
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    48
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    49
LteUeRrcProtocolIdeal::~LteUeRrcProtocolIdeal ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    50
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    51
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    52
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    53
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    54
LteUeRrcProtocolIdeal::DoDispose ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    55
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    56
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    57
  delete m_ueRrcSapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    58
  m_rrc = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    59
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    60
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    61
TypeId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    62
LteUeRrcProtocolIdeal::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    63
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    64
  static TypeId tid = TypeId ("ns3::LteUeRrcProtocolIdeal")
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    65
    .SetParent<Object> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    66
    .AddConstructor<LteUeRrcProtocolIdeal> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    67
    ;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    68
  return tid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    69
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    70
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    71
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    72
LteUeRrcProtocolIdeal::SetLteUeRrcSapProvider (LteUeRrcSapProvider* p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    73
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    74
  m_ueRrcSapProvider = p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    75
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    76
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    77
LteUeRrcSapUser* 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    78
LteUeRrcProtocolIdeal::GetLteUeRrcSapUser ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    79
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    80
  return m_ueRrcSapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    81
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    82
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    83
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    84
LteUeRrcProtocolIdeal::SetUeRrc (Ptr<LteUeRrc> rrc)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    85
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    86
  m_rrc = rrc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    87
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    88
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    89
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    90
LteUeRrcProtocolIdeal::DoSetup (LteUeRrcSapUser::SetupParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    91
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    92
  NS_LOG_FUNCTION (this);
9621
dd508a2efdb2 removed obsolete LteUeRrcSap::Reestablish ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
    93
  // We don't care about SRB0/SRB1 since we use ideal RRC messages.
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    94
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    95
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    96
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    97
LteUeRrcProtocolIdeal::DoSendRrcConnectionRequest (LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    98
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    99
  // initialize the RNTI and get the EnbLteRrcSapProvider for the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   100
  // eNB we are currently attached to
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   101
  m_rnti = m_rrc->GetRnti ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   102
  SetEnbRrcSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   103
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   104
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   105
                       &LteEnbRrcSapProvider::RecvRrcConnectionRequest,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   106
                       m_enbRrcSapProvider,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   107
                       m_rnti, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   108
                       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   109
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   110
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   111
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   112
LteUeRrcProtocolIdeal::DoSendRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   113
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   114
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   115
		       &LteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   116
                       m_enbRrcSapProvider,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   117
		       m_rnti, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   118
		       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   119
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   120
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   121
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   122
LteUeRrcProtocolIdeal::DoSendRrcConnectionReconfigurationCompleted (LteRrcSap::RrcConnectionReconfigurationCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   123
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   124
  // re-initialize the RNTI and get the EnbLteRrcSapProvider for the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   125
  // eNB we are currently attached to
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   126
  m_rnti = m_rrc->GetRnti ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   127
  SetEnbRrcSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   128
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   129
   Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   130
                        &LteEnbRrcSapProvider::RecvRrcConnectionReconfigurationCompleted,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   131
                        m_enbRrcSapProvider,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   132
                        m_rnti, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   133
                        msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   134
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   135
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   136
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   137
LteUeRrcProtocolIdeal::DoSendRrcConnectionReestablishmentRequest (LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   138
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   139
   Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   140
		       &LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   141
                       m_enbRrcSapProvider,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   142
		       m_rnti, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   143
                        msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   144
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   145
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   146
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   147
LteUeRrcProtocolIdeal::DoSendRrcConnectionReestablishmentComplete (LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   148
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   149
   Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   150
		       &LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplete,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   151
                       m_enbRrcSapProvider,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   152
		       m_rnti, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   153
msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   154
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   155
9601
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   156
void 
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   157
LteUeRrcProtocolIdeal::DoSendMeasurementReport (LteRrcSap::MeasurementReport msg)
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   158
{
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   159
   Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   160
                        &LteEnbRrcSapProvider::RecvMeasurementReport,
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   161
                        m_enbRrcSapProvider,
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   162
                        m_rnti, 
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   163
                        msg);
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9510
diff changeset
   164
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   165
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   166
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   167
LteUeRrcProtocolIdeal::SetEnbRrcSapProvider ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   168
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   169
  uint16_t cellId = m_rrc->GetCellId ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   170
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   171
  // walk list of all nodes to get the peer eNB
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   172
  Ptr<LteEnbNetDevice> enbDev;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   173
  NodeList::Iterator listEnd = NodeList::End ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   174
  bool found = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   175
  for (NodeList::Iterator i = NodeList::Begin (); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   176
       (i != listEnd) && (!found); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   177
       ++i)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   178
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   179
      Ptr<Node> node = *i;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   180
      int nDevs = node->GetNDevices ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   181
      for (int j = 0; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   182
           (j < nDevs) && (!found);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   183
           j++)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   184
        {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   185
          enbDev = node->GetDevice (j)->GetObject <LteEnbNetDevice> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   186
          if (enbDev == 0)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   187
            {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   188
              continue;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   189
            }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   190
          else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   191
            {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   192
              if (enbDev->GetCellId () == cellId)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   193
                {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   194
                  found = true;          
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   195
                  break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   196
                }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   197
            }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   198
        }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   199
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   200
  NS_ASSERT_MSG (found, " Unable to find eNB with CellId =" << cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   201
  m_enbRrcSapProvider = enbDev->GetRrc ()->GetLteEnbRrcSapProvider ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   202
  Ptr<LteEnbRrcProtocolIdeal> enbRrcProtocolIdeal = enbDev->GetRrc ()->GetObject<LteEnbRrcProtocolIdeal> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   203
  enbRrcProtocolIdeal->SetUeRrcSapProvider (m_rnti, m_ueRrcSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   204
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   205
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   206
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   207
NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolIdeal);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   208
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   209
LteEnbRrcProtocolIdeal::LteEnbRrcProtocolIdeal ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   210
  :  m_enbRrcSapProvider (0)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   211
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   212
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   213
  m_enbRrcSapUser = new MemberLteEnbRrcSapUser<LteEnbRrcProtocolIdeal> (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   214
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   215
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   216
LteEnbRrcProtocolIdeal::~LteEnbRrcProtocolIdeal ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   217
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   218
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   219
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   220
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   221
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   222
LteEnbRrcProtocolIdeal::DoDispose ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   223
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   224
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   225
  delete m_enbRrcSapUser;  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   226
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   227
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   228
TypeId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   229
LteEnbRrcProtocolIdeal::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   230
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   231
  static TypeId tid = TypeId ("ns3::LteEnbRrcProtocolIdeal")
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   232
    .SetParent<Object> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   233
    .AddConstructor<LteEnbRrcProtocolIdeal> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   234
    ;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   235
  return tid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   236
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   237
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   238
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   239
LteEnbRrcProtocolIdeal::SetLteEnbRrcSapProvider (LteEnbRrcSapProvider* p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   240
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   241
  m_enbRrcSapProvider = p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   242
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   243
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   244
LteEnbRrcSapUser* 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   245
LteEnbRrcProtocolIdeal::GetLteEnbRrcSapUser ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   246
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   247
  return m_enbRrcSapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   248
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   249
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   250
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   251
LteEnbRrcProtocolIdeal::SetCellId (uint16_t cellId)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   252
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   253
  m_cellId = cellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   254
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   255
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   256
LteUeRrcSapProvider* 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   257
LteEnbRrcProtocolIdeal::GetUeRrcSapProvider (uint16_t rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   258
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   259
  std::map<uint16_t, LteUeRrcSapProvider*>::const_iterator it;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   260
  it = m_enbRrcSapProviderMap.find (rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   261
  NS_ASSERT_MSG (it != m_enbRrcSapProviderMap.end (), "could not find RNTI = " << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   262
  return it->second;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   263
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   264
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   265
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   266
LteEnbRrcProtocolIdeal::SetUeRrcSapProvider (uint16_t rnti, LteUeRrcSapProvider* p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   267
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   268
  std::map<uint16_t, LteUeRrcSapProvider*>::iterator it;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   269
  it = m_enbRrcSapProviderMap.find (rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   270
  NS_ASSERT_MSG (it != m_enbRrcSapProviderMap.end (), "could not find RNTI = " << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   271
  it->second = p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   272
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   273
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   274
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   275
LteEnbRrcProtocolIdeal::DoSetupUe (uint16_t rnti, LteEnbRrcSapUser::SetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   276
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   277
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   278
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   279
  // // walk list of all nodes to get the peer UE RRC SAP Provider
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   280
  // Ptr<LteUeRrc> ueRrc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   281
  // NodeList::Iterator listEnd = NodeList::End ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   282
  // bool found = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   283
  // for (NodeList::Iterator i = NodeList::Begin (); (i != listEnd) && (found == false); i++)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   284
  //   {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   285
  //     Ptr<Node> node = *i;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   286
  //     int nDevs = node->GetNDevices ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   287
  //     for (int j = 0; j < nDevs; j++)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   288
  //       {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   289
  //         Ptr<LteUeNetDevice> ueDev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   290
  //         if (!ueDev)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   291
  //           {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   292
  //             continue;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   293
  //           }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   294
  //         else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   295
  //           {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   296
  //             ueRrc = ueDev->GetRrc ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   297
  //             if ((ueRrc->GetRnti () == rnti) && (ueRrc->GetCellId () == m_cellId))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   298
  //               {                 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   299
  //       	  found = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   300
  //       	  break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   301
  //               }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   302
  //           }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   303
  //       }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   304
  //   }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   305
  // NS_ASSERT_MSG (found , " Unable to find UE with RNTI=" << rnti << " cellId=" << m_cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   306
  // m_enbRrcSapProviderMap[rnti] = ueRrc->GetLteUeRrcSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   307
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   308
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   309
  // just create empty entry, the UeRrcSapProvider will be set by the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   310
  // ue upon connection request or connection reconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   311
  // completed 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   312
  m_enbRrcSapProviderMap[rnti] = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   313
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   314
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   315
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   316
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   317
LteEnbRrcProtocolIdeal::DoRemoveUe (uint16_t rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   318
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   319
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   320
  m_enbRrcSapProviderMap.erase (rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   321
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   322
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   323
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   324
LteEnbRrcProtocolIdeal::DoSendSystemInformation (LteRrcSap::SystemInformation msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   325
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   326
  NS_LOG_FUNCTION (this << m_cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   327
  // walk list of all nodes to get UEs with this cellId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   328
  Ptr<LteUeRrc> ueRrc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   329
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   330
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   331
      Ptr<Node> node = *i;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   332
      int nDevs = node->GetNDevices ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   333
      for (int j = 0; j < nDevs; ++j)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   334
        {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   335
          Ptr<LteUeNetDevice> ueDev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   336
          if (ueDev != 0)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   337
            {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   338
              Ptr<LteUeRrc> ueRrc = ueDev->GetRrc ();              
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   339
              NS_LOG_LOGIC ("considering UE IMSI " << ueDev->GetImsi () << " that has cellId " << ueRrc->GetCellId ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   340
              if (ueRrc->GetCellId () == m_cellId)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   341
                {       
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   342
                  NS_LOG_LOGIC ("sending SI to IMSI " << ueDev->GetImsi ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   343
                  ueRrc->GetLteUeRrcSapProvider ()->RecvSystemInformation (msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   344
                  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   345
                                       &LteUeRrcSapProvider::RecvSystemInformation,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   346
                                       ueRrc->GetLteUeRrcSapProvider (), 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   347
                                       msg);          
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   348
                }             
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   349
            }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   350
        }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   351
    } 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   352
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   353
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   354
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   355
LteEnbRrcProtocolIdeal::DoSendRrcConnectionSetup (uint16_t rnti, LteRrcSap::RrcConnectionSetup msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   356
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   357
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   358
		       &LteUeRrcSapProvider::RecvRrcConnectionSetup,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   359
		       GetUeRrcSapProvider (rnti), 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   360
		       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   361
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   362
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   363
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   364
LteEnbRrcProtocolIdeal::DoSendRrcConnectionReconfiguration (uint16_t rnti, LteRrcSap::RrcConnectionReconfiguration msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   365
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   366
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   367
		       &LteUeRrcSapProvider::RecvRrcConnectionReconfiguration,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   368
		       GetUeRrcSapProvider (rnti), 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   369
		       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   370
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   371
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   372
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   373
LteEnbRrcProtocolIdeal::DoSendRrcConnectionReestablishment (uint16_t rnti, LteRrcSap::RrcConnectionReestablishment msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   374
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   375
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   376
		       &LteUeRrcSapProvider::RecvRrcConnectionReestablishment,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   377
		       GetUeRrcSapProvider (rnti), 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   378
		       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   379
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   380
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   381
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   382
LteEnbRrcProtocolIdeal::DoSendRrcConnectionReestablishmentReject (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentReject msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   383
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   384
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   385
		       &LteUeRrcSapProvider::RecvRrcConnectionReestablishmentReject,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   386
		       GetUeRrcSapProvider (rnti), 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   387
		       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   388
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   389
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   390
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   391
LteEnbRrcProtocolIdeal::DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::RrcConnectionRelease msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   392
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   393
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   394
		       &LteUeRrcSapProvider::RecvRrcConnectionRelease,
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   395
		       GetUeRrcSapProvider (rnti), 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   396
		       msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   397
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   398
9510
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   399
void 
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   400
LteEnbRrcProtocolIdeal::DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcConnectionReject msg)
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   401
{
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   402
  Simulator::Schedule (RRC_IDEAL_MSG_DELAY, 
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   403
		       &LteUeRrcSapProvider::RecvRrcConnectionReject,
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   404
		       GetUeRrcSapProvider (rnti), 
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   405
		       msg);
1f57ceb87c95 Add functions in SAP's to send/receive ConnRej msg.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9406
diff changeset
   406
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   407
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   408
/*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   409
 * The purpose of LteEnbRrcProtocolIdeal is to avoid encoding
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   410
 * messages. In order to do so, we need to have some form of encoding for
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   411
 * inter-node RRC messages like HandoverPreparationInfo and HandoverCommand. Doing so
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   412
 * directly is not practical (these messages includes a lot of
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   413
 * information elements, so encoding all of them would defeat the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   414
 * purpose of LteEnbRrcProtocolIdeal. The workaround is to store the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   415
 * actual message in a global map, so that then we can just encode the
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   416
 * key in a header and send that between eNBs over X2.
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   417
 * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   418
 */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   419
10680
ace43d9baa17 make various implementation-specific tables static const.
Andrey Mazo <ahippo@yandex.com>
parents: 10652
diff changeset
   420
static std::map<uint32_t, LteRrcSap::HandoverPreparationInfo> g_handoverPreparationInfoMsgMap;
ace43d9baa17 make various implementation-specific tables static const.
Andrey Mazo <ahippo@yandex.com>
parents: 10652
diff changeset
   421
static uint32_t g_handoverPreparationInfoMsgIdCounter = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   422
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   423
/*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   424
 * This header encodes the map key discussed above. We keep this
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   425
 * private since it should not be used outside this file.
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   426
 * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   427
 */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   428
class IdealHandoverPreparationInfoHeader : public Header
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   429
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   430
public:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   431
  uint32_t GetMsgId ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   432
  void SetMsgId (uint32_t id);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   433
  static TypeId GetTypeId (void);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   434
  virtual TypeId GetInstanceTypeId (void) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   435
  virtual void Print (std::ostream &os) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   436
  virtual uint32_t GetSerializedSize (void) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   437
  virtual void Serialize (Buffer::Iterator start) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   438
  virtual uint32_t Deserialize (Buffer::Iterator start);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   439
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   440
private:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   441
  uint32_t m_msgId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   442
};
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   443
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   444
uint32_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   445
IdealHandoverPreparationInfoHeader::GetMsgId ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   446
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   447
  return m_msgId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   448
}  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   449
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   450
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   451
IdealHandoverPreparationInfoHeader::SetMsgId (uint32_t id)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   452
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   453
  m_msgId = id;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   454
}  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   455
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   456
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   457
TypeId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   458
IdealHandoverPreparationInfoHeader::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   459
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   460
  static TypeId tid = TypeId ("ns3::IdealHandoverPreparationInfoHeader")
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   461
    .SetParent<Header> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   462
    .AddConstructor<IdealHandoverPreparationInfoHeader> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   463
  ;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   464
  return tid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   465
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   466
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   467
TypeId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   468
IdealHandoverPreparationInfoHeader::GetInstanceTypeId (void) const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   469
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   470
  return GetTypeId ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   471
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   472
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   473
void IdealHandoverPreparationInfoHeader::Print (std::ostream &os)  const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   474
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   475
  os << " msgId=" << m_msgId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   476
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   477
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   478
uint32_t IdealHandoverPreparationInfoHeader::GetSerializedSize (void) const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   479
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   480
  return 4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   481
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   482
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   483
void IdealHandoverPreparationInfoHeader::Serialize (Buffer::Iterator start) const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   484
{  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   485
  start.WriteU32 (m_msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   486
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   487
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   488
uint32_t IdealHandoverPreparationInfoHeader::Deserialize (Buffer::Iterator start)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   489
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   490
  m_msgId = start.ReadU32 ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   491
  return GetSerializedSize ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   492
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   493
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   494
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   495
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   496
Ptr<Packet> 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   497
LteEnbRrcProtocolIdeal::DoEncodeHandoverPreparationInformation (LteRrcSap::HandoverPreparationInfo msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   498
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   499
  uint32_t msgId = ++g_handoverPreparationInfoMsgIdCounter;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   500
  NS_ASSERT_MSG (g_handoverPreparationInfoMsgMap.find (msgId) == g_handoverPreparationInfoMsgMap.end (), "msgId " << msgId << " already in use");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   501
  NS_LOG_INFO (" encoding msgId = " << msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   502
  g_handoverPreparationInfoMsgMap.insert (std::pair<uint32_t, LteRrcSap::HandoverPreparationInfo> (msgId, msg));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   503
  IdealHandoverPreparationInfoHeader h;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   504
  h.SetMsgId (msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   505
  Ptr<Packet> p = Create<Packet> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   506
  p->AddHeader (h);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   507
  return p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   508
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   509
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   510
LteRrcSap::HandoverPreparationInfo 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   511
LteEnbRrcProtocolIdeal::DoDecodeHandoverPreparationInformation (Ptr<Packet> p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   512
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   513
  IdealHandoverPreparationInfoHeader h;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   514
  p->RemoveHeader (h);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   515
  uint32_t msgId = h.GetMsgId ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   516
  NS_LOG_INFO (" decoding msgId = " << msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   517
  std::map<uint32_t, LteRrcSap::HandoverPreparationInfo>::iterator it = g_handoverPreparationInfoMsgMap.find (msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   518
  NS_ASSERT_MSG (it != g_handoverPreparationInfoMsgMap.end (), "msgId " << msgId << " not found");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   519
  LteRrcSap::HandoverPreparationInfo msg = it->second;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   520
  g_handoverPreparationInfoMsgMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   521
  return msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   522
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   523
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   524
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   525
10680
ace43d9baa17 make various implementation-specific tables static const.
Andrey Mazo <ahippo@yandex.com>
parents: 10652
diff changeset
   526
static std::map<uint32_t, LteRrcSap::RrcConnectionReconfiguration> g_handoverCommandMsgMap;
ace43d9baa17 make various implementation-specific tables static const.
Andrey Mazo <ahippo@yandex.com>
parents: 10652
diff changeset
   527
static uint32_t g_handoverCommandMsgIdCounter = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   528
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   529
/*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   530
 * This header encodes the map key discussed above. We keep this
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   531
 * private since it should not be used outside this file.
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   532
 * 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   533
 */
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   534
class IdealHandoverCommandHeader : public Header
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   535
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   536
public:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   537
  uint32_t GetMsgId ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   538
  void SetMsgId (uint32_t id);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   539
  static TypeId GetTypeId (void);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   540
  virtual TypeId GetInstanceTypeId (void) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   541
  virtual void Print (std::ostream &os) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   542
  virtual uint32_t GetSerializedSize (void) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   543
  virtual void Serialize (Buffer::Iterator start) const;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   544
  virtual uint32_t Deserialize (Buffer::Iterator start);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   545
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   546
private:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   547
  uint32_t m_msgId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   548
};
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   549
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   550
uint32_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   551
IdealHandoverCommandHeader::GetMsgId ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   552
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   553
  return m_msgId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   554
}  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   555
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   556
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   557
IdealHandoverCommandHeader::SetMsgId (uint32_t id)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   558
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   559
  m_msgId = id;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   560
}  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   561
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   562
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   563
TypeId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   564
IdealHandoverCommandHeader::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   565
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   566
  static TypeId tid = TypeId ("ns3::IdealHandoverCommandHeader")
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   567
    .SetParent<Header> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   568
    .AddConstructor<IdealHandoverCommandHeader> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   569
  ;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   570
  return tid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   571
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   572
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   573
TypeId
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   574
IdealHandoverCommandHeader::GetInstanceTypeId (void) const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   575
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   576
  return GetTypeId ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   577
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   578
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   579
void IdealHandoverCommandHeader::Print (std::ostream &os)  const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   580
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   581
  os << " msgId=" << m_msgId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   582
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   583
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   584
uint32_t IdealHandoverCommandHeader::GetSerializedSize (void) const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   585
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   586
  return 4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   587
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   588
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   589
void IdealHandoverCommandHeader::Serialize (Buffer::Iterator start) const
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   590
{  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   591
  start.WriteU32 (m_msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   592
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   593
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   594
uint32_t IdealHandoverCommandHeader::Deserialize (Buffer::Iterator start)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   595
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   596
  m_msgId = start.ReadU32 ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   597
  return GetSerializedSize ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   598
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   599
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   600
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   601
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   602
Ptr<Packet> 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   603
LteEnbRrcProtocolIdeal::DoEncodeHandoverCommand (LteRrcSap::RrcConnectionReconfiguration msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   604
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   605
  uint32_t msgId = ++g_handoverCommandMsgIdCounter;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   606
  NS_ASSERT_MSG (g_handoverCommandMsgMap.find (msgId) == g_handoverCommandMsgMap.end (), "msgId " << msgId << " already in use");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   607
  NS_LOG_INFO (" encoding msgId = " << msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   608
  g_handoverCommandMsgMap.insert (std::pair<uint32_t, LteRrcSap::RrcConnectionReconfiguration> (msgId, msg));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   609
  IdealHandoverCommandHeader h;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   610
  h.SetMsgId (msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   611
  Ptr<Packet> p = Create<Packet> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   612
  p->AddHeader (h);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   613
  return p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   614
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   615
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   616
LteRrcSap::RrcConnectionReconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   617
LteEnbRrcProtocolIdeal::DoDecodeHandoverCommand (Ptr<Packet> p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   618
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   619
  IdealHandoverCommandHeader h;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   620
  p->RemoveHeader (h);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   621
  uint32_t msgId = h.GetMsgId ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   622
  NS_LOG_INFO (" decoding msgId = " << msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   623
  std::map<uint32_t, LteRrcSap::RrcConnectionReconfiguration>::iterator it = g_handoverCommandMsgMap.find (msgId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   624
  NS_ASSERT_MSG (it != g_handoverCommandMsgMap.end (), "msgId " << msgId << " not found");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   625
  LteRrcSap::RrcConnectionReconfiguration msg = it->second;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   626
  g_handoverCommandMsgMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   627
  return msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   628
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   629
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   630
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   631
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   632
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   633
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   634
} // namespace ns3