src/lte/model/lte-enb-rrc.cc
author Nicola Baldo <nbaldo@cttc.es>
Mon, 17 Dec 2012 19:52:41 +0100
changeset 9568 2ef7e29ee20d
parent 9567 6941db633724
child 9593 d1da1374c434
permissions -rw-r--r--
make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     2
/*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     4
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     7
 * published by the Free Software Foundation;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     8
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    12
 * GNU General Public License for more details.
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    13
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    17
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    19
 *         Marco Miozzo <mmiozzo@cttc.es>
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    20
 *         Manuel Requena <manuel.requena@cttc.es>
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    21
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    23
#include "ns3/fatal-error.h"
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    24
#include "ns3/log.h"
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    25
#include "ns3/abort.h"
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
    26
#include "ns3/pointer.h"
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    27
#include "ns3/object-map.h"
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    28
#include "ns3/object-factory.h"
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
    29
#include "ns3/simulator.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    31
#include "lte-enb-rrc.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    32
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    33
#include "lte-enb-net-device.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    34
#include "lte-radio-bearer-info.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    35
#include "eps-bearer-tag.h"
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    36
#include "ff-mac-csched-sap.h"
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    37
#include "epc-enb-s1-sap.h"
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    38
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
#include "lte-rlc.h"
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    40
#include "lte-rlc-tm.h"
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    41
#include "lte-rlc-um.h"
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    42
#include "lte-rlc-am.h"
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    43
#include "lte-pdcp.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    44
#include "lte-pdcp-sap.h"
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    45
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
    46
#include <ns3/simulator.h>
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
    47
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
    50
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
NS_LOG_COMPONENT_DEFINE ("LteEnbRrc");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    53
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
// CMAC SAP forwarder
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    59
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    60
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    61
class EnbRrcMemberLteEnbCmacSapUser : public LteEnbCmacSapUser
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    62
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    63
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    64
  EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    66
  virtual uint16_t AllocateTemporaryCellRnti ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
  virtual void NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success);
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
    68
  virtual void RrcConfigurationUpdateInd (UeConfig params);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    69
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
private:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
  LteEnbRrc* m_rrc;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    74
EnbRrcMemberLteEnbCmacSapUser::EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
  : m_rrc (rrc)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    79
uint16_t
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    80
EnbRrcMemberLteEnbCmacSapUser::AllocateTemporaryCellRnti ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    81
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    82
  return m_rrc->DoAllocateTemporaryCellRnti ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    83
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    84
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    86
EnbRrcMemberLteEnbCmacSapUser::NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    88
  m_rrc->DoNotifyLcConfigResult (rnti, lcid, success);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    91
void
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
    92
EnbRrcMemberLteEnbCmacSapUser::RrcConfigurationUpdateInd (UeConfig params)
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    93
{
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    94
  m_rrc->DoRrcConfigurationUpdateInd (params);
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    95
}
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    96
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    97
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    98
const char* g_ueManagerStateName[UeManager::NUM_STATES] = 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    99
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   100
    "INITIAL_RANDOM_ACCESS",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   101
    "CONNECTION_SETUP",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   102
    "CONNECTED_NORMALLY",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   103
    "CONNECTION_RECONFIGURATION",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   104
    "CONNECTION_REESTABLISHMENT",
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   105
    "HANDOVER_PREPARATION",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   106
    "HANDOVER_JOINING",
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   107
    "HANDOVER_PATH_SWITCH",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   108
    "HANDOVER_LEAVING",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   109
  };
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   110
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   111
std::string ToString (UeManager::State s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   112
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   113
  return std::string (g_ueManagerStateName[s]);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   114
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   115
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   116
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   117
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   118
///////////////////////////////////////////
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   119
// UeManager 
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   120
///////////////////////////////////////////
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   121
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   122
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   123
NS_OBJECT_ENSURE_REGISTERED (UeManager);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   124
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
   125
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   126
UeManager::UeManager ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   127
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   128
  NS_FATAL_ERROR ("this constructor is not espected to be used");
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   129
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   130
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   131
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   132
UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   133
  : m_lastAllocatedDrbid (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   134
    m_rnti (rnti),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   135
    m_imsi (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   136
    m_lastRrcTransactionIdentifier (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   137
    m_rrc (rrc),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   138
    m_state (s),
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   139
    m_pendingRrcConnectionReconfiguration (false),
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   140
    m_sourceX2apId (0),
9541
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   141
    m_sourceCellId (0),
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   142
    m_needTransmissionModeConfiguration (false)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   143
{ 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   144
  NS_LOG_FUNCTION (this);
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   145
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   146
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   147
void
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   148
UeManager::DoStart ()
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   149
{
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   150
  NS_LOG_FUNCTION (this);
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   151
  m_drbPdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<UeManager> (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   152
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   153
  m_physicalConfigDedicated.haveAntennaInfoDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   154
  m_physicalConfigDedicated.antennaInfo.transmissionMode = m_rrc->m_defaultTransmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   155
  m_physicalConfigDedicated.haveSoundingRsUlConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   156
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = m_rrc->GetNewSrsConfigurationIndex ();
9507
b3ae0b546cc4 Fix bug in UE phy with m_srsPeriodicity == 0
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9501
diff changeset
   157
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
9564
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   158
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   159
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   160
  m_rrc->m_cmacSapProvider->AddUe (m_rnti);
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   161
  m_rrc->m_cphySapProvider->AddUe (m_rnti);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   162
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   163
  // setup the eNB side of SRB0
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   164
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   165
    uint8_t lcid = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   166
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   167
    Ptr<LteRlc> rlc = CreateObject<LteRlcTm> ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   168
    rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   169
    rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   170
    rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   171
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   172
    m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   173
    m_srb0->m_rlc = rlc;
9473
8b420bd32318 reset MAC and reinitialize SRBs upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9472
diff changeset
   174
    m_srb0->m_srbIdentity = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   175
    // no need to store logicalChannelConfig as SRB0 is pre-configured
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   176
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   177
    LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   178
    lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   179
    lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   180
    // leave the rest of lcinfo empty as CCCH (LCID 0) is pre-configured
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   181
    m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   182
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   183
  }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   184
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   185
  // setup the eNB side of SRB1; the UE side will be set up upon RRC connection establishment
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   186
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   187
    uint8_t lcid = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   188
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   189
    Ptr<LteRlc> rlc = CreateObject<LteRlcAm> ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   190
    rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   191
    rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   192
    rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   193
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   194
    Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   195
    pdcp->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   196
    pdcp->SetLcId (lcid);
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   197
    pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   198
    pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   199
    rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   200
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   201
    m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   202
    m_srb1->m_rlc = rlc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   203
    m_srb1->m_pdcp = pdcp;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   204
    m_srb1->m_srbIdentity = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   205
    m_srb1->m_logicalChannelConfig.priority = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   206
    m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   207
    m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   208
    m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   209
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   210
    LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   211
    lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   212
    lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   213
    lcinfo.lcGroup = 0; // all SRBs always mapped to LCG 0
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   214
    lcinfo.qci = EpsBearer::GBR_CONV_VOICE; // not sure why the FF API requires a CQI even for SRBs...
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   215
    lcinfo.isGbr = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   216
    lcinfo.mbrUl = 1e6;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   217
    lcinfo.mbrDl = 1e6;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   218
    lcinfo.gbrUl = 1e4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   219
    lcinfo.gbrDl = 1e4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   220
    m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   221
  }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   222
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   223
  LteEnbRrcSapUser::SetupUeParameters ueParams;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   224
  ueParams.srb0SapProvider = m_srb0->m_rlc->GetLteRlcSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   225
  ueParams.srb1SapProvider = m_srb1->m_pdcp->GetLtePdcpSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   226
  m_rrc->m_rrcSapUser->SetupUe (m_rnti, ueParams);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   227
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   228
  // configure MAC (and scheduler)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   229
  LteEnbCmacSapProvider::UeConfig req;
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   230
  req.m_rnti = m_rnti;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   231
  req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   232
  m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   233
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   234
  // configure PHY
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   235
  m_rrc->m_cphySapProvider->SetTransmissionMode (m_rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   236
  m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (m_rnti, m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex);
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   237
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   238
  // schedule this UeManager instance to be deleted if the UE does not give any sign of life within a reasonable time
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   239
  Time maxConnectionDelay;
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   240
  switch (m_state)
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   241
    {
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   242
    case INITIAL_RANDOM_ACCESS:
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   243
      // must account for reception of RAR and transmission of RRC CONNECTION REQUEST over UL GRANT
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   244
      maxConnectionDelay = MilliSeconds (15); 
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   245
      break;
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   246
    case HANDOVER_JOINING:
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   247
      // must account for reception of X2 HO REQ ACK by source eNB,
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   248
      // transmission of the Handover Command, and
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   249
      // non-contention-based random access
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   250
      maxConnectionDelay = MilliSeconds (50); 
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   251
      break;      
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   252
    default:
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   253
      NS_FATAL_ERROR ("unspecified maxConnectionDelay for state " << ToString (m_state));
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   254
      break;      
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   255
    }  
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   256
  m_connectionTimeout = Simulator::Schedule (maxConnectionDelay, &LteEnbRrc::ConnectionTimeout, m_rrc, m_rnti);
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   257
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   258
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   259
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   260
UeManager::~UeManager (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   261
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   262
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   263
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   264
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   265
UeManager::DoDispose ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   266
{
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   267
  delete m_drbPdcpSapUser;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   268
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   269
  m_rrc->m_cmacSapProvider->RemoveUe (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   270
  m_rrc->m_cphySapProvider->RemoveUe (m_rnti);
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   271
  if (m_rrc->m_s1SapProvider != 0)
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   272
    {
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   273
      m_rrc->m_s1SapProvider->UeContextRelease (m_rnti);
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   274
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   275
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   276
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   277
TypeId UeManager::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   278
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   279
  static TypeId  tid = TypeId ("ns3::UeManager")
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   280
    .SetParent<Object> ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   281
    .AddConstructor<UeManager> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   282
    .AddAttribute ("DataRadioBearerMap", "List of UE RadioBearerInfo by DRBID.",
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   283
                   ObjectMapValue (),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   284
                   MakeObjectMapAccessor (&UeManager::m_drbMap),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   285
                   MakeObjectMapChecker<LteDataRadioBearerInfo> ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   286
    .AddTraceSource ("StateTransition",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   287
                     "fired upon every UE state transition seen by the UeManager at the eNB RRC",
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   288
                     MakeTraceSourceAccessor (&UeManager::m_stateTransitionTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   289
    ;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   290
  return tid;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   291
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   292
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   293
void 
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   294
UeManager::SetSource (uint16_t sourceCellId, uint16_t sourceX2apId)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   295
{
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   296
  m_sourceX2apId = sourceX2apId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   297
  m_sourceCellId = sourceCellId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   298
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   299
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   300
void 
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   301
UeManager::SetImsi (uint64_t imsi)
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   302
{
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   303
  m_imsi = imsi;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   304
}
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   305
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   306
void
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   307
UeManager::SetupDataRadioBearer (EpsBearer bearer, uint8_t bearerId, uint32_t gtpTeid, Ipv4Address transportLayerAddress)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   308
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   309
  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   310
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   311
  Ptr<LteDataRadioBearerInfo> drbInfo = CreateObject<LteDataRadioBearerInfo> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   312
  uint8_t drbid = AddDataRadioBearerInfo (drbInfo);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   313
  uint8_t lcid = Drbid2Lcid (drbid); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   314
  uint8_t bid = Drbid2Bid (drbid);  
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   315
  NS_ASSERT_MSG ( bearerId == 0 || bid == bearerId, "bearer ID mismatch (" << (uint32_t) bid << " != " << (uint32_t) bearerId << ", the assumption that ID are allocated in the same way by MME and RRC is not valid any more");
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   316
  drbInfo->m_epsBearerIdentity = bid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   317
  drbInfo->m_drbIdentity = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   318
  drbInfo->m_logicalChannelIdentity = lcid;
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   319
  drbInfo->m_gtpTeid = gtpTeid;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   320
  drbInfo->m_transportLayerAddress = transportLayerAddress;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   321
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   322
  TypeId rlcTypeId = m_rrc->GetRlcType (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   323
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   324
  ObjectFactory rlcObjectFactory;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   325
  rlcObjectFactory.SetTypeId (rlcTypeId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   326
  Ptr<LteRlc> rlc = rlcObjectFactory.Create ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   327
  rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   328
  rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   329
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   330
  drbInfo->m_rlc = rlc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   331
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   332
  rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   333
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   334
  // we need PDCP only for real RLC, i.e., RLC/UM or RLC/AM
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   335
  // if we are using RLC/SM we don't care of anything above RLC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   336
  if (rlcTypeId != LteRlcSm::GetTypeId ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   337
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   338
      Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   339
      pdcp->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   340
      pdcp->SetLcId (lcid);
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   341
      pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   342
      pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   343
      rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   344
      drbInfo->m_pdcp = pdcp;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   345
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   346
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   347
  LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   348
  lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   349
  lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   350
  lcinfo.lcGroup = m_rrc->GetLogicalChannelGroup (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   351
  lcinfo.qci = bearer.qci;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   352
  lcinfo.isGbr = bearer.IsGbr ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   353
  lcinfo.mbrUl = bearer.gbrQosInfo.mbrUl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   354
  lcinfo.mbrDl = bearer.gbrQosInfo.mbrDl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   355
  lcinfo.gbrUl = bearer.gbrQosInfo.gbrUl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   356
  lcinfo.gbrDl = bearer.gbrQosInfo.gbrDl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   357
  m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   358
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   359
  if (drbInfo->m_rlc->GetTypeId () == LteRlcAm::GetTypeId ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   360
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   361
      drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::AM;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   362
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   363
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   364
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   365
      drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   366
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   367
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   368
  drbInfo->m_logicalChannelIdentity = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   369
  drbInfo->m_logicalChannelConfig.priority =  m_rrc->GetLogicalChannelPriority (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   370
  drbInfo->m_logicalChannelConfig.logicalChannelGroup = m_rrc->GetLogicalChannelGroup (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   371
  if (bearer.IsGbr ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   372
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   373
      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.gbrQosInfo.gbrUl;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   374
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   375
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   376
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   377
      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   378
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   379
  drbInfo->m_logicalChannelConfig.bucketSizeDurationMs = 1000;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   380
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   381
  ScheduleRrcConnectionReconfiguration ();
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   382
}
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   383
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   384
void
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   385
UeManager::RecordDataRadioBearersToBeStarted ()
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   386
{
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   387
  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   388
  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   389
       it != m_drbMap.end ();
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   390
       ++it)
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   391
    {
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   392
      m_drbsToBeStarted.push_back (it->first);
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   393
    }    
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   394
}
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   395
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   396
void
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   397
UeManager::StartDataRadioBearers ()
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   398
{
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   399
  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   400
  for (std::list <uint8_t>::iterator drbIdIt = m_drbsToBeStarted.begin ();
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   401
       drbIdIt != m_drbsToBeStarted.end ();
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   402
       ++drbIdIt)
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   403
    {
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   404
      std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt = m_drbMap.find (*drbIdIt);
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   405
      NS_ASSERT (drbIt != m_drbMap.end ());
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   406
      drbIt->second->m_rlc->Start ();
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   407
      if (drbIt->second->m_pdcp)
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   408
        {
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   409
          drbIt->second->m_pdcp->Start ();
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   410
        }
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   411
    }
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   412
  m_drbsToBeStarted.clear ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   413
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   414
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   415
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   416
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   417
UeManager::ReleaseDataRadioBearer (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   418
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   419
  NS_LOG_FUNCTION (this << (uint32_t) m_rnti << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   420
  uint8_t lcid = Drbid2Lcid (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   421
  std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   422
  NS_ASSERT_MSG (it != m_drbMap.end (), "request to remove radio bearer with unknown drbid " << drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   423
  m_drbMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   424
  m_rrc->m_cmacSapProvider->ReleaseLc (m_rnti, lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   425
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   426
  LteRrcSap::RadioResourceConfigDedicated rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   427
  rrcd.havePhysicalConfigDedicated = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   428
  rrcd.drbToReleaseList.push_back (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   429
 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   430
  LteRrcSap::RrcConnectionReconfiguration msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   431
  msg.haveMeasConfig = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   432
  msg.haveMobilityControlInfo = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   433
 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   434
  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   435
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   436
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   437
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   438
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   439
UeManager::ScheduleRrcConnectionReconfiguration ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   440
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   441
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   442
  switch (m_state)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   443
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   444
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   445
    case CONNECTION_SETUP:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   446
    case CONNECTION_RECONFIGURATION:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   447
    case CONNECTION_REESTABLISHMENT:
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   448
    case HANDOVER_PREPARATION:
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   449
    case HANDOVER_JOINING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   450
    case HANDOVER_LEAVING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   451
      // a previous reconfiguration still ongoing, we need to wait for it to be finished
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   452
      m_pendingRrcConnectionReconfiguration = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   453
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   454
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   455
    case CONNECTED_NORMALLY:      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   456
      {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   457
        m_pendingRrcConnectionReconfiguration = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   458
        LteRrcSap::RrcConnectionReconfiguration msg = BuildRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   459
        m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   460
        RecordDataRadioBearersToBeStarted ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   461
        SwitchToState (CONNECTION_RECONFIGURATION);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   462
      }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   463
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   464
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   465
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   466
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   467
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   468
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   469
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   470
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   471
void 
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   472
UeManager::PrepareHandover (uint16_t cellId)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   473
{  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   474
  NS_LOG_FUNCTION (this << cellId);  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   475
  switch (m_state)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   476
    {
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   477
    case CONNECTED_NORMALLY:      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   478
      {
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   479
        m_targetCellId = cellId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   480
        EpcX2SapProvider::HandoverRequestParams params;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   481
        params.oldEnbUeX2apId = m_rnti;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   482
        params.cause          = EpcX2SapProvider::HandoverDesirableForRadioReason;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   483
        params.sourceCellId   = m_rrc->m_cellId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   484
        params.targetCellId   = cellId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   485
        params.mmeUeS1apId    = m_imsi;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   486
        params.ueAggregateMaxBitRateDownlink = 200 * 1000;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   487
        params.ueAggregateMaxBitRateUplink = 100 * 1000;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   488
        params.bearers = GetErabList ();
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   489
  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   490
        LteRrcSap::HandoverPreparationInfo hpi;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   491
        hpi.asConfig.sourceUeIdentity = m_rnti;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   492
        hpi.asConfig.sourceDlCarrierFreq = m_rrc->m_dlEarfcn;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   493
        hpi.asConfig.sourceRadioResourceConfig = GetRadioResourceConfigForHandoverPreparationInfo ();
9564
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   494
        hpi.asConfig.sourceMasterInformationBlock.dlBandwidth = m_rrc->m_dlBandwidth;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   495
        hpi.asConfig.sourceMasterInformationBlock.systemFrameNumber = 0;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   496
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity = 0;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   497
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.cellIdentity = m_rrc->m_cellId;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   498
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication = 0;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   499
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity = 0;
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   500
        params.rrcContext = m_rrc->m_rrcSapUser->EncodeHandoverPreparationInformation (hpi);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   501
  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   502
        NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   503
        NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   504
        NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   505
        NS_LOG_LOGIC ("mmmUeS1apId = " << params.oldEnbUeX2apId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   506
        NS_LOG_LOGIC ("rrcContext   = " << params.rrcContext);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   507
  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   508
        m_rrc->m_x2SapProvider->SendHandoverRequest (params);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   509
        SwitchToState (HANDOVER_PREPARATION);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   510
      }
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   511
      break;      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   512
      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   513
    default:
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   514
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   515
      break;      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   516
    }
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   517
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   518
}
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   519
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   520
void 
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   521
UeManager::RecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   522
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   523
  NS_LOG_FUNCTION (this);
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   524
  
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   525
  NS_ASSERT_MSG (params.notAdmittedBearers.empty (), "not admission of some bearers upon handover is not supported");
9501
3c52c63f19fd check admittedBearers upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9500
diff changeset
   526
  NS_ASSERT_MSG (params.admittedBearers.size () == m_drbMap.size (), "not enough bearers in admittedBearers");
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   527
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   528
  // note: the Handover command from the target eNB to the source eNB
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   529
  // is expected to be sent transparently to the UE; however, here we
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   530
  // decode the message and eventually reencode it. This way we can
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   531
  // support both a real RRC protocol implementation and an ideal one
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   532
  // without actual RRC protocol encoding. 
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   533
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   534
  Ptr<Packet> encodedHandoverCommand = params.rrcContext;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   535
  LteRrcSap::RrcConnectionReconfiguration handoverCommand = m_rrc->m_rrcSapUser->DecodeHandoverCommand (encodedHandoverCommand);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   536
  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, handoverCommand);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   537
  SwitchToState (HANDOVER_LEAVING);
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   538
  NS_ASSERT (handoverCommand.haveMobilityControlInfo);  
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   539
  m_rrc->m_handoverStartTrace (m_imsi, m_rrc->m_cellId, m_rnti, handoverCommand.mobilityControlInfo.targetPhysCellId);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   540
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   541
  EpcX2SapProvider::SnStatusTransferParams sst;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   542
  sst.oldEnbUeX2apId = params.oldEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   543
  sst.newEnbUeX2apId = params.newEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   544
  sst.sourceCellId = params.sourceCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   545
  sst.targetCellId = params.targetCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   546
  for ( std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt = m_drbMap.begin ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   547
        drbIt != m_drbMap.end ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   548
        ++drbIt)
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   549
    {
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   550
      // SN status transfer is only for AM RLC
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   551
      if (0 != drbIt->second->m_rlc->GetObject<LteRlcAm> ())
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   552
        {
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   553
          LtePdcp::Status status = drbIt->second->m_pdcp->GetStatus ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   554
          EpcX2Sap::ErabsSubjectToStatusTransferItem i;          
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   555
          i.dlPdcpSn = status.txSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   556
          i.ulPdcpSn = status.rxSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   557
          sst.erabsSubjectToStatusTransferList.push_back (i);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   558
        }
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   559
    }
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   560
  m_rrc->m_x2SapProvider->SendSnStatusTransfer (sst);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   561
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   562
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   563
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   564
LteRrcSap::RadioResourceConfigDedicated
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   565
UeManager::GetRadioResourceConfigForHandoverPreparationInfo ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   566
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   567
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   568
  return BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   569
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   570
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   571
LteRrcSap::RrcConnectionReconfiguration 
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   572
UeManager::GetRrcConnectionReconfigurationForHandover ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   573
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   574
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   575
  return BuildRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   576
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   577
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   578
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   579
UeManager::SendData (uint8_t bid, Ptr<Packet> p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   580
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   581
  NS_LOG_FUNCTION (this << p << (uint16_t) bid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   582
  LtePdcpSapProvider::TransmitPdcpSduParameters params;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   583
  params.pdcpSdu = p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   584
  params.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   585
  params.lcid = Bid2Lcid (bid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   586
  uint8_t drbid = Bid2Drbid (bid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   587
  LtePdcpSapProvider* pdcpSapProvider = GetDataRadioBearerInfo (drbid)->m_pdcp->GetLtePdcpSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   588
  pdcpSapProvider->TransmitPdcpSdu (params);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   589
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   590
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   591
std::vector<EpcX2Sap::ErabToBeSetupItem>   
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   592
UeManager::GetErabList ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   593
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   594
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   595
  std::vector<EpcX2Sap::ErabToBeSetupItem> ret;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   596
  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it =  m_drbMap.begin ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   597
       it != m_drbMap.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   598
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   599
    {
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   600
      EpcX2Sap::ErabToBeSetupItem etbsi;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   601
      etbsi.erabId = it->second->m_epsBearerIdentity;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   602
      etbsi.erabLevelQosParameters = it->second->m_epsBearer;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   603
      etbsi.dlForwarding = false;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   604
      etbsi.transportLayerAddress = it->second->m_transportLayerAddress;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   605
      etbsi.gtpTeid = it->second->m_gtpTeid;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   606
      ret.push_back (etbsi);      
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   607
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   608
  return ret;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   609
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   610
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   611
void
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   612
UeManager::SendUeContextRelease ()
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   613
{
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   614
  NS_LOG_FUNCTION (this);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   615
  switch (m_state)
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   616
    {     
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   617
    case HANDOVER_PATH_SWITCH:
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   618
      NS_LOG_INFO ("Send UE CONTEXT RELEASE from target eNB to source eNB");
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   619
      EpcX2SapProvider::UeContextReleaseParams ueCtxReleaseParams;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   620
      ueCtxReleaseParams.oldEnbUeX2apId = m_sourceX2apId;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   621
      ueCtxReleaseParams.newEnbUeX2apId = m_rnti;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   622
      ueCtxReleaseParams.sourceCellId = m_sourceCellId;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   623
      m_rrc->m_x2SapProvider->SendUeContextRelease (ueCtxReleaseParams);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   624
      SwitchToState (CONNECTED_NORMALLY);
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   625
      m_rrc->m_handoverEndOkTrace (m_imsi, m_rrc->m_cellId, m_rnti);
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   626
      break;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   627
      
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   628
    default:
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   629
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   630
      break;      
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   631
    }
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   632
}
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   633
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   634
void 
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   635
UeManager::RecvHandoverPreparationFailure (uint16_t cellId)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   636
{
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   637
  NS_LOG_FUNCTION (this << cellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   638
  switch (m_state)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   639
    {     
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   640
    case HANDOVER_PREPARATION:   
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   641
      NS_ASSERT (cellId == m_targetCellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   642
      NS_LOG_INFO ("target eNB sent HO preparation failure, aborting HO");
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   643
      SwitchToState (CONNECTED_NORMALLY);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   644
      break;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   645
      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   646
    default:
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   647
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   648
      break;      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   649
    }
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   650
}
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   651
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   652
void 
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   653
UeManager::RecvSnStatusTransfer (EpcX2SapUser::SnStatusTransferParams params)
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   654
{
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   655
  NS_LOG_FUNCTION (this);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   656
  for (std::vector<EpcX2Sap::ErabsSubjectToStatusTransferItem>::iterator erabIt 
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   657
         = params.erabsSubjectToStatusTransferList.begin ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   658
       erabIt != params.erabsSubjectToStatusTransferList.end ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   659
       ++erabIt)
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   660
    {
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   661
      // LtePdcp::Status status;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   662
      // status.txSn = erabIt->dlPdcpSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   663
      // status.rxSn = erabIt->ulPdcpSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   664
      // uint8_t drbId = Bid2Drbid (erabIt->erabId);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   665
      // std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt = m_drbMap.find (drbId);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   666
      // NS_ASSERT_MSG (drbIt != m_drbMap.end (), "could not find DRBID " << (uint32_t) drbId);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   667
      // drbIt->second->m_pdcp->SetStatus (status);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   668
    }
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   669
}
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   670
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   671
// methods forwarded from RRC SAP
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   672
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   673
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   674
UeManager::CompleteSetupUe (LteEnbRrcSapProvider::CompleteSetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   675
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   676
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   677
  m_srb0->m_rlc->SetLteRlcSapUser (params.srb0SapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   678
  m_srb1->m_pdcp->SetLtePdcpSapUser (params.srb1SapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   679
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   680
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   681
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   682
UeManager::RecvRrcConnectionRequest (LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   683
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   684
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   685
  switch (m_state)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   686
    {
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   687
    case INITIAL_RANDOM_ACCESS:      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   688
      {      
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   689
        m_connectionTimeout.Cancel ();
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   690
        m_imsi = msg.ueIdentity;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   691
        if (m_rrc->m_s1SapProvider != 0)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   692
          {
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   693
            m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   694
          }      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   695
        LteRrcSap::RrcConnectionSetup msg2;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   696
        msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   697
        msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   698
        m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   699
        RecordDataRadioBearersToBeStarted ();
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   700
        SwitchToState (CONNECTION_SETUP);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   701
      }
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   702
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   703
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   704
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   705
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   706
      break;      
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   707
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   708
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   709
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   710
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   711
UeManager::RecvRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   712
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   713
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   714
  switch (m_state)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   715
    {
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   716
    case CONNECTION_SETUP:
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   717
      StartDataRadioBearers ();
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   718
      SwitchToState (CONNECTED_NORMALLY);
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   719
      m_rrc->m_connectionEstablishedTrace (m_imsi, m_rrc->m_cellId, m_rnti);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   720
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   721
            
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   722
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   723
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   724
      break;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   725
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   726
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   727
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   728
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   729
UeManager::RecvRrcConnectionReconfigurationCompleted (LteRrcSap::RrcConnectionReconfigurationCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   730
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   731
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   732
  switch (m_state)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   733
    {
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   734
    case CONNECTION_RECONFIGURATION:
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   735
      StartDataRadioBearers ();   
9541
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   736
      if (m_needTransmissionModeConfiguration)
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   737
        {          
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   738
          // configure MAC (and scheduler)
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   739
          LteEnbCmacSapProvider::UeConfig req;
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   740
          req.m_rnti = m_rnti;
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   741
          req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   742
          m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);  
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   743
          
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   744
          // configure PHY
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   745
          m_rrc->m_cphySapProvider->SetTransmissionMode (req.m_rnti, req.m_transmissionMode);
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   746
          
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   747
          m_needTransmissionModeConfiguration = false;
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   748
        }
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   749
      SwitchToState (CONNECTED_NORMALLY);
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   750
      m_rrc->m_connectionReconfigurationTrace (m_imsi, m_rrc->m_cellId, m_rnti);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   751
      break;
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   752
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   753
    case HANDOVER_LEAVING:      
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   754
      NS_LOG_INFO ("ignoring RecvRrcConnectionReconfigurationCompleted in state " << ToString (m_state));
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   755
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   756
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   757
    case HANDOVER_JOINING:
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   758
      {
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   759
        m_connectionTimeout.Cancel ();
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   760
        NS_LOG_INFO ("Send PATH SWITCH REQUEST to the MME");
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   761
        EpcEnbS1SapProvider::PathSwitchRequestParameters params;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   762
        params.rnti = m_rnti;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   763
        params.cellId = m_rrc->m_cellId;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   764
        params.mmeUeS1Id = m_imsi;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   765
        SwitchToState (HANDOVER_PATH_SWITCH);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   766
        for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it =  m_drbMap.begin ();
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   767
             it != m_drbMap.end ();
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   768
             ++it)
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   769
          {
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   770
            EpcEnbS1SapProvider::BearerToBeSwitched b;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   771
            b.epsBearerId = it->second->m_epsBearerIdentity;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   772
            b.teid =  it->second->m_gtpTeid;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   773
            params.bearersToBeSwitched.push_back (b);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   774
          }     
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   775
        m_rrc->m_s1SapProvider->PathSwitchRequest (params);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   776
      }
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
   777
      break;
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   778
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   779
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   780
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   781
      break;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   782
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   783
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   784
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   785
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   786
UeManager::RecvRrcConnectionReestablishmentRequest (LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   787
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   788
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   789
  LteRrcSap::RrcConnectionReestablishment msg2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   790
  msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   791
  msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   792
  m_rrc->m_rrcSapUser->SendRrcConnectionReestablishment (m_rnti, msg2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   793
  SwitchToState (CONNECTION_REESTABLISHMENT);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   794
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   795
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   796
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   797
UeManager::RecvRrcConnectionReestablishmentComplete (LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   798
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   799
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   800
  SwitchToState (CONNECTED_NORMALLY);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   801
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   802
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   803
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   804
// methods forwarded from CMAC SAP
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   805
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   806
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   807
UeManager::CmacUeConfigUpdateInd (LteEnbCmacSapUser::UeConfig cmacParams)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   808
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   809
  NS_LOG_FUNCTION (this << m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   810
  // at this stage used only by the scheduler for updating txMode
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   811
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   812
  m_physicalConfigDedicated.antennaInfo.transmissionMode = cmacParams.m_transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   813
9541
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   814
  m_needTransmissionModeConfiguration = true;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   815
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   816
  // reconfigure the UE RRC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   817
  ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   818
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   819
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   820
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   821
// methods forwarded from PDCP SAP
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   822
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   823
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   824
UeManager::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   825
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   826
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   827
  if (params.lcid > 2)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   828
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   829
      // data radio bearer
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   830
      EpsBearerTag tag;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   831
      tag.SetRnti (params.rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   832
      tag.SetBid (Lcid2Bid (params.lcid));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   833
      params.pdcpSdu->AddPacketTag (tag);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   834
      m_rrc->m_forwardUpCallback (params.pdcpSdu);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   835
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   836
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   837
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   838
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   839
uint16_t
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   840
UeManager::GetRnti (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   841
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   842
  return m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   843
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   844
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   845
uint64_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   846
UeManager::GetImsi (void)
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   847
{
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   848
  return m_imsi;
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   849
}
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   850
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   851
uint16_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   852
UeManager::GetSrsConfigurationIndex (void)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   853
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   854
  return m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   855
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   856
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   857
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   858
UeManager::SetSrsConfigurationIndex (uint16_t srsConfIndex)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   859
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   860
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   861
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = srsConfIndex;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   862
  m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (m_rnti, srsConfIndex);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   863
  switch (m_state)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   864
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   865
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   866
      // do nothing, srs conf index will be correctly enforced upon
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   867
      // RRC connection establishment
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   868
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   869
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   870
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   871
      ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   872
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   873
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   874
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   875
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   876
UeManager::State
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   877
UeManager::GetState (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   878
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   879
  return m_state;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   880
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   881
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   882
uint8_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   883
UeManager::AddDataRadioBearerInfo (Ptr<LteDataRadioBearerInfo> drbInfo)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   884
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   885
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   886
  const uint8_t MAX_DRB_ID = 32;  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   887
  for (uint8_t drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   888
       drbid != m_lastAllocatedDrbid; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   889
       drbid = (drbid + 1) % MAX_DRB_ID)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   890
    {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   891
      if (drbid != 0) // 0 is not allowed
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   892
        {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   893
          if (m_drbMap.find (drbid) == m_drbMap.end ())
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   894
            {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   895
              m_drbMap.insert (std::pair<uint8_t, Ptr<LteDataRadioBearerInfo> > (drbid, drbInfo));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   896
              drbInfo->m_drbIdentity = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   897
              m_lastAllocatedDrbid = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   898
              return drbid;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   899
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   900
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   901
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   902
  NS_FATAL_ERROR ("no more data radio bearer ids available");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   903
  return 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   904
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   905
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   906
Ptr<LteDataRadioBearerInfo>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   907
UeManager::GetDataRadioBearerInfo (uint8_t drbid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   908
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   909
  NS_LOG_FUNCTION (this << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   910
  NS_ASSERT (0 != drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   911
  std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   912
  NS_ABORT_IF (it == m_drbMap.end ());
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   913
  return it->second;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   914
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   915
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   916
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   917
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   918
UeManager::RemoveDataRadioBearerInfo (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   919
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   920
  NS_LOG_FUNCTION (this << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   921
  std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   922
  NS_ASSERT_MSG (it != m_drbMap.end (), "request to remove radio bearer with unknown drbid " << drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   923
  m_drbMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   924
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   925
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   926
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   927
LteRrcSap::RrcConnectionReconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   928
UeManager::BuildRrcConnectionReconfiguration ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   929
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   930
  LteRrcSap::RrcConnectionReconfiguration msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   931
  msg.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   932
  msg.haveRadioResourceConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   933
  msg.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   934
  msg.haveMobilityControlInfo = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   935
  msg.haveMeasConfig = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   936
  return msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   937
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   938
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   939
LteRrcSap::RadioResourceConfigDedicated
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   940
UeManager::BuildRadioResourceConfigDedicated ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   941
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   942
  LteRrcSap::RadioResourceConfigDedicated rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   943
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   944
  if (m_srb1 != 0)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   945
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   946
      LteRrcSap::SrbToAddMod stam;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   947
      stam.srbIdentity = m_srb1->m_srbIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   948
      stam.logicalChannelConfig = m_srb1->m_logicalChannelConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   949
      rrcd.srbToAddModList.push_back (stam);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   950
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   951
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   952
  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   953
       it != m_drbMap.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   954
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   955
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   956
      LteRrcSap::DrbToAddMod dtam;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   957
      dtam.epsBearerIdentity = it->second->m_epsBearerIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   958
      dtam.drbIdentity = it->second->m_drbIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   959
      dtam.rlcConfig = it->second->m_rlcConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   960
      dtam.logicalChannelIdentity = it->second->m_logicalChannelIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   961
      dtam.logicalChannelConfig = it->second->m_logicalChannelConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   962
      rrcd.drbToAddModList.push_back (dtam);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   963
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   964
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   965
  rrcd.havePhysicalConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   966
  rrcd.physicalConfigDedicated = m_physicalConfigDedicated;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   967
  return rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   968
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   969
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   970
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   971
UeManager::GetNewRrcTransactionIdentifier ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   972
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   973
  return ++m_lastRrcTransactionIdentifier;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   974
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   975
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   976
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   977
UeManager::Lcid2Drbid (uint8_t lcid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   978
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   979
  NS_ASSERT (lcid > 2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   980
  return lcid - 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   981
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   982
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   983
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   984
UeManager::Drbid2Lcid (uint8_t drbid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   985
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   986
  return drbid + 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   987
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   988
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   989
UeManager::Lcid2Bid (uint8_t lcid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   990
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   991
  NS_ASSERT (lcid > 2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   992
  return lcid - 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   993
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   994
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   995
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   996
UeManager::Bid2Lcid (uint8_t bid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   997
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   998
  return bid + 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   999
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1000
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1001
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1002
UeManager::Drbid2Bid (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1003
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1004
  return drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1005
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1006
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1007
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1008
UeManager::Bid2Drbid (uint8_t bid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1009
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1010
  return bid;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1011
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1012
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1013
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1014
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1015
UeManager::SwitchToState (State newState)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1016
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1017
  NS_LOG_FUNCTION (this << newState);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1018
  State oldState = m_state;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1019
  m_state = newState;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1020
  NS_LOG_INFO ("IMSI " << m_imsi << " RNTI " << m_rnti << " UeManager " << ToString (oldState) << " --> " << ToString (newState));
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1021
  m_stateTransitionTrace (m_imsi, m_rrc->m_cellId, m_rnti, oldState, newState);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1022
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1023
  switch (newState)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1024
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1025
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1026
    case HANDOVER_JOINING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1027
      NS_FATAL_ERROR ("cannot switch to an initial state");      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1028
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1029
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1030
    case CONNECTION_SETUP:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1031
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1032
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1033
    case CONNECTED_NORMALLY:    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1034
      {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1035
        if (m_pendingRrcConnectionReconfiguration == true)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1036
          {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1037
            ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1038
          }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1039
      }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1040
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1041
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1042
    case CONNECTION_RECONFIGURATION:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1043
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1044
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1045
    case CONNECTION_REESTABLISHMENT:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1046
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1047
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1048
    case HANDOVER_LEAVING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1049
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1050
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1051
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1052
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1053
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1054
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1055
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1056
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1057
  
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1058
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1059
// eNB RRC methods
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1060
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1061
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
  1062
NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1063
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1064
LteEnbRrc::LteEnbRrc ()
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1065
  : m_x2SapProvider (0),
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1066
    m_cmacSapProvider (0),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1067
    m_rrcSapUser (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1068
    m_macSapProvider (0),
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1069
    m_s1SapProvider (0),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1070
    m_cphySapProvider (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1071
    m_configured (false),
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1072
    m_lastAllocatedRnti (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1073
    m_srsCurrentPeriodicityId (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1074
    m_lastAllocatedConfigurationIndex (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1075
    m_reconfigureUes (false)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1076
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1077
  NS_LOG_FUNCTION (this);
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
  1078
  m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1079
  m_rrcSapProvider = new MemberLteEnbRrcSapProvider<LteEnbRrc> (this);
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1080
  m_x2SapUser = new EpcX2SpecificEpcX2SapUser<LteEnbRrc> (this);
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1081
  m_s1SapUser = new MemberEpcEnbS1SapUser<LteEnbRrc> (this);
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1082
  m_cphySapUser = new MemberLteEnbCphySapUser<LteEnbRrc> (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1083
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1084
 
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1085
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1086
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1087
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1088
LteEnbRrc::~LteEnbRrc ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1089
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1090
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1091
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1092
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1093
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1094
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1095
LteEnbRrc::DoDispose ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1096
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1097
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1098
  delete m_cmacSapUser;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1099
  delete m_rrcSapProvider;
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1100
  delete m_x2SapUser;
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1101
  delete m_s1SapUser;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1102
  delete m_cphySapUser;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1103
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1104
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1105
TypeId
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1106
LteEnbRrc::GetTypeId (void)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1107
{
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1108
  NS_LOG_FUNCTION ("LteEnbRrc::GetTypeId");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1109
  static TypeId tid = TypeId ("ns3::LteEnbRrc")
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1110
    .SetParent<Object> ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1111
    .AddConstructor<LteEnbRrc> ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1112
    .AddAttribute ("UeMap", "List of UeManager by C-RNTI.",
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1113
                   ObjectMapValue (),
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1114
                   MakeObjectMapAccessor (&LteEnbRrc::m_ueMap),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1115
                   MakeObjectMapChecker<UeManager> ())
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1116
    .AddAttribute ("DefaultTransmissionMode",
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1117
                  "The default UEs' transmission mode (0: SISO)",
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1118
                  UintegerValue (0),  // default tx-mode
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1119
                  MakeUintegerAccessor (&LteEnbRrc::m_defaultTransmissionMode),
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1120
                  MakeUintegerChecker<uint8_t> ())
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1121
    .AddAttribute ("EpsBearerToRlcMapping", 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1122
                   "Specify which type of RLC will be used for each type of EPS bearer. ",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1123
                   EnumValue (RLC_SM_ALWAYS),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1124
                   MakeEnumAccessor (&LteEnbRrc::m_epsBearerToRlcMapping),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1125
                   MakeEnumChecker (RLC_SM_ALWAYS, "RlcSmAlways",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1126
                                    RLC_UM_ALWAYS, "RlcUmAlways",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1127
                                    RLC_AM_ALWAYS, "RlcAmAlways",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1128
                                    PER_BASED,     "PacketErrorRateBased"))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1129
    .AddAttribute ("SystemInformationPeriodicity",
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1130
                   "The interval for sending system information (Time value)",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1131
                   TimeValue (MilliSeconds (80)),  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1132
                   MakeTimeAccessor (&LteEnbRrc::m_systemInformationPeriodicity),
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1133
                   MakeTimeChecker ())
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1134
    .AddAttribute ("SrsPeriodicity",
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1135
                   "The SRS periodicity in milliseconds",
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1136
                   UintegerValue (40),  
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1137
                   MakeUintegerAccessor (&LteEnbRrc::SetSrsPeriodicity, 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1138
                                         &LteEnbRrc::GetSrsPeriodicity),
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1139
                   MakeUintegerChecker<uint32_t> ())   
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1140
   .AddAttribute ("AdmitHandoverRequest",
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1141
                   "Whether to admit an X2 handover request from another eNB",
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1142
                   BooleanValue (true),  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1143
                   MakeBooleanAccessor (&LteEnbRrc::m_admitHandoverRequest),
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1144
                   MakeBooleanChecker ()) 
9528
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1145
   .AddAttribute ("AdmitRrcConnectionRequest",
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1146
                   "Whether to admit a connection request from a Ue",
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1147
                   BooleanValue (true),  
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1148
                   MakeBooleanAccessor (&LteEnbRrc::m_admitRrcConnectionRequest),
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1149
                   MakeBooleanChecker ()) 
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1150
    .AddTraceSource ("ConnectionEstablished",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1151
                     "trace fired upon successful RRC connection establishment",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1152
                     MakeTraceSourceAccessor (&LteEnbRrc::m_connectionEstablishedTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1153
    .AddTraceSource ("ConnectionReconfiguration",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1154
                     "trace fired upon RRC connection reconfiguration",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1155
                     MakeTraceSourceAccessor (&LteEnbRrc::m_connectionReconfigurationTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1156
    .AddTraceSource ("HandoverStart",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1157
                     "trace fired upon start of a handover procedure",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1158
                     MakeTraceSourceAccessor (&LteEnbRrc::m_handoverStartTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1159
    .AddTraceSource ("HandoverEndOk",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1160
                     "trace fired upon successful termination of a handover procedure",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1161
                     MakeTraceSourceAccessor (&LteEnbRrc::m_handoverEndOkTrace))
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
  1162
  ;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1163
  return tid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1164
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1165
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1166
void
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1167
LteEnbRrc::SetEpcX2SapProvider (EpcX2SapProvider * s)
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1168
{
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1169
  NS_LOG_FUNCTION (this << s);
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1170
  m_x2SapProvider = s;
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1171
}
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1172
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1173
EpcX2SapUser*
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1174
LteEnbRrc::GetEpcX2SapUser ()
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1175
{
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1176
  NS_LOG_FUNCTION (this);
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1177
  return m_x2SapUser;
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1178
}
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1179
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1180
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1181
LteEnbRrc::SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1182
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1183
  NS_LOG_FUNCTION (this << s);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1184
  m_cmacSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1185
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1186
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1187
LteEnbCmacSapUser*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1188
LteEnbRrc::GetLteEnbCmacSapUser ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1189
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1190
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1191
  return m_cmacSapUser;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1192
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1193
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1194
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1195
LteEnbRrc::SetLteEnbRrcSapUser (LteEnbRrcSapUser * s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1196
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1197
  NS_LOG_FUNCTION (this << s);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1198
  m_rrcSapUser = s;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1199
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1200
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1201
LteEnbRrcSapProvider*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1202
LteEnbRrc::GetLteEnbRrcSapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1203
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1204
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1205
  return m_rrcSapProvider;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1206
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1207
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1208
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1209
LteEnbRrc::SetLteMacSapProvider (LteMacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1210
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1211
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1212
  m_macSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1213
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1214
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1215
void 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1216
LteEnbRrc::SetS1SapProvider (EpcEnbS1SapProvider * s)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1217
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1218
  m_s1SapProvider = s;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1219
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1220
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1221
  
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1222
EpcEnbS1SapUser* 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1223
LteEnbRrc::GetS1SapUser ()
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1224
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1225
  return m_s1SapUser;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1226
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1227
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1228
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1229
LteEnbRrc::SetLteEnbCphySapProvider (LteEnbCphySapProvider * s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1230
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1231
  NS_LOG_FUNCTION (this << s);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1232
  m_cphySapProvider = s;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1233
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1234
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1235
LteEnbCphySapUser*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1236
LteEnbRrc::GetLteEnbCphySapUser ()
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1237
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1238
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1239
  return m_cphySapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1240
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1241
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1242
Ptr<UeManager>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1243
LteEnbRrc::GetUeManager (uint16_t rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1244
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1245
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1246
  NS_ASSERT (0 != rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1247
  std::map<uint16_t, Ptr<UeManager> >::iterator it = m_ueMap.find (rnti);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1248
  NS_ASSERT_MSG (it != m_ueMap.end (), "RNTI " << rnti << " not found in eNB with cellId " << m_cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1249
  return it->second;
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1250
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1251
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1252
void
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1253
LteEnbRrc::ConfigureCell (uint8_t ulBandwidth, uint8_t dlBandwidth, uint16_t ulEarfcn, uint16_t dlEarfcn, uint16_t cellId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1254
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1255
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1256
  NS_ASSERT (!m_configured);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1257
  m_cmacSapProvider->ConfigureMac (ulBandwidth, dlBandwidth);
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1258
  m_cphySapProvider->SetBandwidth (ulBandwidth, dlBandwidth);
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1259
  m_cphySapProvider->SetEarfcn (ulEarfcn, dlEarfcn);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1260
  m_dlEarfcn = dlEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1261
  m_ulEarfcn = ulEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1262
  m_dlBandwidth = dlBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1263
  m_ulBandwidth = ulBandwidth;
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1264
  m_cellId = cellId;
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1265
  m_cphySapProvider->SetCellId (cellId);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1266
  LteRrcSap::MasterInformationBlock mib;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1267
  mib.dlBandwidth = m_dlBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1268
  m_cphySapProvider->SetMasterInformationBlock (mib);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1269
  m_configured = true;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1270
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1271
  // the first time System Information is sent
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1272
  Simulator::Schedule (MilliSeconds (16), &LteEnbRrc::SendSystemInformation, this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1273
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1274
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1275
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1276
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1277
LteEnbRrc::SetCellId (uint16_t cellId)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1278
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1279
  m_cellId = cellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1280
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1281
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1282
bool
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1283
LteEnbRrc::SendData (Ptr<Packet> packet)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1284
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1285
  NS_LOG_FUNCTION (this << packet);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1286
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1287
  EpsBearerTag tag;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1288
  bool found = packet->RemovePacketTag (tag);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1289
  NS_ASSERT_MSG (found, "no EpsBearerTag found in packet to be sent");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1290
  Ptr<UeManager> ueManager = GetUeManager (tag.GetRnti ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1291
  ueManager->SendData (tag.GetBid (), packet);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1292
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1293
  return true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1294
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1295
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1296
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1297
LteEnbRrc::SetForwardUpCallback (Callback <void, Ptr<Packet> > cb)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1298
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1299
  m_forwardUpCallback = cb;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1300
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1301
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1302
void
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1303
LteEnbRrc::ConnectionTimeout (uint16_t rnti)
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1304
{
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1305
  NS_LOG_FUNCTION (this << rnti);
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1306
  RemoveUe (rnti);
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1307
}
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1308
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1309
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1310
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1311
LteEnbRrc::SendHandoverRequest (uint16_t rnti, uint16_t cellId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1312
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1313
  NS_LOG_FUNCTION (this << rnti << cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1314
  NS_LOG_LOGIC ("Request to send HANDOVER REQUEST");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1315
  NS_ASSERT (m_configured);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1316
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1317
  Ptr<UeManager> ueManager = GetUeManager (rnti);
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1318
  ueManager->PrepareHandover (cellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1319
 
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1320
}
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1321
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1322
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1323
LteEnbRrc::DoCompleteSetupUe (uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1324
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1325
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1326
  GetUeManager (rnti)->CompleteSetupUe (params);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1327
}
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1328
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1329
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1330
LteEnbRrc::DoRecvRrcConnectionRequest (uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1331
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1332
  NS_LOG_FUNCTION (this << rnti);
9528
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1333
  
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1334
  if (m_admitRrcConnectionRequest == true)
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1335
  {
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1336
    GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1337
  }
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1338
  else
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1339
  {
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1340
    NS_LOG_INFO ("rejecting connection request to rnti " << rnti);
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1341
    LteRrcSap::RrcConnectionReject rejectMsg;
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1342
    rejectMsg.waitTime = 3;
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1343
    m_rrcSapUser->SendRrcConnectionReject (rnti, rejectMsg);
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1344
  }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1345
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1346
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1347
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1348
LteEnbRrc::DoRecvRrcConnectionSetupCompleted (uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1349
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1350
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1351
  GetUeManager (rnti)->RecvRrcConnectionSetupCompleted (msg);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1352
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1353
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1354
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1355
LteEnbRrc::DoRecvRrcConnectionReconfigurationCompleted (uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1356
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1357
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1358
  GetUeManager (rnti)->RecvRrcConnectionReconfigurationCompleted (msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1359
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1360
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1361
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1362
LteEnbRrc::DoRecvRrcConnectionReestablishmentRequest (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1363
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1364
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1365
  GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1366
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1367
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1368
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1369
LteEnbRrc::DoRecvRrcConnectionReestablishmentComplete (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1370
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1371
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1372
  GetUeManager (rnti)->RecvRrcConnectionReestablishmentComplete (msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1373
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1374
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1375
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1376
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1377
LteEnbRrc::DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters request)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1378
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1379
  Ptr<UeManager> ueManager = GetUeManager (request.rnti);
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
  1380
  ueManager->SetupDataRadioBearer (request.bearer, request.bearerId, request.gtpTeid, request.transportLayerAddress);       
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1381
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1382
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1383
void 
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1384
LteEnbRrc::DoPathSwitchRequestAcknowledge (EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params)
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1385
{
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1386
  Ptr<UeManager> ueManager = GetUeManager (params.rnti);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1387
  ueManager->SendUeContextRelease ();
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1388
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1389
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1390
void
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1391
LteEnbRrc::DoRecvHandoverRequest (EpcX2SapUser::HandoverRequestParams req)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1392
{
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1393
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1394
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1395
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1396
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1397
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << req.oldEnbUeX2apId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1398
  NS_LOG_LOGIC ("sourceCellId = " << req.sourceCellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1399
  NS_LOG_LOGIC ("targetCellId = " << req.targetCellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1400
  NS_LOG_LOGIC ("mmeUeS1apId = " << req.mmeUeS1apId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1401
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1402
  NS_ASSERT (req.targetCellId == m_cellId);
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1403
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1404
  if (m_admitHandoverRequest == false)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1405
    {
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1406
      NS_LOG_INFO ("rejecting handover request from cellId " << req.sourceCellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1407
      EpcX2Sap::HandoverPreparationFailureParams res;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1408
      res.oldEnbUeX2apId =  req.oldEnbUeX2apId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1409
      res.sourceCellId = req.sourceCellId ;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1410
      res.targetCellId = req.targetCellId ;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1411
      res.cause = 0;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1412
      res.criticalityDiagnostics = 0;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1413
      m_x2SapProvider->SendHandoverPreparationFailure (res);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1414
      return;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1415
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1416
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1417
  uint16_t rnti = AddUe (UeManager::HANDOVER_JOINING);
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1418
  LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue anrcrv = m_cmacSapProvider->AllocateNcRaPreamble (rnti);
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1419
  if (anrcrv.valid == false)
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1420
    {
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1421
      NS_LOG_INFO (this << "failed to allocate a preamble for non-contention based RA => cannot accept HO");
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1422
      RemoveUe (rnti);
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1423
      NS_FATAL_ERROR ("should trigger HO Preparation Failure, but it is not implemented");
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1424
      return;
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1425
    }    
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1426
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1427
  Ptr<UeManager> ueManager = GetUeManager (rnti);
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1428
  ueManager->SetSource (req.sourceCellId, req.oldEnbUeX2apId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1429
  ueManager->SetImsi (req.mmeUeS1apId);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1430
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1431
  EpcX2SapProvider::HandoverRequestAckParams ackParams;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1432
  ackParams.oldEnbUeX2apId = req.oldEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1433
  ackParams.newEnbUeX2apId = rnti;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1434
  ackParams.sourceCellId = req.sourceCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1435
  ackParams.targetCellId = req.targetCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1436
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1437
  for (std::vector <EpcX2Sap::ErabToBeSetupItem>::iterator it = req.bearers.begin ();
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1438
       it != req.bearers.end ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1439
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1440
    {
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
  1441
      ueManager->SetupDataRadioBearer (it->erabLevelQosParameters, it->erabId, it->gtpTeid, it->transportLayerAddress);
9501
3c52c63f19fd check admittedBearers upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9500
diff changeset
  1442
      EpcX2Sap::ErabAdmittedItem i;
3c52c63f19fd check admittedBearers upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9500
diff changeset
  1443
      i.erabId = it->erabId;
3c52c63f19fd check admittedBearers upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9500
diff changeset
  1444
      ackParams.admittedBearers.push_back (i);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1445
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1446
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1447
  LteRrcSap::RrcConnectionReconfiguration handoverCommand = ueManager->GetRrcConnectionReconfigurationForHandover ();
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1448
  handoverCommand.haveMobilityControlInfo = true;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1449
  handoverCommand.mobilityControlInfo.targetPhysCellId = m_cellId;
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1450
  handoverCommand.mobilityControlInfo.haveCarrierFreq = true;
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1451
  handoverCommand.mobilityControlInfo.carrierFreq.dlCarrierFreq = m_dlEarfcn;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1452
  handoverCommand.mobilityControlInfo.carrierFreq.ulCarrierFreq = m_ulEarfcn;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1453
  handoverCommand.mobilityControlInfo.haveCarrierBandwidth = true;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1454
  handoverCommand.mobilityControlInfo.carrierBandwidth.dlBandwidth = m_dlBandwidth;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1455
  handoverCommand.mobilityControlInfo.carrierBandwidth.ulBandwidth = m_ulBandwidth;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1456
  handoverCommand.mobilityControlInfo.newUeIdentity = rnti;
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1457
  handoverCommand.mobilityControlInfo.haveRachConfigDedicated = true;
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1458
  handoverCommand.mobilityControlInfo.rachConfigDedicated.raPreambleIndex = anrcrv.raPreambleId;
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1459
  handoverCommand.mobilityControlInfo.rachConfigDedicated.raPrachMaskIndex = anrcrv.raPrachMaskIndex;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1460
  Ptr<Packet> encodedHandoverCommand = m_rrcSapUser->EncodeHandoverCommand (handoverCommand);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1461
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1462
  ackParams.rrcContext = encodedHandoverCommand;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1463
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1464
  NS_LOG_LOGIC ("Send X2 message: HANDOVER REQUEST ACK");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1465
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1466
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << ackParams.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1467
  NS_LOG_LOGIC ("newEnbUeX2apId = " << ackParams.newEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1468
  NS_LOG_LOGIC ("sourceCellId = " << ackParams.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1469
  NS_LOG_LOGIC ("targetCellId = " << ackParams.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1470
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1471
  m_x2SapProvider->SendHandoverRequestAck (ackParams);
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1472
}
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1473
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1474
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1475
LteEnbRrc::DoRecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1476
{
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1477
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1478
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1479
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST ACK");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1480
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1481
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1482
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1483
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1484
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1485
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1486
  uint16_t rnti = params.oldEnbUeX2apId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1487
  Ptr<UeManager> ueManager = GetUeManager (rnti);  
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1488
  ueManager->RecvHandoverRequestAck (params);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1489
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1490
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1491
void
9456
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1492
LteEnbRrc::DoRecvHandoverPreparationFailure (EpcX2SapUser::HandoverPreparationFailureParams params)
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1493
{
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1494
  NS_LOG_FUNCTION (this);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1495
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1496
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER PREPARATION FAILURE");
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1497
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1498
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1499
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1500
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1501
  NS_LOG_LOGIC ("cause = " << params.cause);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1502
  NS_LOG_LOGIC ("criticalityDiagnostics = " << params.criticalityDiagnostics);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1503
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1504
  uint16_t rnti = params.oldEnbUeX2apId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1505
  Ptr<UeManager> ueManager = GetUeManager (rnti);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1506
  ueManager->RecvHandoverPreparationFailure (params.targetCellId);
9456
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1507
}
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1508
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1509
void
9479
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1510
LteEnbRrc::DoRecvSnStatusTransfer (EpcX2SapUser::SnStatusTransferParams params)
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1511
{
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1512
  NS_LOG_FUNCTION (this);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1513
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1514
  NS_LOG_LOGIC ("Recv X2 message: SN STATUS TRANSFER");
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1515
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1516
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1517
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1518
  NS_LOG_LOGIC ("erabsSubjectToStatusTransferList size = " << params.erabsSubjectToStatusTransferList.size ());
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1519
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1520
  uint16_t rnti = params.newEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1521
  Ptr<UeManager> ueManager = GetUeManager (rnti);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1522
  ueManager->RecvSnStatusTransfer (params);
9479
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1523
}
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1524
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1525
void
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1526
LteEnbRrc::DoRecvUeContextRelease (EpcX2SapUser::UeContextReleaseParams params)
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1527
{
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1528
  NS_LOG_FUNCTION (this);
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1529
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1530
  NS_LOG_LOGIC ("Recv X2 message: UE CONTEXT RELEASE");
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1531
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1532
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1533
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1534
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1535
  uint16_t rnti = params.oldEnbUeX2apId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1536
  RemoveUe (rnti);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1537
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1538
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1539
void
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1540
LteEnbRrc::DoRecvLoadInformation (EpcX2SapUser::LoadInformationParams params)
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1541
{
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1542
  NS_LOG_FUNCTION (this);
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1543
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1544
  NS_LOG_LOGIC ("Recv X2 message: LOAD INFORMATION");
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1545
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1546
  NS_LOG_LOGIC ("Number of cellInformationItems = " << params.cellInformationList.size ());
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1547
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1548
  NS_ASSERT ("Processing of LOAD INFORMATION X2 message IS NOT IMPLEMENTED");
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1549
}
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1550
9435
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1551
void
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1552
LteEnbRrc::DoRecvResourceStatusUpdate (EpcX2SapUser::ResourceStatusUpdateParams params)
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1553
{
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1554
  NS_LOG_FUNCTION (this);
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1555
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1556
  NS_LOG_LOGIC ("Recv X2 message: RESOURCE STATUS UPDATE");
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1557
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1558
  NS_LOG_LOGIC ("Number of cellMeasurementResultItems = " << params.cellMeasurementResultList.size ());
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1559
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1560
  NS_ASSERT ("Processing of RESOURCE STATUS UPDATE X2 message IS NOT IMPLEMENTED");
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1561
}
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1562
9555
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1563
void
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1564
LteEnbRrc::DoRecvUeData (EpcX2SapUser::UeDataParams params)
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1565
{
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1566
  NS_LOG_FUNCTION (this);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1567
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1568
  NS_LOG_LOGIC ("Recv UE DATA FORWARDING through X2 interface");
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1569
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1570
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1571
  NS_LOG_LOGIC ("gtpTeid = " << params.gtpTeid);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1572
  NS_LOG_LOGIC ("ueData = " << params.ueData);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1573
  NS_LOG_LOGIC ("ueData size = " << params.ueData->GetSize ());
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1574
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1575
  NS_ASSERT ("Processing of UE DATA FORWARDING through X2 interface IS NOT IMPLEMENTED");
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1576
}
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1577
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1578
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1579
uint16_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1580
LteEnbRrc::DoAllocateTemporaryCellRnti ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1581
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1582
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1583
  return AddUe (UeManager::INITIAL_RANDOM_ACCESS);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1584
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1585
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1586
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1587
LteEnbRrc::DoRrcConfigurationUpdateInd (LteEnbCmacSapUser::UeConfig cmacParams)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1588
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1589
  Ptr<UeManager> ueManager = GetUeManager (cmacParams.m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1590
  ueManager->CmacUeConfigUpdateInd (cmacParams);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1591
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1592
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1593
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1594
LteEnbRrc::DoNotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1595
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1596
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1597
  NS_FATAL_ERROR ("not implemented");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1598
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1599
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1600
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1601
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1602
uint16_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1603
LteEnbRrc::AddUe (UeManager::State state)
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1604
{
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1605
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1606
  bool found = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1607
  uint16_t rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1608
  for (rnti = m_lastAllocatedRnti; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1609
       (rnti != m_lastAllocatedRnti - 1) && (!found);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1610
       ++rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1611
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1612
      if ((rnti != 0) && (m_ueMap.find (rnti) == m_ueMap.end ()))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1613
        {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1614
          found = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1615
          break;        
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1616
        }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1617
    }
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1618
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1619
  NS_ASSERT_MSG (found, "no more RNTIs available (do you have more than 65535 UEs in a cell?)");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1620
  m_lastAllocatedRnti = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1621
  Ptr<UeManager> ueManager = CreateObject<UeManager> (this, rnti, state);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1622
  m_ueMap.insert (std::pair<uint16_t, Ptr<UeManager> > (rnti, ueManager));
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
  1623
  ueManager->Start ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1624
  NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << m_cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());              
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1625
  return rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1626
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1627
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1628
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1629
LteEnbRrc::RemoveUe (uint16_t rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1630
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1631
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1632
  std::map <uint16_t, Ptr<UeManager> >::iterator it = m_ueMap.find (rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1633
  NS_ASSERT_MSG (it != m_ueMap.end (), "request to remove UE info with unknown rnti " << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1634
  uint16_t srsCi = (*it).second->GetSrsConfigurationIndex ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1635
  m_ueMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1636
  // need to do this after UeManager has been deleted
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1637
  RemoveSrsConfigurationIndex (srsCi); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1638
 }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1639
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1640
TypeId
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1641
LteEnbRrc::GetRlcType (EpsBearer bearer)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1642
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1643
  switch (m_epsBearerToRlcMapping)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1644
    {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1645
    case RLC_SM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1646
      return LteRlcSm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1647
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1648
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1649
    case  RLC_UM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1650
      return LteRlcUm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1651
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1652
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1653
    case RLC_AM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1654
      return LteRlcAm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1655
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1656
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1657
    case PER_BASED:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1658
      if (bearer.GetPacketErrorLossRate () > 1.0e-5)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1659
        {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1660
          return LteRlcUm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1661
        }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1662
      else
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1663
        {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1664
          return LteRlcAm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1665
        }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1666
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1667
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1668
    default:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1669
      return LteRlcSm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1670
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1671
    }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1672
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1673
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1674
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1675
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1676
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1677
// from 3GPP TS 36.213 table 8.2-1 UE Specific SRS Periodicity
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1678
const uint8_t SRS_ENTRIES = 9;
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1679
uint16_t g_srsPeriodicity[SRS_ENTRIES] = {0, 2, 5, 10, 20, 40,  80, 160, 320};
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1680
uint16_t g_srsCiLow[SRS_ENTRIES] =       {0, 0, 2,  7, 17, 37,  77, 157, 317};
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1681
uint16_t g_srsCiHigh[SRS_ENTRIES] =      {0, 1, 6, 16, 36, 76, 156, 316, 636};
9543
5976c95cf6e3 always use max SRS periodicity with more than 10 UEs
Nicola Baldo <nbaldo@cttc.es>
parents: 9541
diff changeset
  1682
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1683
void 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1684
LteEnbRrc::SetSrsPeriodicity (uint32_t p)
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1685
{
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1686
  NS_LOG_FUNCTION (this << p);
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1687
  for (uint32_t id = 1; id < SRS_ENTRIES; ++id)
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1688
    {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1689
      if (g_srsPeriodicity[id] == p)
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1690
        {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1691
          m_srsCurrentPeriodicityId = id;
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1692
          return;
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1693
        }
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1694
    }
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1695
  // no match found
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1696
  std::ostringstream allowedValues;
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1697
  for (uint32_t id = 1; id < SRS_ENTRIES; ++id)
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1698
    {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1699
      allowedValues << g_srsPeriodicity[id] << " ";
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1700
    }
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1701
  NS_FATAL_ERROR ("illecit SRS periodicity value " << p << ". Allowed values: " << allowedValues.str ());
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1702
}
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1703
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1704
uint32_t 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1705
LteEnbRrc::GetSrsPeriodicity () const
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1706
{
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1707
  NS_LOG_FUNCTION (this);
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1708
  NS_ASSERT (m_srsCurrentPeriodicityId > 0);
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1709
  NS_ASSERT (m_srsCurrentPeriodicityId < SRS_ENTRIES);
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1710
  return g_srsPeriodicity[m_srsCurrentPeriodicityId];
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1711
}
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1712
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1713
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1714
uint16_t
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1715
LteEnbRrc::GetNewSrsConfigurationIndex ()
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1716
{
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1717
  NS_LOG_FUNCTION (this << m_ueSrsConfigurationIndexSet.size ());
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1718
  // SRS
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1719
  NS_ASSERT (m_srsCurrentPeriodicityId > 0);
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1720
  NS_ASSERT (m_srsCurrentPeriodicityId < SRS_ENTRIES);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1721
  NS_LOG_DEBUG (this << " SRS p " << g_srsPeriodicity[m_srsCurrentPeriodicityId] << " set " << m_ueSrsConfigurationIndexSet.size ());
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1722
  if (m_ueSrsConfigurationIndexSet.size () >= g_srsPeriodicity[m_srsCurrentPeriodicityId])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1723
    {
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1724
      NS_FATAL_ERROR ("too many UEs (" << m_ueSrsConfigurationIndexSet.size () + 1 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1725
                      << ") for current SRS periodicity " 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1726
                      <<  g_srsPeriodicity[m_srsCurrentPeriodicityId]
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1727
                      << ", consider increasing the value of ns3::LteEnbRrc::SrsPeriodicity");
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1728
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1729
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1730
  if (m_ueSrsConfigurationIndexSet.empty ())
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1731
    {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1732
      // first entry
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1733
      m_lastAllocatedConfigurationIndex = g_srsCiLow[m_srsCurrentPeriodicityId];
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1734
      m_ueSrsConfigurationIndexSet.insert (m_lastAllocatedConfigurationIndex);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1735
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1736
  else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1737
    {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1738
      // find a CI from the available ones
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1739
      std::set<uint16_t>::reverse_iterator rit = m_ueSrsConfigurationIndexSet.rbegin ();
9425
b7eddbdb3a5a added lte-x2-handover test suite
Nicola Baldo <nbaldo@cttc.es>
parents: 9420
diff changeset
  1740
      NS_ASSERT (rit != m_ueSrsConfigurationIndexSet.rend ());
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1741
      NS_LOG_DEBUG (this << " lower bound " << (*rit) << " of " << g_srsCiHigh[m_srsCurrentPeriodicityId]);
9469
28a7b04a0b11 removed spurious LteUePhy::m_enbCellId; fixed bug in LteEnbRrc::GetNewSrsConfigurationIndex ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9464
diff changeset
  1742
      if ((*rit) < g_srsCiHigh[m_srsCurrentPeriodicityId])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1743
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1744
          // got it from the upper bound
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1745
          m_lastAllocatedConfigurationIndex = (*rit) + 1;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1746
          m_ueSrsConfigurationIndexSet.insert (m_lastAllocatedConfigurationIndex);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1747
        }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1748
      else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1749
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1750
          // look for released ones
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1751
          for (uint16_t srcCi = g_srsCiLow[m_srsCurrentPeriodicityId]; srcCi < g_srsCiHigh[m_srsCurrentPeriodicityId]; srcCi++) 
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1752
            {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1753
              std::set<uint16_t>::iterator it = m_ueSrsConfigurationIndexSet.find (srcCi);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1754
              if (it==m_ueSrsConfigurationIndexSet.end ())
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1755
                {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1756
                  m_lastAllocatedConfigurationIndex = srcCi;
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1757
                  m_ueSrsConfigurationIndexSet.insert (srcCi);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1758
                  break;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1759
                }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1760
            }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1761
        } 
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1762
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1763
  return m_lastAllocatedConfigurationIndex;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1764
  
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1765
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1766
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1767
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1768
void
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1769
LteEnbRrc::RemoveSrsConfigurationIndex (uint16_t srcCi)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1770
{
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1771
  NS_LOG_FUNCTION (this << srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1772
  std::set<uint16_t>::iterator it = m_ueSrsConfigurationIndexSet.find (srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1773
  NS_ASSERT_MSG (it != m_ueSrsConfigurationIndexSet.end (), "request to remove unkwown SRS CI " << srcCi);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1774
  m_ueSrsConfigurationIndexSet.erase (it);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1775
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1776
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1777
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1778
LteEnbRrc::GetLogicalChannelGroup (EpsBearer bearer)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1779
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1780
  if (bearer.IsGbr ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1781
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1782
      return 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1783
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1784
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1785
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1786
      return 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1787
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1788
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1789
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1790
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1791
LteEnbRrc::GetLogicalChannelPriority (EpsBearer bearer)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1792
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1793
  return bearer.qci;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1794
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1795
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1796
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1797
LteEnbRrc::SendSystemInformation ()
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1798
{
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1799
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1800
  // for simplicity, we use the same periodicity for all sibs
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1801
  // note that in real systems the periodicy of each sibs could be different
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1802
  LteRrcSap::SystemInformation si;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1803
  si.haveSib2 = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1804
  si.sib2.freqInfo.ulCarrierFreq = m_ulEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1805
  si.sib2.freqInfo.ulBandwidth = m_ulBandwidth;
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1806
  
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1807
  LteEnbCmacSapProvider::RachConfig rc = m_cmacSapProvider->GetRachConfig ();
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1808
  LteRrcSap::RachConfigCommon rachConfigCommon;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1809
  rachConfigCommon.preambleInfo.numberOfRaPreambles = rc.numberOfRaPreambles;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1810
  rachConfigCommon.raSupervisionInfo.preambleTransMax = rc.preambleTransMax;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1811
  rachConfigCommon.raSupervisionInfo.raResponseWindowSize = rc.raResponseWindowSize;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1812
  si.sib2.radioResourceConfigCommon.rachConfigCommon = rachConfigCommon;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1813
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1814
  m_rrcSapUser->SendSystemInformation (si);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1815
  Simulator::Schedule (m_systemInformationPeriodicity, &LteEnbRrc::SendSystemInformation, this);
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1816
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1817
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1818
} // namespace ns3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1819