src/lte/model/lte-enb-rrc.cc
author Lluís Parcerisa <parcerisa@gmail.com>
Thu, 04 Apr 2013 11:49:19 +0200
changeset 10028 f988b82ef6ec
parent 10022 4942b556f517
child 10036 ef2b940112fd
permissions -rw-r--r--
Capitalize constants in enums, according to ns3 coding style.
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",
9593
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   102
    "CONNECTION_REJECTED",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   103
    "CONNECTED_NORMALLY",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   104
    "CONNECTION_RECONFIGURATION",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   105
    "CONNECTION_REESTABLISHMENT",
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   106
    "HANDOVER_PREPARATION",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   107
    "HANDOVER_JOINING",
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   108
    "HANDOVER_PATH_SWITCH",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   109
    "HANDOVER_LEAVING",
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   112
std::string ToString (UeManager::State s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   113
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   114
  return std::string (g_ueManagerStateName[s]);
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   118
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   119
///////////////////////////////////////////
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   120
// UeManager 
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   121
///////////////////////////////////////////
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   122
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   123
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   124
NS_OBJECT_ENSURE_REGISTERED (UeManager);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   125
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
   126
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   127
UeManager::UeManager ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   128
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   129
  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
   130
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   131
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   132
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   133
UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   134
  : m_lastAllocatedDrbid (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   135
    m_rnti (rnti),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   136
    m_imsi (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   137
    m_lastRrcTransactionIdentifier (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   138
    m_rrc (rrc),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   139
    m_state (s),
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   140
    m_pendingRrcConnectionReconfiguration (false),
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   141
    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
   142
    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
   143
    m_needTransmissionModeConfiguration (false)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   144
{ 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   145
  NS_LOG_FUNCTION (this);
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   146
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   147
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   148
void
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   149
UeManager::DoStart ()
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   150
{
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   151
  NS_LOG_FUNCTION (this);
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   152
  m_drbPdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<UeManager> (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   153
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   154
  m_physicalConfigDedicated.haveAntennaInfoDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   155
  m_physicalConfigDedicated.antennaInfo.transmissionMode = m_rrc->m_defaultTransmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   156
  m_physicalConfigDedicated.haveSoundingRsUlConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   157
  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
   158
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
9564
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   159
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsBandwidth = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   160
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   161
  m_rrc->m_cmacSapProvider->AddUe (m_rnti);
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   162
  m_rrc->m_cphySapProvider->AddUe (m_rnti);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   163
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   164
  // setup the eNB side of SRB0
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   165
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   166
    uint8_t lcid = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   167
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   168
    Ptr<LteRlc> rlc = CreateObject<LteRlcTm> ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   169
    rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   170
    rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   171
    rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   172
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   173
    m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   174
    m_srb0->m_rlc = rlc;
9473
8b420bd32318 reset MAC and reinitialize SRBs upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9472
diff changeset
   175
    m_srb0->m_srbIdentity = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   176
    // no need to store logicalChannelConfig as SRB0 is pre-configured
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   177
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   178
    LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   179
    lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   180
    lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   181
    // 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
   182
    m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   186
  // 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
   187
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   188
    uint8_t lcid = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   189
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   190
    Ptr<LteRlc> rlc = CreateObject<LteRlcAm> ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   191
    rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   192
    rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   193
    rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   194
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   195
    Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   196
    pdcp->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   197
    pdcp->SetLcId (lcid);
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   198
    pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   199
    pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   200
    rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   201
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   202
    m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   203
    m_srb1->m_rlc = rlc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   204
    m_srb1->m_pdcp = pdcp;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   205
    m_srb1->m_srbIdentity = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   206
    m_srb1->m_logicalChannelConfig.priority = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   207
    m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   208
    m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   209
    m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   210
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   211
    LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   212
    lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   213
    lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   214
    lcinfo.lcGroup = 0; // all SRBs always mapped to LCG 0
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   215
    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
   216
    lcinfo.isGbr = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   217
    lcinfo.mbrUl = 1e6;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   218
    lcinfo.mbrDl = 1e6;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   219
    lcinfo.gbrUl = 1e4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   220
    lcinfo.gbrDl = 1e4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   221
    m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   224
  LteEnbRrcSapUser::SetupUeParameters ueParams;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   225
  ueParams.srb0SapProvider = m_srb0->m_rlc->GetLteRlcSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   226
  ueParams.srb1SapProvider = m_srb1->m_pdcp->GetLtePdcpSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   227
  m_rrc->m_rrcSapUser->SetupUe (m_rnti, ueParams);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   228
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   229
  // configure MAC (and scheduler)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   230
  LteEnbCmacSapProvider::UeConfig req;
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   231
  req.m_rnti = m_rnti;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   232
  req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   233
  m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   234
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   235
  // configure PHY
9471
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   236
  m_rrc->m_cphySapProvider->SetTransmissionMode (m_rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
082640d26eea Implement real DoSendRrcConnectionSetupCompleted
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9464
diff changeset
   237
  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
   238
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   239
  // 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
   240
  Time maxConnectionDelay;
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   241
  switch (m_state)
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   242
    {
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   243
    case INITIAL_RANDOM_ACCESS:
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   244
      m_connectionTimeout = Simulator::Schedule (m_rrc->m_connectionTimeoutDuration, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   245
                                                 &LteEnbRrc::ConnectionTimeout, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   246
                                                 m_rrc, m_rnti);
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   247
      break;
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   248
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   249
    case HANDOVER_JOINING:
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   250
      m_handoverJoiningTimeout = Simulator::Schedule (m_rrc->m_handoverJoiningTimeoutDuration, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   251
                                                 &LteEnbRrc::HandoverJoiningTimeout, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   252
                                                 m_rrc, m_rnti);
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   253
      break;      
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   254
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   255
    default:
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   256
      NS_FATAL_ERROR ("unexpected state " << ToString (m_state));
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   257
      break;      
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
   258
    }  
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   259
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   260
  m_servingCellMeasures = CreateObject<UeMeasure> ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   261
  m_servingCellMeasures->m_cellId = m_rrc->m_cellId;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   262
  m_servingCellMeasures->m_rsrp = 0;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   263
  m_servingCellMeasures->m_rsrq = 0;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   264
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   265
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   266
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   267
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   268
UeManager::~UeManager (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   269
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   270
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   271
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   272
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   273
UeManager::DoDispose ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   274
{
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   275
  delete m_drbPdcpSapUser;
9599
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   276
  // delete eventual X2-U TEIDs
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   277
  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   278
       it != m_drbMap.end ();
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   279
       ++it)
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   280
    {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   281
      m_rrc->m_x2uTeidInfoMap.erase (it->second->m_gtpTeid);
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   282
    }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   283
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   284
  m_servingCellMeasures = 0;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   285
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   286
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   287
TypeId UeManager::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   288
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   289
  static TypeId  tid = TypeId ("ns3::UeManager")
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   290
    .SetParent<Object> ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   291
    .AddConstructor<UeManager> ()
9615
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   292
    .AddAttribute ("DataRadioBearerMap", "List of UE DataRadioBearerInfo by DRBID.",
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   293
                   ObjectMapValue (),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   294
                   MakeObjectMapAccessor (&UeManager::m_drbMap),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   295
                   MakeObjectMapChecker<LteDataRadioBearerInfo> ())
9615
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   296
    .AddAttribute ("Srb0", "SignalingRadioBearerInfo for SRB0",
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   297
                   PointerValue (),
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   298
                   MakePointerAccessor (&UeManager::m_srb0),
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   299
                   MakePointerChecker<LteSignalingRadioBearerInfo> ())
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   300
    .AddAttribute ("Srb1", "SignalingRadioBearerInfo for SRB1",
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   301
                   PointerValue (),
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   302
                   MakePointerAccessor (&UeManager::m_srb1),
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   303
                   MakePointerChecker<LteSignalingRadioBearerInfo> ())
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   304
    .AddAttribute ("C-RNTI",
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   305
                   "Cell Radio Network Temporary Identifier",
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   306
                   TypeId::ATTR_GET, // read-only attribute
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   307
                   UintegerValue (0), // unused, read-only attribute
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   308
                   MakeUintegerAccessor (&UeManager::m_rnti),
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
   309
                   MakeUintegerChecker<uint16_t> ())
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   310
    .AddTraceSource ("StateTransition",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   311
                     "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
   312
                     MakeTraceSourceAccessor (&UeManager::m_stateTransitionTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   313
    ;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   314
  return tid;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   315
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   316
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   317
void 
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   318
UeManager::SetSource (uint16_t sourceCellId, uint16_t sourceX2apId)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   319
{
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   320
  m_sourceX2apId = sourceX2apId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   321
  m_sourceCellId = sourceCellId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   322
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   323
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   324
void 
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   325
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
   326
{
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   327
  m_imsi = imsi;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   328
}
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   329
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   330
void
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   331
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
   332
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   333
  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   334
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   335
  Ptr<LteDataRadioBearerInfo> drbInfo = CreateObject<LteDataRadioBearerInfo> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   336
  uint8_t drbid = AddDataRadioBearerInfo (drbInfo);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   337
  uint8_t lcid = Drbid2Lcid (drbid); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   338
  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
   339
  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
   340
  drbInfo->m_epsBearerIdentity = bid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   341
  drbInfo->m_drbIdentity = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   342
  drbInfo->m_logicalChannelIdentity = lcid;
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   343
  drbInfo->m_gtpTeid = gtpTeid;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   344
  drbInfo->m_transportLayerAddress = transportLayerAddress;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   345
9599
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   346
  if (m_state == HANDOVER_JOINING)
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   347
    {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   348
      // setup TEIDs for receiving data eventually forwarded over X2-U 
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   349
      LteEnbRrc::X2uTeidInfo x2uTeidInfo;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   350
      x2uTeidInfo.rnti = m_rnti;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   351
      x2uTeidInfo.drbid = drbid;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   352
      std::pair<std::map<uint32_t, LteEnbRrc::X2uTeidInfo>::iterator, bool>
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   353
        ret = m_rrc->m_x2uTeidInfoMap.insert (std::pair<uint32_t, LteEnbRrc::X2uTeidInfo> (gtpTeid, x2uTeidInfo));
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   354
      NS_ASSERT_MSG (ret.second == true, "overwriting a pre-existing entry in m_x2uTeidInfoMap");
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   355
    }
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   356
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   357
  TypeId rlcTypeId = m_rrc->GetRlcType (bearer);
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
  ObjectFactory rlcObjectFactory;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   360
  rlcObjectFactory.SetTypeId (rlcTypeId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   361
  Ptr<LteRlc> rlc = rlcObjectFactory.Create ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   362
  rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   363
  rlc->SetRnti (m_rnti);
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_rlc = rlc;
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
  rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   368
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   369
  // 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
   370
  // 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
   371
  if (rlcTypeId != LteRlcSm::GetTypeId ())
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
      Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   374
      pdcp->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   375
      pdcp->SetLcId (lcid);
9447
f836d3a3b71a added LteUeRrcSapProvider::CompleteSetup ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9445
diff changeset
   376
      pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   377
      pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   378
      rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   379
      drbInfo->m_pdcp = pdcp;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   380
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   381
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   382
  LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   383
  lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   384
  lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   385
  lcinfo.lcGroup = m_rrc->GetLogicalChannelGroup (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   386
  lcinfo.qci = bearer.qci;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   387
  lcinfo.isGbr = bearer.IsGbr ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   388
  lcinfo.mbrUl = bearer.gbrQosInfo.mbrUl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   389
  lcinfo.mbrDl = bearer.gbrQosInfo.mbrDl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   390
  lcinfo.gbrUl = bearer.gbrQosInfo.gbrUl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   391
  lcinfo.gbrDl = bearer.gbrQosInfo.gbrDl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   392
  m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   393
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   394
  if (drbInfo->m_rlc->GetTypeId () == LteRlcAm::GetTypeId ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   395
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   396
      drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::AM;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   397
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   398
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   399
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   400
      drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   401
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   402
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   403
  drbInfo->m_logicalChannelIdentity = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   404
  drbInfo->m_logicalChannelConfig.priority =  m_rrc->GetLogicalChannelPriority (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   405
  drbInfo->m_logicalChannelConfig.logicalChannelGroup = m_rrc->GetLogicalChannelGroup (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   406
  if (bearer.IsGbr ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   407
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   408
      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.gbrQosInfo.gbrUl;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   409
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   410
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   411
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   412
      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = 0;
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
  drbInfo->m_logicalChannelConfig.bucketSizeDurationMs = 1000;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   415
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   416
  ScheduleRrcConnectionReconfiguration ();
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   417
}
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   418
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   419
void
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   420
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
   421
{
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   422
  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
   423
  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
   424
       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
   425
       ++it)
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   426
    {
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   427
      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
   428
    }    
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   429
}
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   430
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   431
void
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   432
UeManager::StartDataRadioBearers ()
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   433
{
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   434
  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
   435
  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
   436
       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
   437
       ++drbIdIt)
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   438
    {
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   439
      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
   440
      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
   441
      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
   442
      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
   443
        {
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   444
          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
   445
        }
9523
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   446
    }
4f5bc596bf98 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg
Nicola Baldo <nbaldo@cttc.es>
parents: 9507
diff changeset
   447
  m_drbsToBeStarted.clear ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   448
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   449
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   450
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   451
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   452
UeManager::ReleaseDataRadioBearer (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   453
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   454
  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
   455
  uint8_t lcid = Drbid2Lcid (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   456
  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
   457
  NS_ASSERT_MSG (it != m_drbMap.end (), "request to remove radio bearer with unknown drbid " << drbid);
9599
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   458
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   459
  // first delete eventual X2-U TEIDs
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   460
  m_rrc->m_x2uTeidInfoMap.erase (it->second->m_gtpTeid);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   461
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   462
  m_drbMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   463
  m_rrc->m_cmacSapProvider->ReleaseLc (m_rnti, lcid);
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
  LteRrcSap::RadioResourceConfigDedicated rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   466
  rrcd.havePhysicalConfigDedicated = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   467
  rrcd.drbToReleaseList.push_back (drbid);
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
  LteRrcSap::RrcConnectionReconfiguration msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   470
  msg.haveMeasConfig = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   471
  msg.haveMobilityControlInfo = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   472
 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   473
  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   474
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   475
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   476
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   477
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   478
UeManager::ScheduleRrcConnectionReconfiguration ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   479
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   480
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   481
  switch (m_state)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   482
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   483
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   484
    case CONNECTION_SETUP:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   485
    case CONNECTION_RECONFIGURATION:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   486
    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
   487
    case HANDOVER_PREPARATION:
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   488
    case HANDOVER_JOINING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   489
    case HANDOVER_LEAVING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   490
      // 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
   491
      m_pendingRrcConnectionReconfiguration = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   492
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   493
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   494
    case CONNECTED_NORMALLY:      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   495
      {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   496
        m_pendingRrcConnectionReconfiguration = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   497
        LteRrcSap::RrcConnectionReconfiguration msg = BuildRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   498
        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
   499
        RecordDataRadioBearersToBeStarted ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   500
        SwitchToState (CONNECTION_RECONFIGURATION);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   501
      }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   502
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   503
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   504
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   505
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   506
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   507
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   508
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   509
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   510
void 
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   511
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
   512
{  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   513
  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
   514
  switch (m_state)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   515
    {
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   516
    case CONNECTED_NORMALLY:      
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
        m_targetCellId = cellId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   519
        EpcX2SapProvider::HandoverRequestParams params;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   520
        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
   521
        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
   522
        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
   523
        params.targetCellId   = cellId;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   524
        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
   525
        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
   526
        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
   527
        params.bearers = GetErabList ();
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   528
  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   529
        LteRrcSap::HandoverPreparationInfo hpi;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   530
        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
   531
        hpi.asConfig.sourceDlCarrierFreq = m_rrc->m_dlEarfcn;
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
   532
        hpi.asConfig.sourceMeasConfig = BuildMeasConfig ();
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   533
        hpi.asConfig.sourceRadioResourceConfig = GetRadioResourceConfigForHandoverPreparationInfo ();
9564
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   534
        hpi.asConfig.sourceMasterInformationBlock.dlBandwidth = m_rrc->m_dlBandwidth;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   535
        hpi.asConfig.sourceMasterInformationBlock.systemFrameNumber = 0;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   536
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity = 0;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   537
        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
   538
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication = 0;
6a07929995e2 Set hpi.asConfig.sourceSystemInformationBlockType1 correct values.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9558
diff changeset
   539
        hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity = 0;
9660
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
   540
        LteEnbCmacSapProvider::RachConfig rc = m_rrc->m_cmacSapProvider->GetRachConfig ();
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
   541
        hpi.asConfig.sourceSystemInformationBlockType2.radioResourceConfigCommon.rachConfigCommon.preambleInfo.numberOfRaPreambles = rc.numberOfRaPreambles;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
   542
        hpi.asConfig.sourceSystemInformationBlockType2.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.preambleTransMax = rc.preambleTransMax;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
   543
        hpi.asConfig.sourceSystemInformationBlockType2.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.raResponseWindowSize = rc.raResponseWindowSize;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
   544
        hpi.asConfig.sourceSystemInformationBlockType2.freqInfo.ulCarrierFreq = m_rrc->m_ulEarfcn;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
   545
        hpi.asConfig.sourceSystemInformationBlockType2.freqInfo.ulBandwidth = m_rrc->m_ulBandwidth;
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   546
        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
   547
  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   548
        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
   549
        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
   550
        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
   551
        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
   552
        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
   553
  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   554
        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
   555
        SwitchToState (HANDOVER_PREPARATION);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   556
      }
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   557
      break;      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   558
      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   559
    default:
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   560
      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
   561
      break;      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   562
    }
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   563
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   564
}
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   565
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   566
void 
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   567
UeManager::RecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   568
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   569
  NS_LOG_FUNCTION (this);
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   570
  
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   571
  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
   572
  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
   573
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   574
  // 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
   575
  // 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
   576
  // 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
   577
  // 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
   578
  // without actual RRC protocol encoding. 
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   579
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   580
  Ptr<Packet> encodedHandoverCommand = params.rrcContext;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   581
  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
   582
  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, handoverCommand);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   583
  SwitchToState (HANDOVER_LEAVING);
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   584
  m_handoverLeavingTimeout = Simulator::Schedule (m_rrc->m_handoverLeavingTimeoutDuration, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   585
                                                  &LteEnbRrc::HandoverLeavingTimeout, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   586
                                                  m_rrc, m_rnti);  
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   587
  NS_ASSERT (handoverCommand.haveMobilityControlInfo);  
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   588
  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
   589
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   590
  EpcX2SapProvider::SnStatusTransferParams sst;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   591
  sst.oldEnbUeX2apId = params.oldEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   592
  sst.newEnbUeX2apId = params.newEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   593
  sst.sourceCellId = params.sourceCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   594
  sst.targetCellId = params.targetCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   595
  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
   596
        drbIt != m_drbMap.end ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   597
        ++drbIt)
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   598
    {
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   599
      // 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
   600
      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
   601
        {
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   602
          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
   603
          EpcX2Sap::ErabsSubjectToStatusTransferItem i;          
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   604
          i.dlPdcpSn = status.txSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   605
          i.ulPdcpSn = status.rxSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   606
          sst.erabsSubjectToStatusTransferList.push_back (i);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   607
        }
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   608
    }
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   609
  m_rrc->m_x2SapProvider->SendSnStatusTransfer (sst);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   610
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   611
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   612
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   613
LteRrcSap::RadioResourceConfigDedicated
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   614
UeManager::GetRadioResourceConfigForHandoverPreparationInfo ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   615
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   616
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   617
  return BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   618
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   619
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   620
LteRrcSap::RrcConnectionReconfiguration 
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   621
UeManager::GetRrcConnectionReconfigurationForHandover ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   622
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   623
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   624
  return BuildRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   625
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   626
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   627
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   628
UeManager::SendData (uint8_t bid, Ptr<Packet> p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   629
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   630
  NS_LOG_FUNCTION (this << p << (uint16_t) bid);
9599
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   631
   switch (m_state)
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   632
    {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   633
    case INITIAL_RANDOM_ACCESS:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   634
    case CONNECTION_SETUP:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   635
      NS_LOG_WARN ("not connected, discarding packet");
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   636
      return;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   637
      break;      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   638
      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   639
    case CONNECTED_NORMALLY:      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   640
    case CONNECTION_RECONFIGURATION:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   641
    case CONNECTION_REESTABLISHMENT:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   642
    case HANDOVER_PREPARATION:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   643
    case HANDOVER_JOINING:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   644
    case HANDOVER_PATH_SWITCH:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   645
      {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   646
        NS_LOG_LOGIC ("queueing data on PDCP for transmission over the air");
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   647
        LtePdcpSapProvider::TransmitPdcpSduParameters params;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   648
        params.pdcpSdu = p;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   649
        params.rnti = m_rnti;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   650
        params.lcid = Bid2Lcid (bid);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   651
        uint8_t drbid = Bid2Drbid (bid);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   652
        LtePdcpSapProvider* pdcpSapProvider = GetDataRadioBearerInfo (drbid)->m_pdcp->GetLtePdcpSapProvider ();
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   653
        pdcpSapProvider->TransmitPdcpSdu (params);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   654
      }
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   655
      break;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   656
      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   657
    case HANDOVER_LEAVING:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   658
      {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   659
        NS_LOG_LOGIC ("forwarding data to target eNB over X2-U");
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   660
        uint8_t drbid = Bid2Drbid (bid);        
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   661
        EpcX2Sap::UeDataParams params;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   662
        params.sourceCellId = m_rrc->m_cellId;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   663
        params.targetCellId = m_targetCellId;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   664
        params.gtpTeid = GetDataRadioBearerInfo (drbid)->m_gtpTeid;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   665
        params.ueData = p;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   666
        m_rrc->m_x2SapProvider->SendUeData (params);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   667
      }      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   668
      break;
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   669
      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   670
    default:
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   671
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   672
      break;      
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
   673
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   674
}
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
std::vector<EpcX2Sap::ErabToBeSetupItem>   
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   677
UeManager::GetErabList ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   678
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   679
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   680
  std::vector<EpcX2Sap::ErabToBeSetupItem> ret;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   681
  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
   682
       it != m_drbMap.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   683
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   684
    {
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   685
      EpcX2Sap::ErabToBeSetupItem etbsi;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   686
      etbsi.erabId = it->second->m_epsBearerIdentity;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   687
      etbsi.erabLevelQosParameters = it->second->m_epsBearer;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   688
      etbsi.dlForwarding = false;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   689
      etbsi.transportLayerAddress = it->second->m_transportLayerAddress;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   690
      etbsi.gtpTeid = it->second->m_gtpTeid;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   691
      ret.push_back (etbsi);      
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   692
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   693
  return ret;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   694
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   695
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   696
void
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   697
UeManager::SendUeContextRelease ()
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   698
{
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   699
  NS_LOG_FUNCTION (this);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   700
  switch (m_state)
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   701
    {     
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   702
    case HANDOVER_PATH_SWITCH:
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   703
      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
   704
      EpcX2SapProvider::UeContextReleaseParams ueCtxReleaseParams;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   705
      ueCtxReleaseParams.oldEnbUeX2apId = m_sourceX2apId;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   706
      ueCtxReleaseParams.newEnbUeX2apId = m_rnti;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   707
      ueCtxReleaseParams.sourceCellId = m_sourceCellId;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   708
      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
   709
      SwitchToState (CONNECTED_NORMALLY);
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   710
      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
   711
      break;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   712
      
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   713
    default:
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   714
      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
   715
      break;      
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   716
    }
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   717
}
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   718
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   719
void 
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   720
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
   721
{
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   722
  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
   723
  switch (m_state)
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   724
    {     
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   725
    case HANDOVER_PREPARATION:   
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   726
      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
   727
      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
   728
      SwitchToState (CONNECTED_NORMALLY);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   729
      break;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   730
      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   731
    default:
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   732
      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
   733
      break;      
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   734
    }
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
   735
}
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   736
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   737
void 
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   738
UeManager::RecvSnStatusTransfer (EpcX2SapUser::SnStatusTransferParams params)
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   739
{
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   740
  NS_LOG_FUNCTION (this);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   741
  for (std::vector<EpcX2Sap::ErabsSubjectToStatusTransferItem>::iterator erabIt 
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   742
         = params.erabsSubjectToStatusTransferList.begin ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   743
       erabIt != params.erabsSubjectToStatusTransferList.end ();
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   744
       ++erabIt)
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   745
    {
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   746
      // LtePdcp::Status status;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   747
      // status.txSn = erabIt->dlPdcpSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   748
      // status.rxSn = erabIt->ulPdcpSn;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   749
      // uint8_t drbId = Bid2Drbid (erabIt->erabId);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   750
      // 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
   751
      // 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
   752
      // drbIt->second->m_pdcp->SetStatus (status);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   753
    }
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   754
}
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
   755
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   756
void 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   757
UeManager::RecvUeContextRelease (EpcX2SapUser::UeContextReleaseParams params)
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   758
{
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   759
  NS_LOG_FUNCTION (this);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   760
  NS_ASSERT_MSG (m_state == HANDOVER_LEAVING, "method unexpected in state " << ToString (m_state));
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   761
  m_handoverLeavingTimeout.Cancel ();  
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   762
}
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   763
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   764
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   765
// 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
   766
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   767
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   768
UeManager::CompleteSetupUe (LteEnbRrcSapProvider::CompleteSetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   769
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   770
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   771
  m_srb0->m_rlc->SetLteRlcSapUser (params.srb0SapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   772
  m_srb1->m_pdcp->SetLtePdcpSapUser (params.srb1SapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   773
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   774
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   775
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   776
UeManager::RecvRrcConnectionRequest (LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   777
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   778
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   779
  switch (m_state)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   780
    {
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   781
    case INITIAL_RANDOM_ACCESS:      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   782
      {      
9593
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   783
        if (m_rrc->m_admitRrcConnectionRequest == true)
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   784
          {
9593
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   785
            m_connectionTimeout.Cancel ();
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   786
            m_imsi = msg.ueIdentity;      
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   787
            if (m_rrc->m_s1SapProvider != 0)
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   788
              {
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   789
                m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   790
              }      
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   791
            LteRrcSap::RrcConnectionSetup msg2;
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   792
            msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   793
            msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   794
            m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   795
            RecordDataRadioBearersToBeStarted ();
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   796
            SwitchToState (CONNECTION_SETUP);
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   797
          }
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   798
        else
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   799
          {
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   800
            m_connectionTimeout.Cancel ();
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   801
            NS_LOG_INFO ("rejecting connection request for RNTI " << m_rnti);
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   802
            LteRrcSap::RrcConnectionReject rejectMsg;
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   803
            rejectMsg.waitTime = 3;
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   804
            m_rrc->m_rrcSapUser->SendRrcConnectionReject (m_rnti, rejectMsg);
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   805
            m_connectionRejectedTimeout = Simulator::Schedule (m_rrc->m_connectionRejectedTimeoutDuration, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   806
                                                       &LteEnbRrc::ConnectionRejectedTimeout, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   807
                                                       m_rrc, m_rnti);
9593
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   808
            SwitchToState (CONNECTION_REJECTED);
d1da1374c434 added CONNECTION_REJECTED state at LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9568
diff changeset
   809
          }        
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   810
      }
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   811
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   812
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   813
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   814
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   815
      break;      
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   816
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   817
}
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
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   820
UeManager::RecvRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   821
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   822
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   823
  switch (m_state)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   824
    {
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   825
    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
   826
      StartDataRadioBearers ();
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   827
      SwitchToState (CONNECTED_NORMALLY);
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   828
      m_rrc->m_connectionEstablishedTrace (m_imsi, m_rrc->m_cellId, m_rnti);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   829
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   830
            
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   831
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   832
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   833
      break;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   834
    }
9406
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
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   838
UeManager::RecvRrcConnectionReconfigurationCompleted (LteRrcSap::RrcConnectionReconfigurationCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   839
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   840
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   841
  switch (m_state)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   842
    {
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
   843
    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
   844
      StartDataRadioBearers ();   
9541
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   845
      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
   846
        {          
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   847
          // 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
   848
          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
   849
          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
   850
          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
   851
          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
   852
          
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   853
          // configure PHY
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   854
          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
   855
          
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
   856
          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
   857
        }
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   858
      SwitchToState (CONNECTED_NORMALLY);
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
   859
      m_rrc->m_connectionReconfigurationTrace (m_imsi, m_rrc->m_cellId, m_rnti);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   860
      break;
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   861
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   862
    case HANDOVER_LEAVING:      
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
   863
      NS_LOG_INFO ("ignoring RecvRrcConnectionReconfigurationCompleted in state " << ToString (m_state));
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   864
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   865
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   866
    case HANDOVER_JOINING:
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   867
      {
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   868
        m_handoverJoiningTimeout.Cancel ();
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   869
        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
   870
        EpcEnbS1SapProvider::PathSwitchRequestParameters params;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   871
        params.rnti = m_rnti;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   872
        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
   873
        params.mmeUeS1Id = m_imsi;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   874
        SwitchToState (HANDOVER_PATH_SWITCH);
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   875
        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
   876
             it != m_drbMap.end ();
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   877
             ++it)
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   878
          {
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   879
            EpcEnbS1SapProvider::BearerToBeSwitched b;
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   880
            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
   881
            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
   882
            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
   883
          }     
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
   884
        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
   885
      }
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
   886
      break;
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   887
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   888
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   889
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   890
      break;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   891
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   892
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   893
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   894
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   895
UeManager::RecvRrcConnectionReestablishmentRequest (LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   896
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   897
  NS_LOG_FUNCTION (this);
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   898
  switch (m_state)
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   899
    {
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   900
    case CONNECTED_NORMALLY:
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   901
      break;
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   902
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   903
    case HANDOVER_LEAVING:      
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   904
      m_handoverLeavingTimeout.Cancel ();  
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   905
      break;      
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   906
      
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   907
    default:
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   908
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   909
      break;      
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   910
    }
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
   911
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   912
  LteRrcSap::RrcConnectionReestablishment msg2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   913
  msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   914
  msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   915
  m_rrc->m_rrcSapUser->SendRrcConnectionReestablishment (m_rnti, msg2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   916
  SwitchToState (CONNECTION_REESTABLISHMENT);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   917
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   918
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   919
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   920
UeManager::RecvRrcConnectionReestablishmentComplete (LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   921
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   922
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   923
  SwitchToState (CONNECTED_NORMALLY);
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
9601
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
   926
void 
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
   927
UeManager::RecvMeasurementReport (LteRrcSap::MeasurementReport msg)
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
   928
{
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
   929
  NS_LOG_FUNCTION (this);
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   930
  NS_LOG_LOGIC ("measId " << (uint16_t) msg.measResults.measId
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   931
                << " haveMeasResultNeighCells " << msg.measResults.haveMeasResultNeighCells
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   932
                << " measResultListEutra " << msg.measResults.measResultListEutra.size ());
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   933
  NS_LOG_LOGIC ("serving cellId " << m_rrc->m_cellId
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   934
                << " RSRP " << (uint16_t) msg.measResults.rsrpResult
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   935
                << " RSRQ " << (uint16_t) msg.measResults.rsrqResult);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   936
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   937
  for (std::list <LteRrcSap::MeasResultEutra>::iterator it = msg.measResults.measResultListEutra.begin ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   938
       it != msg.measResults.measResultListEutra.end ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   939
       ++it)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   940
    {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   941
      NS_LOG_LOGIC ("neighbour cellId " << it->physCellId
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   942
                    << " RSRP " << (it->haveRsrpResult ? (uint16_t) it->rsrpResult : 255)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   943
                    << " RSRQ " << (it->haveRsrqResult ? (uint16_t) it->rsrqResult : 255));
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   944
    }
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   945
10011
6853962462ca Add trace callback when MeasurementReport is received
Manuel Requena <manuel.requena@cttc.es>
parents: 10008
diff changeset
   946
  m_rrc->m_recvMeasurementReportTrace (m_imsi, m_rrc->m_cellId, m_rnti, msg);
6853962462ca Add trace callback when MeasurementReport is received
Manuel Requena <manuel.requena@cttc.es>
parents: 10008
diff changeset
   947
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   948
  // Just these two measId are supported
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   949
  NS_ASSERT_MSG ((msg.measResults.measId == 1) || (msg.measResults.measId == 2),
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   950
                 "Measure identity is unknown");
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   951
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   952
  /// Event A2 (Serving becomes worse than threshold)
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   953
  if (msg.measResults.measId == 1)
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   954
    {
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   955
      // Keep new RSRQ value reported for the serving cell
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   956
      m_servingCellMeasures->m_rsrq = msg.measResults.rsrqResult;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   957
      m_servingCellMeasures->m_rsrp = msg.measResults.rsrpResult;
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   958
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   959
      // Serving cell is worse than a handover threshold.
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   960
      // This handover threshold is independent from the event A2 threshold
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   961
      if (m_servingCellMeasures->m_rsrq <= m_rrc->m_servingCellHandoverThreshold)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   962
        {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   963
          // Find the best neighbour cell (eNB)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   964
          Ptr<UeMeasure> bestNeighbour = 0;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   965
          uint8_t bestNeighbourRsrq = 0;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   966
          NS_LOG_LOGIC ("Number of neighbour cells = " << m_neighbourCellMeasures.size ());
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   967
          for (std::map <uint16_t, Ptr<UeMeasure> >::iterator it = m_neighbourCellMeasures.begin ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   968
               it != m_neighbourCellMeasures.end ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   969
               ++it)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   970
            {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   971
              if (it->second->m_rsrq > bestNeighbourRsrq)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   972
                {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   973
                  bestNeighbour = it->second;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   974
                  bestNeighbourRsrq = it->second->m_rsrq;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   975
                }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   976
            }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   977
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   978
          // Trigger Handover, if needed
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   979
          if (bestNeighbour)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   980
            {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   981
              uint16_t targetCellId = bestNeighbour->m_cellId;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   982
              NS_LOG_LOGIC ("Best neighbour cellId " << targetCellId);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   983
              if (bestNeighbour->m_rsrq - m_servingCellMeasures->m_rsrq >= m_rrc->m_neighbourCellHandoverOffset)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   984
                {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   985
                  NS_LOG_LOGIC ("Trigger Handover to cellId " << targetCellId);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   986
                  NS_LOG_LOGIC ("target cell RSRQ " << (uint16_t) bestNeighbour->m_rsrq);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   987
                  NS_LOG_LOGIC ("serving cell RSRQ " << (uint16_t) m_servingCellMeasures->m_rsrq);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   988
                  PrepareHandover (targetCellId);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   989
                }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   990
            }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   991
        }
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   992
    }
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   993
  /// Event A4 (Neighbour becomes better than threshold)
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   994
  else if (msg.measResults.measId == 2)
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   995
    {
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   996
      // Update the NRT
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   997
      if (msg.measResults.haveMeasResultNeighCells && ! (msg.measResults.measResultListEutra.empty ()))
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
   998
        {
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
   999
          for (std::list <LteRrcSap::MeasResultEutra>::iterator it = msg.measResults.measResultListEutra.begin ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1000
               it != msg.measResults.measResultListEutra.end ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1001
               ++it)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1002
            {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1003
              // Keep new RSRQ value reported for the neighbour cell
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1004
              NS_ASSERT_MSG (it->haveRsrqResult == true, "RSRQ measure missing for cellId " << it->physCellId);
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
  1005
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1006
              // Update Neighbour Relation Table
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1007
              if (m_rrc->m_neighbourRelationTable.find (it->physCellId) != m_rrc->m_neighbourRelationTable.end ())
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1008
                {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1009
                  // Update neighbour info
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1010
                  Ptr<NeighbourRelation> neighbourRelation = m_rrc->m_neighbourRelationTable[it->physCellId];
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1011
                  NS_ASSERT_MSG (neighbourRelation->m_physCellId == it->physCellId,
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1012
                                 "Wrong cellId " << neighbourRelation->m_physCellId);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1013
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1014
                  if (neighbourRelation->m_noX2 == false)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1015
                    {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1016
                      neighbourRelation->m_noHo = false;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1017
                    }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1018
                  neighbourRelation->m_detectedAsNeighbour = true;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1019
                }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1020
              else // new neighbour
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1021
                {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1022
                  Ptr<NeighbourRelation> neighbourRelation = CreateObject <NeighbourRelation> ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1023
                  neighbourRelation->m_physCellId = it->physCellId;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1024
                  neighbourRelation->m_noRemove = false;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1025
                  neighbourRelation->m_noHo = true;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1026
                  neighbourRelation->m_noX2 = true;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1027
                  neighbourRelation->m_detectedAsNeighbour = true;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1028
                  m_rrc->m_neighbourRelationTable[it->physCellId] = neighbourRelation;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1029
                }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1030
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1031
              // Update measure info of the neighbour cell
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1032
              Ptr<UeMeasure> neighbourCellMeasures;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1033
              if (m_neighbourCellMeasures.find (it->physCellId) != m_neighbourCellMeasures.end ())
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1034
                {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1035
                  neighbourCellMeasures = m_neighbourCellMeasures[it->physCellId];
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1036
                  neighbourCellMeasures->m_cellId = it->physCellId;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1037
                  neighbourCellMeasures->m_rsrq = it->rsrqResult;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1038
                  neighbourCellMeasures->m_rsrp = 0;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1039
                }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1040
              else
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1041
                {
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1042
                  neighbourCellMeasures = CreateObject <UeMeasure> ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1043
                  neighbourCellMeasures->m_cellId = it->physCellId;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1044
                  neighbourCellMeasures->m_rsrq = it->rsrqResult;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1045
                  neighbourCellMeasures->m_rsrp = 0;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1046
                  m_neighbourCellMeasures[it->physCellId] = neighbourCellMeasures;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1047
                }
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1048
            }
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
  1049
        }
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
  1050
      else
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
  1051
        {
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1052
           NS_LOG_LOGIC ("WARNING");
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1053
//            NS_ASSERT_MSG ("Event A4 received without measure results for neighbour cells");
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1054
           // TODO Remove neighbours in the neighbourCellMeasures table
10008
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
  1055
        }
e964b76bc631 Add some code in the reception of the MeasurementReport message
Manuel Requena <manuel.requena@cttc.es>
parents: 10006
diff changeset
  1056
    }
9601
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1057
}
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1058
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1059
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1060
// 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
  1061
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1062
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1063
UeManager::CmacUeConfigUpdateInd (LteEnbCmacSapUser::UeConfig cmacParams)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1064
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1065
  NS_LOG_FUNCTION (this << m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1066
  // 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
  1067
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1068
  m_physicalConfigDedicated.antennaInfo.transmissionMode = cmacParams.m_transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1069
9541
7811eb81a32c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED
Nicola Baldo <nbaldo@cttc.es>
parents: 9528
diff changeset
  1070
  m_needTransmissionModeConfiguration = true;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1071
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1072
  // reconfigure the UE RRC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1073
  ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1074
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1075
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1076
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1077
// 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
  1078
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1079
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1080
UeManager::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1081
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1082
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1083
  if (params.lcid > 2)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1084
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1085
      // data radio bearer
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1086
      EpsBearerTag tag;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1087
      tag.SetRnti (params.rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1088
      tag.SetBid (Lcid2Bid (params.lcid));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1089
      params.pdcpSdu->AddPacketTag (tag);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1090
      m_rrc->m_forwardUpCallback (params.pdcpSdu);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1091
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1092
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1093
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1094
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1095
uint16_t
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1096
UeManager::GetRnti (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1097
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1098
  return m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1099
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1100
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
  1101
uint64_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1102
UeManager::GetImsi (void)
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
  1103
{
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
  1104
  return m_imsi;
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
  1105
}
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
  1106
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1107
uint16_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1108
UeManager::GetSrsConfigurationIndex (void)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1109
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1110
  return m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1111
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1112
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1113
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1114
UeManager::SetSrsConfigurationIndex (uint16_t srsConfIndex)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1115
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1116
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1117
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = srsConfIndex;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1118
  m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (m_rnti, srsConfIndex);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1119
  switch (m_state)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1120
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1121
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1122
      // do nothing, srs conf index will be correctly enforced upon
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1123
      // RRC connection establishment
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1124
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1125
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1126
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1127
      ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1128
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1129
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1130
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1131
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1132
UeManager::State
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1133
UeManager::GetState (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1134
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1135
  return m_state;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1136
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1137
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1138
uint8_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1139
UeManager::AddDataRadioBearerInfo (Ptr<LteDataRadioBearerInfo> drbInfo)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1140
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1141
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1142
  const uint8_t MAX_DRB_ID = 32;  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1143
  for (uint8_t drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1144
       drbid != m_lastAllocatedDrbid; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1145
       drbid = (drbid + 1) % MAX_DRB_ID)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1146
    {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1147
      if (drbid != 0) // 0 is not allowed
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1148
        {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1149
          if (m_drbMap.find (drbid) == m_drbMap.end ())
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1150
            {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1151
              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
  1152
              drbInfo->m_drbIdentity = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1153
              m_lastAllocatedDrbid = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1154
              return drbid;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1155
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1156
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1157
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1158
  NS_FATAL_ERROR ("no more data radio bearer ids available");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1159
  return 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1160
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1161
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1162
Ptr<LteDataRadioBearerInfo>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1163
UeManager::GetDataRadioBearerInfo (uint8_t drbid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1164
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1165
  NS_LOG_FUNCTION (this << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1166
  NS_ASSERT (0 != drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1167
  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
  1168
  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
  1169
  return it->second;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1170
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1171
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1172
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1173
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1174
UeManager::RemoveDataRadioBearerInfo (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1175
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1176
  NS_LOG_FUNCTION (this << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1177
  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
  1178
  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
  1179
  m_drbMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1180
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1181
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1182
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1183
LteRrcSap::RrcConnectionReconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1184
UeManager::BuildRrcConnectionReconfiguration ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1185
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1186
  LteRrcSap::RrcConnectionReconfiguration msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1187
  msg.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1188
  msg.haveRadioResourceConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1189
  msg.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1190
  msg.haveMobilityControlInfo = false;
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1191
  msg.haveMeasConfig = true;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1192
  msg.measConfig = BuildMeasConfig ();
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1193
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1194
  return msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1195
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1196
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1197
LteRrcSap::MeasConfig
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1198
UeManager::BuildMeasConfig ()
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1199
{
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1200
  // Just intra-frequency measurements are supported,
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1201
  // so just one measurement object is created
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1202
  LteRrcSap::MeasObjectToAddMod measObject;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1203
  measObject.measObjectId = 1;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1204
  measObject.measObjectEutra.carrierFreq = m_rrc->m_dlEarfcn;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1205
  measObject.measObjectEutra.allowedMeasBandwidth = m_rrc->m_dlBandwidth;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1206
  measObject.measObjectEutra.presenceAntennaPort1 = false;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1207
  measObject.measObjectEutra.neighCellConfig = 0;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1208
  measObject.measObjectEutra.offsetFreq = 0;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1209
  measObject.measObjectEutra.haveCellForWhichToReportCGI = false;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1210
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1211
  // Just event A2 and event A4 are supported
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1212
  LteRrcSap::ReportConfigToAddMod reportConfigA2;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1213
  reportConfigA2.reportConfigId = 1;
10028
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1214
  reportConfigA2.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::EVENT;
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1215
  reportConfigA2.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A2;
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1216
  reportConfigA2.reportConfigEutra.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1217
  reportConfigA2.reportConfigEutra.threshold1.range = m_rrc->m_eventA2Threshold;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1218
  reportConfigA2.reportConfigEutra.hysteresis = 0;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1219
  reportConfigA2.reportConfigEutra.timeToTrigger = 0;
10028
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1220
  reportConfigA2.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1221
  reportConfigA2.reportConfigEutra.reportQuantity = LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY; 
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1222
  reportConfigA2.reportConfigEutra.maxReportCells = LteRrcSap::MaxReportCells;
10028
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1223
  reportConfigA2.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS480;
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1224
  reportConfigA2.reportConfigEutra.reportAmount = 255;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1225
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1226
  LteRrcSap::ReportConfigToAddMod reportConfigA4;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1227
  reportConfigA4.reportConfigId = 2;
10028
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1228
  reportConfigA4.reportConfigEutra.triggerType = LteRrcSap::ReportConfigEutra::EVENT;
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1229
  reportConfigA4.reportConfigEutra.eventId = LteRrcSap::ReportConfigEutra::EVENT_A4;
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1230
  reportConfigA4.reportConfigEutra.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1231
  reportConfigA4.reportConfigEutra.threshold1.range = m_rrc->m_eventA4Threshold;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1232
  reportConfigA4.reportConfigEutra.hysteresis = 0;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1233
  reportConfigA4.reportConfigEutra.timeToTrigger = 0;
10028
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1234
  reportConfigA4.reportConfigEutra.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1235
  reportConfigA4.reportConfigEutra.reportQuantity = LteRrcSap::ReportConfigEutra::SAME_AS_TRIGGER_QUANTITY; 
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1236
  reportConfigA4.reportConfigEutra.maxReportCells = LteRrcSap::MaxReportCells;
10028
f988b82ef6ec Capitalize constants in enums, according to ns3 coding style.
Lluís Parcerisa <parcerisa@gmail.com>
parents: 10022
diff changeset
  1237
  reportConfigA4.reportConfigEutra.reportInterval = LteRrcSap::ReportConfigEutra::MS480;
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1238
  reportConfigA4.reportConfigEutra.reportAmount = 255;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1239
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1240
  LteRrcSap::MeasIdToAddMod measId[2];
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1241
  measId[0].measId = 1;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1242
  measId[0].measObjectId = 1;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1243
  measId[0].reportConfigId = 1;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1244
  measId[1].measId = 2;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1245
  measId[1].measObjectId = 1;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1246
  measId[1].reportConfigId = 2;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1247
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1248
  LteRrcSap::MeasConfig measConfig;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1249
  measConfig.measObjectToAddModList.push_back (measObject);
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1250
  measConfig.reportConfigToAddModList.push_back (reportConfigA2);
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1251
  measConfig.reportConfigToAddModList.push_back (reportConfigA4);
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1252
  measConfig.measIdToAddModList.push_back (measId[0]);
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1253
  measConfig.measIdToAddModList.push_back (measId[1]);
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1254
  measConfig.haveQuantityConfig = true;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1255
  measConfig.quantityConfig.filterCoefficientRSRP = 4; // default = fc4 (See TS 36.331)
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1256
  measConfig.quantityConfig.filterCoefficientRSRQ = 4; // default = fc4 (See TS 36.331)
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1257
  measConfig.haveMeasGapConfig = false;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1258
  measConfig.haveSmeasure = false;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1259
  measConfig.haveSpeedStatePars = false;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1260
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1261
  return measConfig;
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1262
}
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1263
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1264
LteRrcSap::RadioResourceConfigDedicated
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1265
UeManager::BuildRadioResourceConfigDedicated ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1266
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1267
  LteRrcSap::RadioResourceConfigDedicated rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1268
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1269
  if (m_srb1 != 0)
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
      LteRrcSap::SrbToAddMod stam;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1272
      stam.srbIdentity = m_srb1->m_srbIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1273
      stam.logicalChannelConfig = m_srb1->m_logicalChannelConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1274
      rrcd.srbToAddModList.push_back (stam);
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
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1277
  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
  1278
       it != m_drbMap.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1279
       ++it)
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
      LteRrcSap::DrbToAddMod dtam;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1282
      dtam.epsBearerIdentity = it->second->m_epsBearerIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1283
      dtam.drbIdentity = it->second->m_drbIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1284
      dtam.rlcConfig = it->second->m_rlcConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1285
      dtam.logicalChannelIdentity = it->second->m_logicalChannelIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1286
      dtam.logicalChannelConfig = it->second->m_logicalChannelConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1287
      rrcd.drbToAddModList.push_back (dtam);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1288
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1289
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1290
  rrcd.havePhysicalConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1291
  rrcd.physicalConfigDedicated = m_physicalConfigDedicated;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1292
  return rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1293
}
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
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1296
UeManager::GetNewRrcTransactionIdentifier ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1297
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1298
  return ++m_lastRrcTransactionIdentifier;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1299
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1300
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1301
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1302
UeManager::Lcid2Drbid (uint8_t lcid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1303
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1304
  NS_ASSERT (lcid > 2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1305
  return lcid - 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1306
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1307
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1308
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1309
UeManager::Drbid2Lcid (uint8_t drbid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1310
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1311
  return drbid + 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1312
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1313
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1314
UeManager::Lcid2Bid (uint8_t lcid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1315
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1316
  NS_ASSERT (lcid > 2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1317
  return lcid - 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1318
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1319
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1320
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1321
UeManager::Bid2Lcid (uint8_t bid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1322
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1323
  return bid + 2;
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1326
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1327
UeManager::Drbid2Bid (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1328
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1329
  return drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1330
}
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
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1333
UeManager::Bid2Drbid (uint8_t bid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1334
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1335
  return bid;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1336
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1337
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1338
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1339
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1340
UeManager::SwitchToState (State newState)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1341
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1342
  NS_LOG_FUNCTION (this << newState);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1343
  State oldState = m_state;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1344
  m_state = newState;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1345
  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
  1346
  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
  1347
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1348
  switch (newState)
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
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1351
    case HANDOVER_JOINING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1352
      NS_FATAL_ERROR ("cannot switch to an initial state");      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1353
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1354
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1355
    case CONNECTION_SETUP:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1356
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1357
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1358
    case CONNECTED_NORMALLY:    
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
        if (m_pendingRrcConnectionReconfiguration == true)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1361
          {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1362
            ScheduleRrcConnectionReconfiguration ();
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
      }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1365
      break;
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
    case CONNECTION_RECONFIGURATION:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1368
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1369
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1370
    case CONNECTION_REESTABLISHMENT:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1371
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1372
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1373
    case HANDOVER_LEAVING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1374
      break;      
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
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1377
      break;
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
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1380
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1381
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1382
  
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1383
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1384
// eNB RRC methods
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1385
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1386
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
  1387
NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1388
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1389
LteEnbRrc::LteEnbRrc ()
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1390
  : m_x2SapProvider (0),
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1391
    m_cmacSapProvider (0),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1392
    m_rrcSapUser (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1393
    m_macSapProvider (0),
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1394
    m_s1SapProvider (0),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1395
    m_cphySapProvider (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1396
    m_configured (false),
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1397
    m_lastAllocatedRnti (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1398
    m_srsCurrentPeriodicityId (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1399
    m_lastAllocatedConfigurationIndex (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1400
    m_reconfigureUes (false)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1401
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1402
  NS_LOG_FUNCTION (this);
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
  1403
  m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1404
  m_rrcSapProvider = new MemberLteEnbRrcSapProvider<LteEnbRrc> (this);
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1405
  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
  1406
  m_s1SapUser = new MemberEpcEnbS1SapUser<LteEnbRrc> (this);
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1407
  m_cphySapUser = new MemberLteEnbCphySapUser<LteEnbRrc> (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1408
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1409
 
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1410
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1411
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1412
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1413
LteEnbRrc::~LteEnbRrc ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1414
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1415
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1416
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1417
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1418
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1419
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1420
LteEnbRrc::DoDispose ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1421
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1422
  NS_LOG_FUNCTION (this);
9623
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  1423
  m_ueMap.clear ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1424
  delete m_cmacSapUser;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1425
  delete m_rrcSapProvider;
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1426
  delete m_x2SapUser;
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1427
  delete m_s1SapUser;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1428
  delete m_cphySapUser;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1429
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1430
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1431
TypeId
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1432
LteEnbRrc::GetTypeId (void)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1433
{
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1434
  NS_LOG_FUNCTION ("LteEnbRrc::GetTypeId");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1435
  static TypeId tid = TypeId ("ns3::LteEnbRrc")
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1436
    .SetParent<Object> ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1437
    .AddConstructor<LteEnbRrc> ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1438
    .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
  1439
                   ObjectMapValue (),
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
  1440
                   MakeObjectMapAccessor (&LteEnbRrc::m_ueMap),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1441
                   MakeObjectMapChecker<UeManager> ())
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1442
    .AddAttribute ("DefaultTransmissionMode",
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1443
                  "The default UEs' transmission mode (0: SISO)",
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1444
                  UintegerValue (0),  // default tx-mode
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1445
                  MakeUintegerAccessor (&LteEnbRrc::m_defaultTransmissionMode),
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
  1446
                  MakeUintegerChecker<uint8_t> ())
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1447
    .AddAttribute ("EpsBearerToRlcMapping", 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1448
                   "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
  1449
                   EnumValue (RLC_SM_ALWAYS),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1450
                   MakeEnumAccessor (&LteEnbRrc::m_epsBearerToRlcMapping),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1451
                   MakeEnumChecker (RLC_SM_ALWAYS, "RlcSmAlways",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1452
                                    RLC_UM_ALWAYS, "RlcUmAlways",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1453
                                    RLC_AM_ALWAYS, "RlcAmAlways",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1454
                                    PER_BASED,     "PacketErrorRateBased"))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1455
    .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
  1456
                   "The interval for sending system information (Time value)",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1457
                   TimeValue (MilliSeconds (80)),  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1458
                   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
  1459
                   MakeTimeChecker ())
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1460
    .AddAttribute ("SrsPeriodicity",
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1461
                   "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
  1462
                   UintegerValue (40),  
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  1463
                   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
  1464
                                         &LteEnbRrc::GetSrsPeriodicity),
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1465
                   MakeUintegerChecker<uint32_t> ())
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1466
    .AddAttribute ("ConnectionTimeoutDuration",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1467
                   "After a RA attempt, if no RRC Connection Request is received before this time, the UE context is destroyed. Must account for reception of RAR and transmission of RRC CONNECTION REQUEST over UL GRANT.",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1468
                   TimeValue (MilliSeconds (15)),  
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1469
                   MakeTimeAccessor (&LteEnbRrc::m_connectionTimeoutDuration),
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1470
                   MakeTimeChecker ())
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1471
    .AddAttribute ("ConnectionRejectedTimeoutDuration",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1472
                   "Time to wait between sending a RRC CONNECTION REJECT and destroying the UE context",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1473
                   TimeValue (MilliSeconds (30)),  
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1474
                   MakeTimeAccessor (&LteEnbRrc::m_connectionRejectedTimeoutDuration),
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1475
                   MakeTimeChecker ())
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1476
    .AddAttribute ("HandoverJoiningTimeoutDuration",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1477
                   "After accepting a handover request, if no RRC Connection Reconfiguration Completed is received before this time, the UE context is destroyed. Must account for reception of X2 HO REQ ACK by source eNB, transmission of the Handover Command, non-contention-based random access and reception of the RRC Connection Reconfiguration Completed message.",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1478
                   TimeValue (MilliSeconds (200)),  
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1479
                   MakeTimeAccessor (&LteEnbRrc::m_handoverJoiningTimeoutDuration),
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1480
                   MakeTimeChecker ())
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1481
    .AddAttribute ("HandoverLeavingTimeoutDuration",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1482
                   "After issuing a Handover Command, if neither RRC Connection Reestablishment nor X2 UE Context Release has been previously received, the UE context is destroyed.",
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1483
                   TimeValue (MilliSeconds (500)),  
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1484
                   MakeTimeAccessor (&LteEnbRrc::m_handoverLeavingTimeoutDuration),
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1485
                   MakeTimeChecker ())
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1486
   .AddAttribute ("AdmitHandoverRequest",
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1487
                   "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
  1488
                   BooleanValue (true),  
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1489
                   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
  1490
                   MakeBooleanChecker ()) 
9528
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1491
   .AddAttribute ("AdmitRrcConnectionRequest",
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1492
                   "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
  1493
                   BooleanValue (true),  
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1494
                   MakeBooleanAccessor (&LteEnbRrc::m_admitRrcConnectionRequest),
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1495
                   MakeBooleanChecker ())
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1496
    .AddAttribute ("EventA2Threshold",
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1497
                   "Threshold of the event A2 (Serving becomes worse than threshold)",
10006
d4dffaadf383 Events A2 and A4 trigger with all RSRQ values
Manuel Requena <manuel.requena@cttc.es>
parents: 9998
diff changeset
  1498
                   UintegerValue (34),
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1499
                   MakeUintegerAccessor (&LteEnbRrc::m_eventA2Threshold),
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1500
                   MakeUintegerChecker<uint8_t> ())
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1501
    .AddAttribute ("EventA4Threshold",
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1502
                   "Threshold of the event A4 (Neighbour becomes better than threshold)",
10006
d4dffaadf383 Events A2 and A4 trigger with all RSRQ values
Manuel Requena <manuel.requena@cttc.es>
parents: 9998
diff changeset
  1503
                   UintegerValue (0),
9991
3d1c37a99e73 Add MeasConfig IE in the RRC Connection Reconfiguration message
Manuel Requena <manuel.requena@cttc.es>
parents: 9668
diff changeset
  1504
                   MakeUintegerAccessor (&LteEnbRrc::m_eventA4Threshold),
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1505
                   MakeUintegerChecker<uint8_t> ())
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1506
    .AddAttribute ("ServingCellHandoverThreshold",
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1507
                   "If serving cell is worse than this threshold, neighbour cells are consider for Handover",
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1508
                   UintegerValue (15),
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1509
                   MakeUintegerAccessor (&LteEnbRrc::m_servingCellHandoverThreshold),
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1510
                   MakeUintegerChecker<uint8_t> ())
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1511
    .AddAttribute ("NeighbourCellHandoverOffset",
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1512
                   "Minimum offset between serving and best neighbour cell to trigger the Handover",
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1513
                   UintegerValue (1),
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1514
                   MakeUintegerAccessor (&LteEnbRrc::m_neighbourCellHandoverOffset),
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  1515
                   MakeUintegerChecker<uint8_t> ())
9615
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
  1516
    .AddTraceSource ("NewUeContext",
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
  1517
                     "trace fired upon creation of a new UE context",
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
  1518
                     MakeTraceSourceAccessor (&LteEnbRrc::m_newUeContextTrace))
9452
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1519
    .AddTraceSource ("ConnectionEstablished",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1520
                     "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
  1521
                     MakeTraceSourceAccessor (&LteEnbRrc::m_connectionEstablishedTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1522
    .AddTraceSource ("ConnectionReconfiguration",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1523
                     "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
  1524
                     MakeTraceSourceAccessor (&LteEnbRrc::m_connectionReconfigurationTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1525
    .AddTraceSource ("HandoverStart",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1526
                     "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
  1527
                     MakeTraceSourceAccessor (&LteEnbRrc::m_handoverStartTrace))
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1528
    .AddTraceSource ("HandoverEndOk",
9fa1012bd84b dynamic connection of RadioBearerStatsCalculator so it works properly with handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9447
diff changeset
  1529
                     "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
  1530
                     MakeTraceSourceAccessor (&LteEnbRrc::m_handoverEndOkTrace))
10011
6853962462ca Add trace callback when MeasurementReport is received
Manuel Requena <manuel.requena@cttc.es>
parents: 10008
diff changeset
  1531
    .AddTraceSource ("RecvMeasurementReport",
6853962462ca Add trace callback when MeasurementReport is received
Manuel Requena <manuel.requena@cttc.es>
parents: 10008
diff changeset
  1532
                     "trace fired when measurement report is received",
6853962462ca Add trace callback when MeasurementReport is received
Manuel Requena <manuel.requena@cttc.es>
parents: 10008
diff changeset
  1533
                     MakeTraceSourceAccessor (&LteEnbRrc::m_recvMeasurementReportTrace))
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
  1534
  ;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1535
  return tid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1536
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1537
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1538
void
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1539
LteEnbRrc::SetEpcX2SapProvider (EpcX2SapProvider * s)
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1540
{
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1541
  NS_LOG_FUNCTION (this << s);
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1542
  m_x2SapProvider = s;
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1543
}
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1544
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1545
EpcX2SapUser*
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1546
LteEnbRrc::GetEpcX2SapUser ()
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1547
{
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1548
  NS_LOG_FUNCTION (this);
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1549
  return m_x2SapUser;
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1550
}
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
  1551
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1552
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1553
LteEnbRrc::SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1554
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1555
  NS_LOG_FUNCTION (this << s);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1556
  m_cmacSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1557
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1558
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1559
LteEnbCmacSapUser*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1560
LteEnbRrc::GetLteEnbCmacSapUser ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1561
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1562
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1563
  return m_cmacSapUser;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1564
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1565
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1566
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1567
LteEnbRrc::SetLteEnbRrcSapUser (LteEnbRrcSapUser * s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1568
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1569
  NS_LOG_FUNCTION (this << s);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1570
  m_rrcSapUser = s;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1571
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1572
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1573
LteEnbRrcSapProvider*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1574
LteEnbRrc::GetLteEnbRrcSapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1575
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1576
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1577
  return m_rrcSapProvider;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1578
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1579
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1580
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1581
LteEnbRrc::SetLteMacSapProvider (LteMacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1582
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1583
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1584
  m_macSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1585
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1586
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1587
void 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1588
LteEnbRrc::SetS1SapProvider (EpcEnbS1SapProvider * s)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1589
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1590
  m_s1SapProvider = s;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1591
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1592
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1593
  
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1594
EpcEnbS1SapUser* 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1595
LteEnbRrc::GetS1SapUser ()
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1596
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1597
  return m_s1SapUser;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1598
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1599
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1600
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1601
LteEnbRrc::SetLteEnbCphySapProvider (LteEnbCphySapProvider * s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1602
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1603
  NS_LOG_FUNCTION (this << s);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1604
  m_cphySapProvider = s;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1605
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1606
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1607
LteEnbCphySapUser*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1608
LteEnbRrc::GetLteEnbCphySapUser ()
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1609
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1610
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1611
  return m_cphySapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1612
}
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
Ptr<UeManager>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1615
LteEnbRrc::GetUeManager (uint16_t rnti)
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
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1618
  NS_ASSERT (0 != rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1619
  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
  1620
  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
  1621
  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
  1622
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1623
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1624
void
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1625
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
  1626
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1627
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1628
  NS_ASSERT (!m_configured);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1629
  m_cmacSapProvider->ConfigureMac (ulBandwidth, dlBandwidth);
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1630
  m_cphySapProvider->SetBandwidth (ulBandwidth, dlBandwidth);
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1631
  m_cphySapProvider->SetEarfcn (ulEarfcn, dlEarfcn);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1632
  m_dlEarfcn = dlEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1633
  m_ulEarfcn = ulEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1634
  m_dlBandwidth = dlBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1635
  m_ulBandwidth = ulBandwidth;
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1636
  m_cellId = cellId;
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1637
  m_cphySapProvider->SetCellId (cellId);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1638
  LteRrcSap::MasterInformationBlock mib;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1639
  mib.dlBandwidth = m_dlBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1640
  m_cphySapProvider->SetMasterInformationBlock (mib);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1641
  m_configured = true;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1642
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1643
  // the first time System Information is sent
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1644
  Simulator::Schedule (MilliSeconds (16), &LteEnbRrc::SendSystemInformation, this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1645
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1646
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1647
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1648
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1649
LteEnbRrc::SetCellId (uint16_t cellId)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1650
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1651
  m_cellId = cellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1652
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1653
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1654
bool
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1655
LteEnbRrc::SendData (Ptr<Packet> packet)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1656
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1657
  NS_LOG_FUNCTION (this << packet);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1658
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1659
  EpsBearerTag tag;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1660
  bool found = packet->RemovePacketTag (tag);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1661
  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
  1662
  Ptr<UeManager> ueManager = GetUeManager (tag.GetRnti ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1663
  ueManager->SendData (tag.GetBid (), packet);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1664
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1665
  return true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1666
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1667
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1668
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1669
LteEnbRrc::SetForwardUpCallback (Callback <void, Ptr<Packet> > cb)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1670
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1671
  m_forwardUpCallback = cb;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1672
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1673
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1674
void
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1675
LteEnbRrc::ConnectionTimeout (uint16_t rnti)
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1676
{
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1677
  NS_LOG_FUNCTION (this << rnti);
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1678
  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::INITIAL_RANDOM_ACCESS, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1679
                 "ConnectionTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1680
  RemoveUe (rnti);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1681
}
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1682
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1683
void
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1684
LteEnbRrc::ConnectionRejectedTimeout (uint16_t rnti)
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1685
{
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1686
  NS_LOG_FUNCTION (this << rnti);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1687
  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::CONNECTION_REJECTED,
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1688
                 "ConnectionTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
9567
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1689
  RemoveUe (rnti);
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1690
}
6941db633724 remove context at eNB after UE connection timeout
Nicola Baldo <nbaldo@cttc.es>
parents: 9564
diff changeset
  1691
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1692
void
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1693
LteEnbRrc::HandoverJoiningTimeout (uint16_t rnti)
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1694
{
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1695
  NS_LOG_FUNCTION (this << rnti);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1696
  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_JOINING, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1697
                 "HandoverJoiningTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1698
  RemoveUe (rnti);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1699
}
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1700
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1701
void
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1702
LteEnbRrc::HandoverLeavingTimeout (uint16_t rnti)
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1703
{
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1704
  NS_LOG_FUNCTION (this << rnti);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1705
  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_LEAVING, 
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1706
                 "HandoverLeavingTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1707
  RemoveUe (rnti);
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1708
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1709
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1710
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1711
LteEnbRrc::SendHandoverRequest (uint16_t rnti, uint16_t cellId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1712
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1713
  NS_LOG_FUNCTION (this << rnti << cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1714
  NS_LOG_LOGIC ("Request to send HANDOVER REQUEST");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1715
  NS_ASSERT (m_configured);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1716
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1717
  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
  1718
  ueManager->PrepareHandover (cellId);
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1719
 
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1720
}
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1721
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1722
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1723
LteEnbRrc::DoCompleteSetupUe (uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1724
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1725
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1726
  GetUeManager (rnti)->CompleteSetupUe (params);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1727
}
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1728
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1729
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1730
LteEnbRrc::DoRecvRrcConnectionRequest (uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1731
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1732
  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
  1733
  
19959697c48e Add implementation of RRC Connection Reject in Ue Recv.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9523
diff changeset
  1734
    GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1735
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1736
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1737
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1738
LteEnbRrc::DoRecvRrcConnectionSetupCompleted (uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1739
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1740
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1741
  GetUeManager (rnti)->RecvRrcConnectionSetupCompleted (msg);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1742
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1743
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1744
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1745
LteEnbRrc::DoRecvRrcConnectionReconfigurationCompleted (uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1746
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1747
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1748
  GetUeManager (rnti)->RecvRrcConnectionReconfigurationCompleted (msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1749
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1750
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1751
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1752
LteEnbRrc::DoRecvRrcConnectionReestablishmentRequest (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1753
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1754
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1755
  GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1756
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1757
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1758
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1759
LteEnbRrc::DoRecvRrcConnectionReestablishmentComplete (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1760
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1761
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1762
  GetUeManager (rnti)->RecvRrcConnectionReestablishmentComplete (msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1763
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1764
9601
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1765
void 
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1766
LteEnbRrc::DoRecvMeasurementReport (uint16_t rnti, LteRrcSap::MeasurementReport msg)
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1767
{
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1768
  NS_LOG_FUNCTION (this << rnti);
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1769
  GetUeManager (rnti)->RecvMeasurementReport (msg);
869b6ed3ad40 Add MeasurementReport to Send/Rcv functions in real and ideal protocol.
Lluis Parcerisa <parcerisa@gmail.com>
parents: 9599
diff changeset
  1770
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1771
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1772
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1773
LteEnbRrc::DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters request)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1774
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1775
  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
  1776
  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
  1777
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1778
9439
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1779
void 
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1780
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
  1781
{
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1782
  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
  1783
  ueManager->SendUeContextRelease ();
5107601b7a75 added S1 path switch + S11 modify bearer for X2 handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9438
diff changeset
  1784
}
9406
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
void
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1787
LteEnbRrc::DoRecvHandoverRequest (EpcX2SapUser::HandoverRequestParams req)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1788
{
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1789
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1790
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1791
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1792
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1793
  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
  1794
  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
  1795
  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
  1796
  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
  1797
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1798
  NS_ASSERT (req.targetCellId == m_cellId);
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1799
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1800
  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
  1801
    {
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1802
      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
  1803
      EpcX2Sap::HandoverPreparationFailureParams res;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1804
      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
  1805
      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
  1806
      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
  1807
      res.cause = 0;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1808
      res.criticalityDiagnostics = 0;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1809
      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
  1810
      return;
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1811
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1812
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1813
  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
  1814
  LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue anrcrv = m_cmacSapProvider->AllocateNcRaPreamble (rnti);
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1815
  if (anrcrv.valid == false)
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1816
    {
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1817
      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
  1818
      RemoveUe (rnti);
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1819
      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
  1820
      return;
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1821
    }    
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1822
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1823
  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
  1824
  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
  1825
  ueManager->SetImsi (req.mmeUeS1apId);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1826
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1827
  EpcX2SapProvider::HandoverRequestAckParams ackParams;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1828
  ackParams.oldEnbUeX2apId = req.oldEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1829
  ackParams.newEnbUeX2apId = rnti;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1830
  ackParams.sourceCellId = req.sourceCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1831
  ackParams.targetCellId = req.targetCellId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1832
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1833
  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
  1834
       it != req.bearers.end ();
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1835
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1836
    {
9497
bd3e1a06df5c really defer DRB activation to rx of RRC connection setup/reconfiguration completed
Nicola Baldo <nbaldo@cttc.es>
parents: 9480
diff changeset
  1837
      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
  1838
      EpcX2Sap::ErabAdmittedItem i;
3c52c63f19fd check admittedBearers upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9500
diff changeset
  1839
      i.erabId = it->erabId;
3c52c63f19fd check admittedBearers upon handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9500
diff changeset
  1840
      ackParams.admittedBearers.push_back (i);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1841
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1842
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1843
  LteRrcSap::RrcConnectionReconfiguration handoverCommand = ueManager->GetRrcConnectionReconfigurationForHandover ();
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1844
  handoverCommand.haveMobilityControlInfo = true;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1845
  handoverCommand.mobilityControlInfo.targetPhysCellId = m_cellId;
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1846
  handoverCommand.mobilityControlInfo.haveCarrierFreq = true;
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1847
  handoverCommand.mobilityControlInfo.carrierFreq.dlCarrierFreq = m_dlEarfcn;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1848
  handoverCommand.mobilityControlInfo.carrierFreq.ulCarrierFreq = m_ulEarfcn;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1849
  handoverCommand.mobilityControlInfo.haveCarrierBandwidth = true;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1850
  handoverCommand.mobilityControlInfo.carrierBandwidth.dlBandwidth = m_dlBandwidth;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1851
  handoverCommand.mobilityControlInfo.carrierBandwidth.ulBandwidth = m_ulBandwidth;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  1852
  handoverCommand.mobilityControlInfo.newUeIdentity = rnti;
9420
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1853
  handoverCommand.mobilityControlInfo.haveRachConfigDedicated = true;
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1854
  handoverCommand.mobilityControlInfo.rachConfigDedicated.raPreambleIndex = anrcrv.raPreambleId;
cd49c7790894 X2 handover working on the control plane
Nicola Baldo <nbaldo@cttc.es>
parents: 9419
diff changeset
  1855
  handoverCommand.mobilityControlInfo.rachConfigDedicated.raPrachMaskIndex = anrcrv.raPrachMaskIndex;
9660
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
  1856
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
  1857
  LteEnbCmacSapProvider::RachConfig rc = m_cmacSapProvider->GetRachConfig ();
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
  1858
  handoverCommand.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.preambleInfo.numberOfRaPreambles = rc.numberOfRaPreambles;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
  1859
  handoverCommand.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.preambleTransMax = rc.preambleTransMax;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
  1860
  handoverCommand.mobilityControlInfo.radioResourceConfigCommon.rachConfigCommon.raSupervisionInfo.raResponseWindowSize = rc.raResponseWindowSize;
82b2691be894 fixed valgrind errors in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 9623
diff changeset
  1861
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1862
  Ptr<Packet> encodedHandoverCommand = m_rrcSapUser->EncodeHandoverCommand (handoverCommand);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1863
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1864
  ackParams.rrcContext = encodedHandoverCommand;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1865
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1866
  NS_LOG_LOGIC ("Send X2 message: HANDOVER REQUEST ACK");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1867
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1868
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << ackParams.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1869
  NS_LOG_LOGIC ("newEnbUeX2apId = " << ackParams.newEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1870
  NS_LOG_LOGIC ("sourceCellId = " << ackParams.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1871
  NS_LOG_LOGIC ("targetCellId = " << ackParams.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1872
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1873
  m_x2SapProvider->SendHandoverRequestAck (ackParams);
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1874
}
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1875
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1876
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1877
LteEnbRrc::DoRecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1878
{
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1879
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1880
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1881
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST ACK");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1882
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1883
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1884
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1885
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1886
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1887
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1888
  uint16_t rnti = params.oldEnbUeX2apId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1889
  Ptr<UeManager> ueManager = GetUeManager (rnti);  
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1890
  ueManager->RecvHandoverRequestAck (params);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1891
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1892
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1893
void
9456
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1894
LteEnbRrc::DoRecvHandoverPreparationFailure (EpcX2SapUser::HandoverPreparationFailureParams params)
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1895
{
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1896
  NS_LOG_FUNCTION (this);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1897
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1898
  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
  1899
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1900
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1901
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1902
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1903
  NS_LOG_LOGIC ("cause = " << params.cause);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1904
  NS_LOG_LOGIC ("criticalityDiagnostics = " << params.criticalityDiagnostics);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1905
9464
e2e3b9b3585a added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure
Nicola Baldo <nbaldo@cttc.es>
parents: 9458
diff changeset
  1906
  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
  1907
  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
  1908
  ueManager->RecvHandoverPreparationFailure (params.targetCellId);
9456
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1909
}
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1910
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1911
void
9479
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1912
LteEnbRrc::DoRecvSnStatusTransfer (EpcX2SapUser::SnStatusTransferParams params)
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1913
{
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1914
  NS_LOG_FUNCTION (this);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1915
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1916
  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
  1917
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1918
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1919
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1920
  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
  1921
9500
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1922
  uint16_t rnti = params.newEnbUeX2apId;
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1923
  Ptr<UeManager> ueManager = GetUeManager (rnti);
17e4bf873a93 LteEnbRrc send/recv X2 sn status transfer
Nicola Baldo <nbaldo@cttc.es>
parents: 9497
diff changeset
  1924
  ueManager->RecvSnStatusTransfer (params);
9479
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1925
}
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1926
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1927
void
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1928
LteEnbRrc::DoRecvUeContextRelease (EpcX2SapUser::UeContextReleaseParams params)
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1929
{
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1930
  NS_LOG_FUNCTION (this);
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1931
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1932
  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
  1933
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1934
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1935
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1936
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1937
  uint16_t rnti = params.oldEnbUeX2apId;
10022
4942b556f517 refactored timeouts in LteEnbRrc
Nicola Baldo <nbaldo@cttc.es>
parents: 10019
diff changeset
  1938
  GetUeManager (rnti)->RecvUeContextRelease (params);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1939
  RemoveUe (rnti);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1940
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1941
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1942
void
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1943
LteEnbRrc::DoRecvLoadInformation (EpcX2SapUser::LoadInformationParams params)
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1944
{
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1945
  NS_LOG_FUNCTION (this);
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1946
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1947
  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
  1948
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1949
  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
  1950
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1951
  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
  1952
}
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1953
9435
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1954
void
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1955
LteEnbRrc::DoRecvResourceStatusUpdate (EpcX2SapUser::ResourceStatusUpdateParams params)
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1956
{
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1957
  NS_LOG_FUNCTION (this);
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1958
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1959
  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
  1960
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1961
  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
  1962
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1963
  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
  1964
}
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1965
9555
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1966
void
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1967
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
  1968
{
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1969
  NS_LOG_FUNCTION (this);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1970
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1971
  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
  1972
  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
  1973
  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
  1974
  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
  1975
  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
  1976
  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
  1977
9599
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1978
  std::map<uint32_t, X2uTeidInfo>::iterator 
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1979
    teidInfoIt = m_x2uTeidInfoMap.find (params.gtpTeid);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1980
  if (teidInfoIt != m_x2uTeidInfoMap.end ())    
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1981
    {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1982
      GetUeManager (teidInfoIt->second.rnti)->SendData (teidInfoIt->second.drbid, params.ueData);
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1983
    }
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1984
  else
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1985
    {
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1986
      NS_FATAL_ERROR ("X2-U data received but no X2uTeidInfo found");
fc4c980050f2 LteEnbRrc forwarding data over X2-U during handover
Nicola Baldo <nbaldo@cttc.es>
parents: 9593
diff changeset
  1987
    }
9555
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1988
}
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1989
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1990
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1991
uint16_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1992
LteEnbRrc::DoAllocateTemporaryCellRnti ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1993
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1994
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1995
  return AddUe (UeManager::INITIAL_RANDOM_ACCESS);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1996
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1997
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1998
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1999
LteEnbRrc::DoRrcConfigurationUpdateInd (LteEnbCmacSapUser::UeConfig cmacParams)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2000
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2001
  Ptr<UeManager> ueManager = GetUeManager (cmacParams.m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2002
  ueManager->CmacUeConfigUpdateInd (cmacParams);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2003
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2004
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2005
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2006
LteEnbRrc::DoNotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2007
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2008
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2009
  NS_FATAL_ERROR ("not implemented");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2010
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2011
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2012
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  2013
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  2014
uint16_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2015
LteEnbRrc::AddUe (UeManager::State state)
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  2016
{
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  2017
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2018
  bool found = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2019
  uint16_t rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2020
  for (rnti = m_lastAllocatedRnti; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2021
       (rnti != m_lastAllocatedRnti - 1) && (!found);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2022
       ++rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2023
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2024
      if ((rnti != 0) && (m_ueMap.find (rnti) == m_ueMap.end ()))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2025
        {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2026
          found = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2027
          break;        
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2028
        }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2029
    }
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  2030
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2031
  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
  2032
  m_lastAllocatedRnti = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2033
  Ptr<UeManager> ueManager = CreateObject<UeManager> (this, rnti, state);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2034
  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
  2035
  ueManager->Start ();
9615
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
  2036
  NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << m_cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());      
4daa84a79478 RLC and PDCP stats for SRBs
Nicola Baldo <nbaldo@cttc.es>
parents: 9601
diff changeset
  2037
  m_newUeContextTrace (m_cellId, rnti);      
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2038
  return rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2039
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2040
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2041
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2042
LteEnbRrc::RemoveUe (uint16_t rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2043
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2044
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2045
  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
  2046
  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
  2047
  uint16_t srsCi = (*it).second->GetSrsConfigurationIndex ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2048
  m_ueMap.erase (it);
9623
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  2049
  m_cmacSapProvider->RemoveUe (rnti);
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  2050
  m_cphySapProvider->RemoveUe (rnti);
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  2051
  if (m_s1SapProvider != 0)
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  2052
    {
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  2053
      m_s1SapProvider->UeContextRelease (rnti);
0be7b61853e3 fixed some RRC valgrind errors
Nicola Baldo <nbaldo@cttc.es>
parents: 9615
diff changeset
  2054
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2055
  // need to do this after UeManager has been deleted
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2056
  RemoveSrsConfigurationIndex (srsCi); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2057
 }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2058
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2059
TypeId
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2060
LteEnbRrc::GetRlcType (EpsBearer bearer)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2061
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2062
  switch (m_epsBearerToRlcMapping)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2063
    {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2064
    case RLC_SM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2065
      return LteRlcSm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2066
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2067
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2068
    case  RLC_UM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2069
      return LteRlcUm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2070
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2071
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2072
    case RLC_AM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2073
      return LteRlcAm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2074
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2075
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2076
    case PER_BASED:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2077
      if (bearer.GetPacketErrorLossRate () > 1.0e-5)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2078
        {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2079
          return LteRlcUm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2080
        }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2081
      else
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2082
        {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2083
          return LteRlcAm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2084
        }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2085
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2086
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2087
    default:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2088
      return LteRlcSm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2089
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2090
    }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2091
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2092
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  2093
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2094
void
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2095
LteEnbRrc::AddX2Neighbour (uint16_t cellId)
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2096
{
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2097
  NS_LOG_FUNCTION (cellId);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2098
  NS_ASSERT_MSG (m_neighbourRelationTable.find (cellId) == m_neighbourRelationTable.end (),
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2099
                 "There is already an entry in the Neighbour Relation Table for cellId " << cellId);
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2100
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2101
  Ptr<NeighbourRelation> neighbourRelation = CreateObject <NeighbourRelation> ();
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2102
  neighbourRelation->m_physCellId = cellId;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2103
  neighbourRelation->m_noRemove = true;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2104
  neighbourRelation->m_noHo = true;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2105
  neighbourRelation->m_noX2 = false;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2106
  neighbourRelation->m_detectedAsNeighbour = false;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2107
  m_neighbourRelationTable[cellId] = neighbourRelation;
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2108
}
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  2109
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  2110
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2111
// 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
  2112
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
  2113
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
  2114
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
  2115
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
  2116
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2117
void 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2118
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
  2119
{
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2120
  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
  2121
  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
  2122
    {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2123
      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
  2124
        {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2125
          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
  2126
          return;
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2127
        }
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2128
    }
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2129
  // 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
  2130
  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
  2131
  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
  2132
    {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2133
      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
  2134
    }
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2135
  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
  2136
}
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2137
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2138
uint32_t 
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2139
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
  2140
{
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2141
  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
  2142
  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
  2143
  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
  2144
  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
  2145
}
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2146
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2147
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2148
uint16_t
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2149
LteEnbRrc::GetNewSrsConfigurationIndex ()
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2150
{
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2151
  NS_LOG_FUNCTION (this << m_ueSrsConfigurationIndexSet.size ());
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2152
  // SRS
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2153
  NS_ASSERT (m_srsCurrentPeriodicityId > 0);
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2154
  NS_ASSERT (m_srsCurrentPeriodicityId < SRS_ENTRIES);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2155
  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
  2156
  if (m_ueSrsConfigurationIndexSet.size () >= g_srsPeriodicity[m_srsCurrentPeriodicityId])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2157
    {
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2158
      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
  2159
                      << ") 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
  2160
                      <<  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
  2161
                      << ", 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
  2162
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2163
9568
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2164
  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
  2165
    {
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2166
      // first entry
2ef7e29ee20d make SRS periodicity static to avoid excessive RRC overhead of dynamic one
Nicola Baldo <nbaldo@cttc.es>
parents: 9567
diff changeset
  2167
      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
  2168
      m_ueSrsConfigurationIndexSet.insert (m_lastAllocatedConfigurationIndex);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2169
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2170
  else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2171
    {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2172
      // find a CI from the available ones
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2173
      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
  2174
      NS_ASSERT (rit != m_ueSrsConfigurationIndexSet.rend ());
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2175
      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
  2176
      if ((*rit) < g_srsCiHigh[m_srsCurrentPeriodicityId])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2177
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2178
          // got it from the upper bound
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2179
          m_lastAllocatedConfigurationIndex = (*rit) + 1;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2180
          m_ueSrsConfigurationIndexSet.insert (m_lastAllocatedConfigurationIndex);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2181
        }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2182
      else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2183
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2184
          // look for released ones
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2185
          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
  2186
            {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2187
              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
  2188
              if (it==m_ueSrsConfigurationIndexSet.end ())
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2189
                {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2190
                  m_lastAllocatedConfigurationIndex = srcCi;
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2191
                  m_ueSrsConfigurationIndexSet.insert (srcCi);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2192
                  break;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2193
                }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2194
            }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2195
        } 
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2196
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2197
  return m_lastAllocatedConfigurationIndex;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2198
  
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2199
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2200
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2201
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2202
void
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2203
LteEnbRrc::RemoveSrsConfigurationIndex (uint16_t srcCi)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2204
{
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2205
  NS_LOG_FUNCTION (this << srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  2206
  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
  2207
  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
  2208
  m_ueSrsConfigurationIndexSet.erase (it);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2209
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2210
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2211
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2212
LteEnbRrc::GetLogicalChannelGroup (EpsBearer bearer)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2213
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2214
  if (bearer.IsGbr ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2215
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2216
      return 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2217
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2218
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2219
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2220
      return 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2221
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2222
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2223
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2224
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2225
LteEnbRrc::GetLogicalChannelPriority (EpsBearer bearer)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2226
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2227
  return bearer.qci;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2228
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2229
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2230
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2231
LteEnbRrc::SendSystemInformation ()
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  2232
{
10019
6efd95740e39 Add automatic triger of the HO based on the RSRQ measures
Manuel Requena <manuel.requena@cttc.es>
parents: 10011
diff changeset
  2233
//   NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2234
  // for simplicity, we use the same periodicity for all sibs
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2235
  // 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
  2236
  LteRrcSap::SystemInformation si;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2237
  si.haveSib2 = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2238
  si.sib2.freqInfo.ulCarrierFreq = m_ulEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2239
  si.sib2.freqInfo.ulBandwidth = m_ulBandwidth;
9413
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2240
  
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2241
  LteEnbCmacSapProvider::RachConfig rc = m_cmacSapProvider->GetRachConfig ();
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2242
  LteRrcSap::RachConfigCommon rachConfigCommon;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2243
  rachConfigCommon.preambleInfo.numberOfRaPreambles = rc.numberOfRaPreambles;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2244
  rachConfigCommon.raSupervisionInfo.preambleTransMax = rc.preambleTransMax;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2245
  rachConfigCommon.raSupervisionInfo.raResponseWindowSize = rc.raResponseWindowSize;
20f1c6678ee2 improved LTE Random Access model
Nicola Baldo <nbaldo@cttc.es>
parents: 9408
diff changeset
  2246
  si.sib2.radioResourceConfigCommon.rachConfigCommon = rachConfigCommon;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2247
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2248
  m_rrcSapUser->SendSystemInformation (si);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  2249
  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
  2250
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2251
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2252
} // namespace ns3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  2253