src/lte/model/lte-enb-rrc.cc
author Manuel Requena <manuel.requena@cttc.es>
Fri, 14 Dec 2012 16:51:34 +0100
changeset 9555 2fc5d91bb366
parent 9479 a647c4d9b6e7
child 9556 29b3091d8fb8
permissions -rw-r--r--
Add initial support for UE data forwarding in RRC
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     2
/*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     4
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     7
 * published by the Free Software Foundation;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     8
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    12
 * GNU General Public License for more details.
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    13
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    17
 *
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    19
 *         Marco Miozzo <mmiozzo@cttc.es>
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    20
 *         Manuel Requena <manuel.requena@cttc.es>
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    21
 */
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    22
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    23
#include "ns3/fatal-error.h"
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    24
#include "ns3/log.h"
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
    25
#include "ns3/abort.h"
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
    26
#include "ns3/pointer.h"
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    27
#include "ns3/object-map.h"
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
    28
#include "ns3/object-factory.h"
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
    29
#include "ns3/simulator.h"
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    30
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    31
#include "lte-enb-rrc.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    32
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    33
#include "lte-enb-net-device.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    34
#include "lte-radio-bearer-info.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    35
#include "eps-bearer-tag.h"
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    36
#include "ff-mac-csched-sap.h"
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    37
#include "epc-enb-s1-sap.h"
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    38
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    39
#include "lte-rlc.h"
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    40
#include "lte-rlc-tm.h"
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    41
#include "lte-rlc-um.h"
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
    42
#include "lte-rlc-am.h"
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    43
#include "lte-pdcp.h"
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    44
#include "lte-pdcp-sap.h"
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    45
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
    46
#include <ns3/simulator.h>
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
    47
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    48
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    49
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
    50
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    51
NS_LOG_COMPONENT_DEFINE ("LteEnbRrc");
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    52
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    53
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    54
namespace ns3 {
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    55
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    56
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    57
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    58
// CMAC SAP forwarder
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    59
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    60
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    61
class EnbRrcMemberLteEnbCmacSapUser : public LteEnbCmacSapUser
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    62
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    63
public:
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    64
  EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    65
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    66
  virtual uint16_t AllocateTemporaryCellRnti ();
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    67
  virtual void NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success);
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
    68
  virtual void RrcConfigurationUpdateInd (UeConfig params);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    69
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    70
private:
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    71
  LteEnbRrc* m_rrc;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    72
};
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    73
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    74
EnbRrcMemberLteEnbCmacSapUser::EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    75
  : m_rrc (rrc)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    76
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    77
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    78
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    79
uint16_t
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    80
EnbRrcMemberLteEnbCmacSapUser::AllocateTemporaryCellRnti ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    81
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    82
  return m_rrc->DoAllocateTemporaryCellRnti ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    83
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    84
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    85
void
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
    86
EnbRrcMemberLteEnbCmacSapUser::NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    87
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    88
  m_rrc->DoNotifyLcConfigResult (rnti, lcid, success);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    89
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    90
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    91
void
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
    92
EnbRrcMemberLteEnbCmacSapUser::RrcConfigurationUpdateInd (UeConfig params)
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    93
{
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    94
  m_rrc->DoRrcConfigurationUpdateInd (params);
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    95
}
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
    96
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
    97
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    98
const char* g_ueManagerStateName[UeManager::NUM_STATES] = 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
    99
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   100
    "INITIAL_RANDOM_ACCESS",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   101
    "CONNECTION_SETUP",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   102
    "CONNECTED_NORMALLY",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   103
    "CONNECTION_RECONFIGURATION",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   104
    "CONNECTION_REESTABLISHMENT",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   105
    "HANDOVER_JOINING",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   106
    "HANDOVER_LEAVING",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   107
  };
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   108
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   109
std::string ToString (UeManager::State s)
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
  return std::string (g_ueManagerStateName[s]);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   112
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   113
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   114
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   115
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   116
///////////////////////////////////////////
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   117
// UeManager 
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   118
///////////////////////////////////////////
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   119
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   120
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   121
NS_OBJECT_ENSURE_REGISTERED (UeManager);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   122
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
   123
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   124
UeManager::UeManager ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   125
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   126
  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
   127
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   128
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   129
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   130
UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   131
  : m_lastAllocatedDrbid (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   132
    m_rnti (rnti),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   133
    m_imsi (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   134
    m_lastRrcTransactionIdentifier (0),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   135
    m_rrc (rrc),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   136
    m_state (s),
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   137
    m_pendingRrcConnectionReconfiguration (false),
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   138
    m_sourceX2apId (0),
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   139
    m_sourceCellId (0)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   140
{ 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   141
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   142
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   143
  m_pdcpSapUser = new LtePdcpSpecificLtePdcpSapUser<UeManager> (this);
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
  m_physicalConfigDedicated.haveAntennaInfoDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   146
  m_physicalConfigDedicated.antennaInfo.transmissionMode = m_rrc->m_defaultTransmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   147
  m_physicalConfigDedicated.haveSoundingRsUlConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   148
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = m_rrc->GetNewSrsConfigurationIndex ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   149
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   150
  m_rrc->m_cmacSapProvider->AddUe (rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   151
  m_rrc->m_cphySapProvider->AddUe (rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   152
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   153
  // setup the eNB side of SRB0
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   154
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   155
    uint8_t lcid = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   156
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   157
    Ptr<LteRlc> rlc = CreateObject<LteRlcTm> ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   158
    rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   159
    rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   160
    rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   161
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   162
    m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   163
    m_srb0->m_rlc = rlc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   164
    m_srb0->m_srbIdentity = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   165
    // no need to store logicalChannelConfig as SRB0 is pre-configured
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   166
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   167
    LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   168
    lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   169
    lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   170
    // 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
   171
    m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
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
  }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   174
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   175
  // 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
   176
  {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   177
    uint8_t lcid = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   178
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   179
    Ptr<LteRlc> rlc = CreateObject<LteRlcAm> ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   180
    rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   181
    rlc->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   182
    rlc->SetLcId (lcid);
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
    Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   185
    pdcp->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   186
    pdcp->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   187
    pdcp->SetLtePdcpSapUser (m_pdcpSapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   188
    pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   189
    rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   190
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   191
    m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   192
    m_srb1->m_rlc = rlc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   193
    m_srb1->m_pdcp = pdcp;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   194
    m_srb1->m_srbIdentity = 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   195
    m_srb1->m_logicalChannelConfig.priority = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   196
    m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   197
    m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   198
    m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   199
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   200
    LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   201
    lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   202
    lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   203
    lcinfo.lcGroup = 0; // all SRBs always mapped to LCG 0
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   204
    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
   205
    lcinfo.isGbr = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   206
    lcinfo.mbrUl = 1e6;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   207
    lcinfo.mbrDl = 1e6;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   208
    lcinfo.gbrUl = 1e4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   209
    lcinfo.gbrDl = 1e4;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   210
    m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   211
  }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   212
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   213
  LteEnbRrcSapUser::SetupUeParameters ueParams;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   214
  ueParams.srb0SapProvider = m_srb0->m_rlc->GetLteRlcSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   215
  ueParams.srb1SapProvider = m_srb1->m_pdcp->GetLtePdcpSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   216
  m_rrc->m_rrcSapUser->SetupUe (m_rnti, ueParams);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   217
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   218
  // configure MAC (and scheduler)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   219
  LteEnbCmacSapProvider::UeConfig req;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   220
  req.m_rnti = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   221
  req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   222
  m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
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
  // configure PHY
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   225
  m_rrc->m_cphySapProvider->SetTransmissionMode (rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   226
  m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (rnti, m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex);
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   227
}
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   228
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   229
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   230
UeManager::~UeManager (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   231
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   232
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   233
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   234
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   235
UeManager::DoDispose ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   236
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   237
  delete m_pdcpSapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   238
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   239
  m_rrc->m_cmacSapProvider->RemoveUe (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   240
  m_rrc->m_cphySapProvider->RemoveUe (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   241
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   242
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   243
TypeId UeManager::GetTypeId (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   244
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   245
  static TypeId  tid = TypeId ("ns3::UeManager")
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   246
    .SetParent<Object> ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   247
    .AddConstructor<UeManager> ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   248
    .AddAttribute ("DataRadioBearerMap", "List of UE RadioBearerInfo by DRBID.",
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   249
                   ObjectMapValue (),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   250
                   MakeObjectMapAccessor (&UeManager::m_drbMap),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   251
                   MakeObjectMapChecker<LteDataRadioBearerInfo> ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   252
    .AddTraceSource ("StateTransition",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   253
                     "fired upon every UE state transition seen by the UeManager at the eNB RRC",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   254
                     MakeTraceSourceAccessor (&UeManager::m_stateTransitionCallback))
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   255
  ;
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   256
  return tid;
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   257
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   258
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   259
void 
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   260
UeManager::SetSource (uint16_t sourceCellId, uint16_t sourceX2apId)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   261
{
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   262
  m_sourceX2apId = sourceX2apId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   263
  m_sourceCellId = sourceCellId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   264
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   265
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   266
uint8_t
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   267
UeManager::SetupDataRadioBearer (EpsBearer bearer, uint32_t gtpTeid, Ipv4Address transportLayerAddress)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   268
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   269
  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
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
  Ptr<LteDataRadioBearerInfo> drbInfo = CreateObject<LteDataRadioBearerInfo> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   272
  uint8_t drbid = AddDataRadioBearerInfo (drbInfo);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   273
  uint8_t lcid = Drbid2Lcid (drbid); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   274
  uint8_t bid = Drbid2Bid (drbid);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   275
  drbInfo->m_epsBearerIdentity = bid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   276
  drbInfo->m_drbIdentity = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   277
  drbInfo->m_logicalChannelIdentity = lcid;
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   278
  drbInfo->m_gtpTeid = gtpTeid;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   279
  drbInfo->m_transportLayerAddress = transportLayerAddress;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   280
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   281
  TypeId rlcTypeId = m_rrc->GetRlcType (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   282
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   283
  ObjectFactory rlcObjectFactory;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   284
  rlcObjectFactory.SetTypeId (rlcTypeId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   285
  Ptr<LteRlc> rlc = rlcObjectFactory.Create ()->GetObject<LteRlc> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   286
  rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   287
  rlc->SetRnti (m_rnti);
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
  drbInfo->m_rlc = rlc;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   290
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   291
  rlc->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   292
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   293
  // 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
   294
  // 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
   295
  if (rlcTypeId != LteRlcSm::GetTypeId ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   296
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   297
      Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   298
      pdcp->SetRnti (m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   299
      pdcp->SetLcId (lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   300
      pdcp->SetLtePdcpSapUser (m_pdcpSapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   301
      pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   302
      rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   303
      drbInfo->m_pdcp = pdcp;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   304
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   305
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   306
  LteEnbCmacSapProvider::LcInfo lcinfo;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   307
  lcinfo.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   308
  lcinfo.lcId = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   309
  lcinfo.lcGroup = m_rrc->GetLogicalChannelGroup (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   310
  lcinfo.qci = bearer.qci;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   311
  lcinfo.isGbr = bearer.IsGbr ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   312
  lcinfo.mbrUl = bearer.gbrQosInfo.mbrUl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   313
  lcinfo.mbrDl = bearer.gbrQosInfo.mbrDl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   314
  lcinfo.gbrUl = bearer.gbrQosInfo.gbrUl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   315
  lcinfo.gbrDl = bearer.gbrQosInfo.gbrDl;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   316
  m_rrc->m_cmacSapProvider->AddLc (lcinfo, rlc->GetLteMacSapUser ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   317
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   318
  if (drbInfo->m_rlc->GetTypeId () == LteRlcAm::GetTypeId ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   319
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   320
      drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::AM;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   321
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   322
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   323
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   324
      drbInfo->m_rlcConfig.choice =  LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   325
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   326
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   327
  drbInfo->m_logicalChannelIdentity = lcid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   328
  drbInfo->m_logicalChannelConfig.priority =  m_rrc->GetLogicalChannelPriority (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   329
  drbInfo->m_logicalChannelConfig.logicalChannelGroup = m_rrc->GetLogicalChannelGroup (bearer);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   330
  if (bearer.IsGbr ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   331
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   332
      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.gbrQosInfo.gbrUl;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   333
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   334
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   335
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   336
      drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = 0;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   337
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   338
  drbInfo->m_logicalChannelConfig.bucketSizeDurationMs = 1000;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   339
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   340
  return drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   341
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   342
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   343
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   344
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   345
UeManager::ReleaseDataRadioBearer (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   346
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   347
  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
   348
  uint8_t lcid = Drbid2Lcid (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   349
  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
   350
  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
   351
  m_drbMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   352
  m_rrc->m_cmacSapProvider->ReleaseLc (m_rnti, lcid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   353
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   354
  LteRrcSap::RadioResourceConfigDedicated rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   355
  rrcd.havePhysicalConfigDedicated = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   356
  rrcd.drbToReleaseList.push_back (drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   357
 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   358
  LteRrcSap::RrcConnectionReconfiguration msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   359
  msg.haveMeasConfig = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   360
  msg.haveMobilityControlInfo = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   361
 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   362
  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   363
}
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   366
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   367
UeManager::ScheduleRrcConnectionReconfiguration ()
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
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   370
  switch (m_state)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   371
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   372
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   373
    case CONNECTION_SETUP:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   374
    case CONNECTION_RECONFIGURATION:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   375
    case CONNECTION_REESTABLISHMENT:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   376
    case HANDOVER_JOINING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   377
    case HANDOVER_LEAVING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   378
      // 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
   379
      m_pendingRrcConnectionReconfiguration = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   380
      break;
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
    case CONNECTED_NORMALLY:      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   383
      {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   384
        m_pendingRrcConnectionReconfiguration = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   385
        LteRrcSap::RrcConnectionReconfiguration msg = BuildRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   386
        m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   387
        SwitchToState (CONNECTION_RECONFIGURATION);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   388
      }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   389
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   390
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   391
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   392
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   393
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   394
    }
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   397
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   398
UeManager::SendHandoverCommand (LteRrcSap::RrcConnectionReconfiguration rcr)
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
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   401
  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, rcr);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   402
  SwitchToState (HANDOVER_LEAVING);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   403
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   404
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   405
LteRrcSap::RadioResourceConfigDedicated
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   406
UeManager::GetRadioResourceConfigForHandoverPreparationInfo ()
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
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   409
  return BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   410
}
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
LteRrcSap::RrcConnectionReconfiguration 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   413
UeManager::GetHandoverCommand ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   414
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   415
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   416
  return BuildRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   417
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   418
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   419
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   420
UeManager::SendData (uint8_t bid, Ptr<Packet> p)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   421
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   422
  NS_LOG_FUNCTION (this << p << (uint16_t) bid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   423
  LtePdcpSapProvider::TransmitPdcpSduParameters params;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   424
  params.pdcpSdu = p;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   425
  params.rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   426
  params.lcid = Bid2Lcid (bid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   427
  uint8_t drbid = Bid2Drbid (bid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   428
  LtePdcpSapProvider* pdcpSapProvider = GetDataRadioBearerInfo (drbid)->m_pdcp->GetLtePdcpSapProvider ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   429
  pdcpSapProvider->TransmitPdcpSdu (params);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   430
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   431
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   432
std::vector<EpcX2Sap::ErabToBeSetupItem>   
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   433
UeManager::GetErabList ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   434
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   435
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   436
  std::vector<EpcX2Sap::ErabToBeSetupItem> ret;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   437
  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
   438
       it != m_drbMap.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   439
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   440
    {
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   441
      EpcX2Sap::ErabToBeSetupItem etbsi;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   442
      etbsi.erabId = it->second->m_epsBearerIdentity;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   443
      etbsi.erabLevelQosParameters = it->second->m_epsBearer;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   444
      etbsi.dlForwarding = false;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   445
      etbsi.transportLayerAddress = it->second->m_transportLayerAddress;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   446
      etbsi.gtpTeid = it->second->m_gtpTeid;
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
   447
      ret.push_back (etbsi);      
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
  return ret;
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   452
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   453
UeManager::CompleteSetupUe (LteEnbRrcSapProvider::CompleteSetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   454
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   455
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   456
  m_srb0->m_rlc->SetLteRlcSapUser (params.srb0SapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   457
  m_srb1->m_pdcp->SetLtePdcpSapUser (params.srb1SapUser);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   458
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   459
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   460
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   461
UeManager::RecvRrcConnectionRequest (LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   462
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   463
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   464
  switch (m_state)
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   465
    {
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   466
    case INITIAL_RANDOM_ACCESS:      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   467
      {      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   468
        m_imsi = msg.ueIdentity;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   469
        if (m_rrc->m_s1SapProvider != 0)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   470
          {
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   471
            m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   472
          }      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   473
        LteRrcSap::RrcConnectionSetup msg2;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   474
        msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   475
        msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   476
        m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   477
        SwitchToState (CONNECTION_SETUP);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   478
      }
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   479
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   480
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   481
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   482
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   483
      break;      
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   484
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   485
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   486
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   487
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   488
UeManager::RecvRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   489
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   490
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   491
  switch (m_state)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   492
    {
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   493
    case CONNECTION_SETUP:      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   494
      SwitchToState (CONNECTED_NORMALLY);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   495
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   496
            
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   497
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   498
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   499
      break;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   500
    }
9406
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   503
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   504
UeManager::RecvRrcConnectionReconfigurationCompleted (LteRrcSap::RrcConnectionReconfigurationCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   505
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   506
  NS_LOG_FUNCTION (this);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   507
  switch (m_state)
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   508
    {
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   509
    case CONNECTION_RECONFIGURATION:      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   510
      SwitchToState (CONNECTED_NORMALLY);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   511
      break;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   512
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   513
    case HANDOVER_JOINING:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   514
      NS_LOG_INFO ("Send UE CONTEXT RELEASE from target eNB to source eNB");
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   515
      EpcX2SapProvider::UeContextReleaseParams ueCtxReleaseParams;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   516
      ueCtxReleaseParams.oldEnbUeX2apId = m_sourceX2apId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   517
      ueCtxReleaseParams.newEnbUeX2apId = m_rnti;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   518
      m_rrc->m_x2SapProvider->SendUeContextRelease (ueCtxReleaseParams);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   519
      SwitchToState (CONNECTED_NORMALLY);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   520
      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   521
    default:
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   522
      NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   523
      break;      
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
   524
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   525
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   526
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   527
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   528
UeManager::RecvRrcConnectionReestablishmentRequest (LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   529
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   530
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   531
  LteRrcSap::RrcConnectionReestablishment msg2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   532
  msg2.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   533
  msg2.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   534
  m_rrc->m_rrcSapUser->SendRrcConnectionReestablishment (m_rnti, msg2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   535
  SwitchToState (CONNECTION_REESTABLISHMENT);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   536
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   537
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   538
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   539
UeManager::RecvRrcConnectionReestablishmentComplete (LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   540
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   541
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   542
  SwitchToState (CONNECTED_NORMALLY);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   543
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   544
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   545
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   546
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   547
UeManager::CmacUeConfigUpdateInd (LteEnbCmacSapUser::UeConfig cmacParams)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   548
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   549
  NS_LOG_FUNCTION (this << m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   550
  // 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
   551
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   552
  m_physicalConfigDedicated.antennaInfo.transmissionMode = cmacParams.m_transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   553
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   554
  // configure MAC (and scheduler)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   555
  LteEnbCmacSapProvider::UeConfig req;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   556
  req.m_rnti = m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   557
  req.m_transmissionMode = m_physicalConfigDedicated.antennaInfo.transmissionMode;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   558
  m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   559
          
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   560
  // configure PHY
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   561
  m_rrc->m_cphySapProvider->SetTransmissionMode (req.m_rnti, req.m_transmissionMode);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   562
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   563
  // reconfigure the UE RRC
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   564
  ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   565
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   566
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   567
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   568
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   569
UeManager::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   570
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   571
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   572
  if (params.lcid > 2)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   573
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   574
      // data radio bearer
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   575
      EpsBearerTag tag;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   576
      tag.SetRnti (params.rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   577
      tag.SetBid (Lcid2Bid (params.lcid));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   578
      params.pdcpSdu->AddPacketTag (tag);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   579
      m_rrc->m_forwardUpCallback (params.pdcpSdu);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   580
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   581
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   582
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   583
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   584
uint16_t
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   585
UeManager::GetRnti (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   586
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   587
  return m_rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   588
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   589
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   590
uint64_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   591
UeManager::GetImsi (void)
8007
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   592
{
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   593
  return m_imsi;
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   594
}
845888b95c15 Added IMSI output to RLC outpu
jnin
parents: 7905
diff changeset
   595
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   596
uint16_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   597
UeManager::GetSrsConfigurationIndex (void)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   598
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   599
  return m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   600
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   601
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   602
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   603
UeManager::SetSrsConfigurationIndex (uint16_t srsConfIndex)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   604
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   605
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   606
  m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex = srsConfIndex;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   607
  m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (m_rnti, srsConfIndex);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   608
  switch (m_state)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   609
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   610
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   611
      // do nothing, srs conf index will be correctly enforced upon
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   612
      // RRC connection establishment
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   613
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   614
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   615
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   616
      ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   617
      break;
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   621
UeManager::State
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   622
UeManager::GetState (void)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   623
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   624
  return m_state;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   625
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   626
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   627
uint8_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   628
UeManager::AddDataRadioBearerInfo (Ptr<LteDataRadioBearerInfo> drbInfo)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   629
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   630
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   631
  const uint8_t MAX_DRB_ID = 32;  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   632
  for (uint8_t drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   633
       drbid != m_lastAllocatedDrbid; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   634
       drbid = (drbid + 1) % MAX_DRB_ID)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   635
    {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   636
      if (drbid != 0) // 0 is not allowed
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   637
        {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   638
          if (m_drbMap.find (drbid) == m_drbMap.end ())
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   639
            {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   640
              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
   641
              drbInfo->m_drbIdentity = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   642
              m_lastAllocatedDrbid = drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   643
              return drbid;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   644
            }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   645
        }
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   646
    }
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   647
  NS_FATAL_ERROR ("no more data radio bearer ids available");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   648
  return 0;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   649
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   650
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   651
Ptr<LteDataRadioBearerInfo>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   652
UeManager::GetDataRadioBearerInfo (uint8_t drbid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   653
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   654
  NS_LOG_FUNCTION (this << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   655
  NS_ASSERT (0 != drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   656
  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
   657
  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
   658
  return it->second;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   659
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   660
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   661
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   662
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   663
UeManager::RemoveDataRadioBearerInfo (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   664
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   665
  NS_LOG_FUNCTION (this << (uint32_t) drbid);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   666
  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
   667
  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
   668
  m_drbMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   669
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   670
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   671
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   672
LteRrcSap::RrcConnectionReconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   673
UeManager::BuildRrcConnectionReconfiguration ()
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
  LteRrcSap::RrcConnectionReconfiguration msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   676
  msg.rrcTransactionIdentifier = GetNewRrcTransactionIdentifier ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   677
  msg.haveRadioResourceConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   678
  msg.radioResourceConfigDedicated = BuildRadioResourceConfigDedicated ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   679
  msg.haveMobilityControlInfo = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   680
  msg.haveMeasConfig = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   681
  return msg;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   682
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   683
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   684
LteRrcSap::RadioResourceConfigDedicated
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   685
UeManager::BuildRadioResourceConfigDedicated ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   686
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   687
  LteRrcSap::RadioResourceConfigDedicated rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   688
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   689
  if (m_srb1 != 0)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   690
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   691
      LteRrcSap::SrbToAddMod stam;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   692
      stam.srbIdentity = m_srb1->m_srbIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   693
      stam.logicalChannelConfig = m_srb1->m_logicalChannelConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   694
      rrcd.srbToAddModList.push_back (stam);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   695
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   696
    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   697
  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
   698
       it != m_drbMap.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   699
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   700
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   701
      LteRrcSap::DrbToAddMod dtam;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   702
      dtam.epsBearerIdentity = it->second->m_epsBearerIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   703
      dtam.drbIdentity = it->second->m_drbIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   704
      dtam.rlcConfig = it->second->m_rlcConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   705
      dtam.logicalChannelIdentity = it->second->m_logicalChannelIdentity;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   706
      dtam.logicalChannelConfig = it->second->m_logicalChannelConfig;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   707
      rrcd.drbToAddModList.push_back (dtam);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   708
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   709
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   710
  rrcd.havePhysicalConfigDedicated = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   711
  rrcd.physicalConfigDedicated = m_physicalConfigDedicated;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   712
  return rrcd;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   713
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   714
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   715
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   716
UeManager::GetNewRrcTransactionIdentifier ()
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   717
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   718
  return ++m_lastRrcTransactionIdentifier;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   719
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   720
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   721
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   722
UeManager::Lcid2Drbid (uint8_t lcid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   723
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   724
  NS_ASSERT (lcid > 2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   725
  return lcid - 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   726
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   727
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   728
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   729
UeManager::Drbid2Lcid (uint8_t drbid)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   730
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   731
  return drbid + 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   732
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   733
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   734
UeManager::Lcid2Bid (uint8_t lcid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   735
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   736
  NS_ASSERT (lcid > 2);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   737
  return lcid - 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   738
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   739
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   740
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   741
UeManager::Bid2Lcid (uint8_t bid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   742
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   743
  return bid + 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   744
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   745
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   746
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   747
UeManager::Drbid2Bid (uint8_t drbid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   748
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   749
  return drbid;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   750
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   751
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   752
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   753
UeManager::Bid2Drbid (uint8_t bid)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   754
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   755
  return bid;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   756
}
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   757
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   758
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   759
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   760
UeManager::SwitchToState (State newState)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   761
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   762
  NS_LOG_FUNCTION (this << newState);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   763
  State oldState = m_state;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   764
  m_state = newState;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   765
  NS_LOG_INFO ("IMSI " << m_imsi << " RNTI " << m_rnti << " UeManager " << ToString (oldState) << " --> " << ToString (newState));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   766
  m_stateTransitionCallback (oldState, newState);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   767
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   768
  switch (newState)
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
    case INITIAL_RANDOM_ACCESS:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   771
    case HANDOVER_JOINING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   772
      NS_FATAL_ERROR ("cannot switch to an initial state");      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   773
      break;
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
    case CONNECTION_SETUP:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   776
      break;
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
    case CONNECTED_NORMALLY:    
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   779
      {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   780
        if (m_pendingRrcConnectionReconfiguration == true)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   781
          {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   782
            ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   783
          }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   784
      }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   785
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   786
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   787
    case CONNECTION_RECONFIGURATION:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   788
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   789
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   790
    case CONNECTION_REESTABLISHMENT:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   791
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   792
      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   793
    case HANDOVER_LEAVING:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   794
      break;      
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   795
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   796
    default:
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   797
      break;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   798
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   799
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   800
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   801
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
   802
  
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   803
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   804
// eNB RRC methods
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   805
// ///////////////////////////
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   806
7905
80557b09aa7f Added missing NS_OBJECT_ENSURE_REGISTERED to all ns3::Objects created.
jnin
parents: 7903
diff changeset
   807
NS_OBJECT_ENSURE_REGISTERED (LteEnbRrc);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   808
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   809
LteEnbRrc::LteEnbRrc ()
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   810
  : m_x2SapProvider (0),
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   811
    m_cmacSapProvider (0),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   812
    m_rrcSapUser (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   813
    m_macSapProvider (0),
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   814
    m_s1SapProvider (0),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   815
    m_cphySapProvider (0),
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   816
    m_configured (false),
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   817
    m_lastAllocatedRnti (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   818
    m_srsCurrentPeriodicityId (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   819
    m_lastAllocatedConfigurationIndex (0),
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
   820
    m_reconfigureUes (false)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   821
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   822
  NS_LOG_FUNCTION (this);
7888
06a7383d3bf0 renamed member SAPs
Nicola Baldo <nbaldo@cttc.es>
parents: 7886
diff changeset
   823
  m_cmacSapUser = new EnbRrcMemberLteEnbCmacSapUser (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   824
  m_rrcSapProvider = new MemberLteEnbRrcSapProvider<LteEnbRrc> (this);
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   825
  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
   826
  m_s1SapUser = new MemberEpcEnbS1SapUser<LteEnbRrc> (this);
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   827
  m_cphySapUser = new MemberLteEnbCphySapUser<LteEnbRrc> (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   828
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   829
 
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   830
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   831
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   832
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   833
LteEnbRrc::~LteEnbRrc ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   834
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   835
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   836
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   837
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   838
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   839
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   840
LteEnbRrc::DoDispose ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   841
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   842
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   843
  delete m_cmacSapUser;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   844
  delete m_rrcSapProvider;
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   845
  delete m_x2SapUser;
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   846
  delete m_s1SapUser;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   847
  delete m_cphySapUser;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   848
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   849
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   850
TypeId
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   851
LteEnbRrc::GetTypeId (void)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   852
{
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   853
  NS_LOG_FUNCTION ("LteEnbRrc::GetTypeId");
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   854
  static TypeId tid = TypeId ("ns3::LteEnbRrc")
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   855
    .SetParent<Object> ()
7901
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   856
    .AddConstructor<LteEnbRrc> ()
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   857
    .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
   858
                   ObjectMapValue (),
2451f71f1ce4 Added attributes to enable access to RLC instances in Enb
jnin
parents: 7888
diff changeset
   859
                   MakeObjectMapAccessor (&LteEnbRrc::m_ueMap),
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   860
                   MakeObjectMapChecker<UeManager> ())
8714
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
   861
    .AddAttribute ("DefaultTransmissionMode",
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
   862
                  "The default UEs' transmission mode (0: SISO)",
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
   863
                  UintegerValue (0),  // default tx-mode
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
   864
                  MakeUintegerAccessor (&LteEnbRrc::m_defaultTransmissionMode),
398bbcbb3f42 Add MIMO model, test and documentation
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8462
diff changeset
   865
                  MakeUintegerChecker<uint8_t> ())
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   866
    .AddAttribute ("EpsBearerToRlcMapping", 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   867
                   "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
   868
                   EnumValue (RLC_SM_ALWAYS),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   869
                   MakeEnumAccessor (&LteEnbRrc::m_epsBearerToRlcMapping),
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   870
                   MakeEnumChecker (RLC_SM_ALWAYS, "RlcSmAlways",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   871
                                    RLC_UM_ALWAYS, "RlcUmAlways",
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   872
                                    RLC_AM_ALWAYS, "RlcAmAlways",
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   873
                                    PER_BASED,     "PacketErrorRateBased"))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   874
    .AddAttribute ("SystemInformationPeriodicity",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   875
                   "The interval for sending system information",
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   876
                   TimeValue (MilliSeconds (80)),  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   877
                   MakeTimeAccessor (&LteEnbRrc::m_systemInformationPeriodicity),
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   878
                   MakeTimeChecker ())         
8148
09e2d03022a2 run check-style on src/lte/model
Nicola Baldo <nbaldo@cttc.es>
parents: 8032
diff changeset
   879
  ;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   880
  return tid;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   881
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   882
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   883
void
9323
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   884
LteEnbRrc::SetEpcX2SapProvider (EpcX2SapProvider * s)
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   885
{
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   886
  NS_LOG_FUNCTION (this << s);
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   887
  m_x2SapProvider = s;
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   888
}
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   889
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   890
EpcX2SapUser*
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   891
LteEnbRrc::GetEpcX2SapUser ()
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   892
{
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   893
  NS_LOG_FUNCTION (this);
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   894
  return m_x2SapUser;
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   895
}
c4c734a16f4f Add support for X2 SAP
Manuel Requena <manuel.requena@cttc.es>
parents: 8717
diff changeset
   896
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   897
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   898
LteEnbRrc::SetLteEnbCmacSapProvider (LteEnbCmacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   899
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   900
  NS_LOG_FUNCTION (this << s);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   901
  m_cmacSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   902
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   903
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   904
LteEnbCmacSapUser*
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   905
LteEnbRrc::GetLteEnbCmacSapUser ()
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   906
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   907
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   908
  return m_cmacSapUser;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   909
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   910
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   911
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   912
LteEnbRrc::SetLteEnbRrcSapUser (LteEnbRrcSapUser * s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   913
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   914
  NS_LOG_FUNCTION (this << s);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   915
  m_rrcSapUser = s;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   916
}
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
LteEnbRrcSapProvider*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   919
LteEnbRrc::GetLteEnbRrcSapProvider ()
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   920
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   921
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   922
  return m_rrcSapProvider;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   923
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   924
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   925
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   926
LteEnbRrc::SetLteMacSapProvider (LteMacSapProvider * s)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   927
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   928
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   929
  m_macSapProvider = s;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   930
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   931
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   932
void 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   933
LteEnbRrc::SetS1SapProvider (EpcEnbS1SapProvider * s)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   934
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   935
  m_s1SapProvider = s;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   936
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   937
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   938
  
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   939
EpcEnbS1SapUser* 
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   940
LteEnbRrc::GetS1SapUser ()
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   941
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   942
  return m_s1SapUser;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   943
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   944
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   945
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   946
LteEnbRrc::SetLteEnbCphySapProvider (LteEnbCphySapProvider * s)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   947
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   948
  NS_LOG_FUNCTION (this << s);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   949
  m_cphySapProvider = s;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   950
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   951
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   952
LteEnbCphySapUser*
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   953
LteEnbRrc::GetLteEnbCphySapUser ()
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
   954
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   955
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   956
  return m_cphySapUser;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   957
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   958
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   959
Ptr<UeManager>
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   960
LteEnbRrc::GetUeManager (uint16_t rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   961
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   962
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   963
  NS_ASSERT (0 != rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   964
  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
   965
  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
   966
  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
   967
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   968
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   969
void
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   970
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
   971
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   972
  NS_LOG_FUNCTION (this);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   973
  NS_ASSERT (!m_configured);
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   974
  m_cmacSapProvider->ConfigureMac (ulBandwidth, dlBandwidth);
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   975
  m_cphySapProvider->SetBandwidth (ulBandwidth, dlBandwidth);
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   976
  m_cphySapProvider->SetEarfcn (ulEarfcn, dlEarfcn);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   977
  m_dlEarfcn = dlEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   978
  m_ulEarfcn = ulEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   979
  m_dlBandwidth = dlBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   980
  m_ulBandwidth = ulBandwidth;
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
   981
  m_cellId = cellId;
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
   982
  m_cphySapProvider->SetCellId (cellId);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   983
  LteRrcSap::MasterInformationBlock mib;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   984
  mib.dlBandwidth = m_dlBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   985
  m_cphySapProvider->SetMasterInformationBlock (mib);
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
   986
  m_configured = true;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   987
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   988
  // the first time System Information is sent
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   989
  Simulator::Schedule (MilliSeconds (16), &LteEnbRrc::SendSystemInformation, this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   990
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   991
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   992
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   993
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   994
LteEnbRrc::SetCellId (uint16_t cellId)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   995
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   996
  m_cellId = cellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   997
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   998
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
   999
bool
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1000
LteEnbRrc::SendData (Ptr<Packet> packet)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1001
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1002
  NS_LOG_FUNCTION (this << packet);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1003
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1004
  EpsBearerTag tag;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1005
  bool found = packet->RemovePacketTag (tag);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1006
  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
  1007
  Ptr<UeManager> ueManager = GetUeManager (tag.GetRnti ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1008
  ueManager->SendData (tag.GetBid (), packet);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1009
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1010
  return true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1011
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1012
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1013
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1014
LteEnbRrc::SetForwardUpCallback (Callback <void, Ptr<Packet> > cb)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1015
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1016
  m_forwardUpCallback = cb;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1017
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1018
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1019
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1020
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1021
LteEnbRrc::SendHandoverRequest (uint16_t rnti, uint16_t cellId)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1022
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1023
  NS_LOG_FUNCTION (this << rnti << cellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1024
  NS_LOG_LOGIC ("Request to send HANDOVER REQUEST");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1025
  NS_ASSERT (m_configured);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1026
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1027
  Ptr<UeManager> ueManager = GetUeManager (rnti);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1028
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1029
  EpcX2SapProvider::HandoverRequestParams params;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1030
  params.oldEnbUeX2apId = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1031
  params.cause          = EpcX2SapProvider::HandoverDesirableForRadioReason;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1032
  params.sourceCellId   = m_cellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1033
  params.targetCellId   = cellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1034
  params.ueAggregateMaxBitRateDownlink = 200 * 1000;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1035
  params.ueAggregateMaxBitRateUplink = 100 * 1000;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1036
  params.bearers = ueManager->GetErabList ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1037
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1038
  LteRrcSap::HandoverPreparationInfo hpi;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1039
  hpi.asConfig.sourceUeIdentity = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1040
  hpi.asConfig.sourceDlCarrierFreq = m_dlEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1041
  hpi.asConfig.sourceRadioResourceConfig = ueManager->GetRadioResourceConfigForHandoverPreparationInfo ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1042
  params.rrcContext = m_rrcSapUser->EncodeHandoverPreparationInformation (hpi);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1043
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1044
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1045
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1046
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1047
  NS_LOG_LOGIC ("rrcContext   = " << params.rrcContext);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1048
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1049
  m_x2SapProvider->SendHandoverRequest (params);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1050
}
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1051
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1052
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1053
LteEnbRrc::DoCompleteSetupUe (uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1054
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1055
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1056
  GetUeManager (rnti)->CompleteSetupUe (params);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1057
}
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1058
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1059
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1060
LteEnbRrc::DoRecvRrcConnectionRequest (uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1061
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1062
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1063
  GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1066
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1067
LteEnbRrc::DoRecvRrcConnectionSetupCompleted (uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1068
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1069
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1070
  GetUeManager (rnti)->RecvRrcConnectionSetupCompleted (msg);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1071
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1072
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1073
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1074
LteEnbRrc::DoRecvRrcConnectionReconfigurationCompleted (uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg)
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
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1077
  GetUeManager (rnti)->RecvRrcConnectionReconfigurationCompleted (msg);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1078
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1079
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1080
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1081
LteEnbRrc::DoRecvRrcConnectionReestablishmentRequest (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1082
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1083
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1084
  GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1085
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1086
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1087
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1088
LteEnbRrc::DoRecvRrcConnectionReestablishmentComplete (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1089
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1090
  NS_LOG_FUNCTION (this << rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1091
  GetUeManager (rnti)->RecvRrcConnectionReestablishmentComplete (msg);
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
void 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1096
LteEnbRrc::DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters request)
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
  EpcEnbS1SapProvider::S1BearerSetupRequestParameters response;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1099
  Ptr<UeManager> ueManager = GetUeManager (request.rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1100
  response.rnti = request.rnti;
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
  1101
  response.bid = ueManager->SetupDataRadioBearer (request.bearer, request.gtpTeid, request.transportLayerAddress);       
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
  1102
  response.gtpTeid = request.gtpTeid;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1103
  if (m_s1SapProvider)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1104
    {          
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1105
      m_s1SapProvider->S1BearerSetupRequest (response);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1106
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1107
  ueManager->ScheduleRrcConnectionReconfiguration ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1108
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1109
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1110
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1111
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1112
LteEnbRrc::DoRecvHandoverRequest (EpcX2SapUser::HandoverRequestParams params)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1113
{
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1114
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1115
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1116
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1117
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1118
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1119
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1120
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1121
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1122
  uint16_t rnti = AddUe (UeManager::HANDOVER_JOINING);
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1123
  Ptr<UeManager> ueManager = GetUeManager (rnti);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1124
  ueManager->SetSource (params.sourceCellId, params.oldEnbUeX2apId);
9406
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
  for (std::vector <EpcX2Sap::ErabToBeSetupItem>::iterator it = params.bearers.begin ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1127
       it != params.bearers.end ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1128
       ++it)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1129
    {
9408
80fa1de0bef2 implemented UeManager::GetErabList ()
Nicola Baldo <nbaldo@cttc.es>
parents: 9407
diff changeset
  1130
      ueManager->SetupDataRadioBearer (it->erabLevelQosParameters, it->gtpTeid, it->transportLayerAddress);
9406
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1133
  LteRrcSap::RrcConnectionReconfiguration handoverCommand = ueManager->GetHandoverCommand ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1134
  Ptr<Packet> encodedHandoverCommand = m_rrcSapUser->EncodeHandoverCommand (handoverCommand);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1135
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1136
  NS_LOG_LOGIC ("Send X2 message: HANDOVER REQUEST ACK");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1137
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1138
  EpcX2SapProvider::HandoverRequestAckParams ackParams;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1139
  ackParams.oldEnbUeX2apId = params.oldEnbUeX2apId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1140
  ackParams.newEnbUeX2apId = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1141
  ackParams.sourceCellId = params.sourceCellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1142
  ackParams.targetCellId = params.targetCellId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1143
  ackParams.rrcContext = encodedHandoverCommand;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1144
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1145
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << ackParams.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1146
  NS_LOG_LOGIC ("newEnbUeX2apId = " << ackParams.newEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1147
  NS_LOG_LOGIC ("sourceCellId = " << ackParams.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1148
  NS_LOG_LOGIC ("targetCellId = " << ackParams.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1149
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1150
  m_x2SapProvider->SendHandoverRequestAck (ackParams);
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1151
}
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1152
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1153
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1154
LteEnbRrc::DoRecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params)
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1155
{
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1156
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1157
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1158
  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST ACK");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1159
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1160
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1161
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1162
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1163
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1164
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1165
  uint16_t rnti = params.oldEnbUeX2apId;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1166
  Ptr<UeManager> ueManager = GetUeManager (rnti);  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1167
  
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1168
  // note: the Handover command from the target eNB to the source eNB
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1169
  // is expected to be sent transparently to the UE; however, here we
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1170
  // decode the message and eventually reencode it. This way we can
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1171
  // support both a real RRC protocol implementation and an ideal one
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1172
  // without actual RRC protocol encoding. 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1173
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1174
  Ptr<Packet> encodedHandoverCommand = params.rrcContext;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1175
  LteRrcSap::RrcConnectionReconfiguration handoverCommand = m_rrcSapUser->DecodeHandoverCommand (encodedHandoverCommand);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1176
  ueManager->SendHandoverCommand (handoverCommand);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1177
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1178
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1179
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1180
void
9456
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1181
LteEnbRrc::DoRecvHandoverPreparationFailure (EpcX2SapUser::HandoverPreparationFailureParams params)
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1182
{
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1183
  NS_LOG_FUNCTION (this);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1184
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1185
  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
  1186
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1187
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1188
  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1189
  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1190
  NS_LOG_LOGIC ("cause = " << params.cause);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1191
  NS_LOG_LOGIC ("criticalityDiagnostics = " << params.criticalityDiagnostics);
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1192
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1193
  NS_ASSERT ("Processing of HANDOVER PREPARATION FAILURE X2 message IS NOT IMPLEMENTED");
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1194
}
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1195
3102416ce9d7 Add support of HandoverPreparationFailure primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9435
diff changeset
  1196
void
9479
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1197
LteEnbRrc::DoRecvSnStatusTransfer (EpcX2SapUser::SnStatusTransferParams params)
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1198
{
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1199
  NS_LOG_FUNCTION (this);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1200
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1201
  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
  1202
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1203
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1204
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1205
  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
  1206
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1207
  NS_ASSERT ("Processing of SN STATUS TRANSFER X2 message IS NOT IMPLEMENTED");
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1208
}
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1209
a647c4d9b6e7 Add support of SnStatusTransfer in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9456
diff changeset
  1210
void
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1211
LteEnbRrc::DoRecvUeContextRelease (EpcX2SapUser::UeContextReleaseParams params)
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1212
{
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1213
  NS_LOG_FUNCTION (this);
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1214
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1215
  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
  1216
9407
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1217
  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1218
  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1219
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1220
  uint16_t rnti = params.oldEnbUeX2apId;
Nicola Baldo <nbaldo@cttc.es>
parents: 9406 9405
diff changeset
  1221
  RemoveUe (rnti);
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1222
}
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1223
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1224
void
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1225
LteEnbRrc::DoRecvLoadInformation (EpcX2SapUser::LoadInformationParams params)
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1226
{
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1227
  NS_LOG_FUNCTION (this);
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1228
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1229
  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
  1230
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1231
  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
  1232
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1233
  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
  1234
}
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1235
9435
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1236
void
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1237
LteEnbRrc::DoRecvResourceStatusUpdate (EpcX2SapUser::ResourceStatusUpdateParams params)
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1238
{
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1239
  NS_LOG_FUNCTION (this);
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1240
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1241
  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
  1242
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1243
  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
  1244
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1245
  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
  1246
}
a60d3218e8f4 Add support of ResourceStatusUpdate X2 primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9418
diff changeset
  1247
9555
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1248
void
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1249
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
  1250
{
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1251
  NS_LOG_FUNCTION (this);
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1252
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1253
  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
  1254
  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
  1255
  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
  1256
  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
  1257
  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
  1258
  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
  1259
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1260
  NS_ASSERT ("Processing of UE DATA FORWARDING through X2 interface IS NOT IMPLEMENTED");
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1261
}
2fc5d91bb366 Add initial support for UE data forwarding in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9479
diff changeset
  1262
9418
150d133b96af Add support of Load Information primitive in RRC
Manuel Requena <manuel.requena@cttc.es>
parents: 9408
diff changeset
  1263
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1264
uint16_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1265
LteEnbRrc::DoAllocateTemporaryCellRnti ()
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
  NS_LOG_FUNCTION (this);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1268
  return AddUe (UeManager::INITIAL_RANDOM_ACCESS);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1269
}
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
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1272
LteEnbRrc::DoRrcConfigurationUpdateInd (LteEnbCmacSapUser::UeConfig cmacParams)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1273
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1274
  Ptr<UeManager> ueManager = GetUeManager (cmacParams.m_rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1275
  ueManager->CmacUeConfigUpdateInd (cmacParams);
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
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1278
void
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1279
LteEnbRrc::DoNotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
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
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1282
  NS_FATAL_ERROR ("not implemented");
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1283
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1284
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1285
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1286
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1287
uint16_t
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1288
LteEnbRrc::AddUe (UeManager::State state)
9345
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1289
{
8290ae6cab62 add/remove UEs and bearers upon handover
Nicola Baldo <nicola@baldo.biz>
parents: 9344
diff changeset
  1290
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1291
  bool found = false;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1292
  uint16_t rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1293
  for (rnti = m_lastAllocatedRnti; 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1294
       (rnti != m_lastAllocatedRnti - 1) && (!found);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1295
       ++rnti)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1296
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1297
      if ((rnti != 0) && (m_ueMap.find (rnti) == m_ueMap.end ()))
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1298
        {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1299
          found = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1300
          break;        
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1301
        }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1302
    }
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1303
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1304
  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
  1305
  m_lastAllocatedRnti = rnti;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1306
  Ptr<UeManager> ueManager = CreateObject<UeManager> (this, rnti, state);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1307
  m_ueMap.insert (std::pair<uint16_t, Ptr<UeManager> > (rnti, ueManager));
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1308
  NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << m_cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());              
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1309
  return rnti;
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1310
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1311
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1312
void
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1313
LteEnbRrc::RemoveUe (uint16_t rnti)
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1314
{
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1315
  NS_LOG_FUNCTION (this << (uint32_t) rnti);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1316
  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
  1317
  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
  1318
  uint16_t srsCi = (*it).second->GetSrsConfigurationIndex ();
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1319
  m_ueMap.erase (it);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1320
  // need to do this after UeManager has been deleted
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1321
  RemoveSrsConfigurationIndex (srsCi); 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1322
 }
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1323
9337
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1324
TypeId
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1325
LteEnbRrc::GetRlcType (EpsBearer bearer)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1326
{
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1327
  switch (m_epsBearerToRlcMapping)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1328
    {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1329
    case RLC_SM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1330
      return LteRlcSm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1331
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1332
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1333
    case  RLC_UM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1334
      return LteRlcUm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1335
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1336
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1337
    case RLC_AM_ALWAYS:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1338
      return LteRlcAm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1339
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1340
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1341
    case PER_BASED:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1342
      if (bearer.GetPacketErrorLossRate () > 1.0e-5)
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1343
        {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1344
          return LteRlcUm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1345
        }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1346
      else
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1347
        {
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1348
          return LteRlcAm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1349
        }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1350
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1351
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1352
    default:
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1353
      return LteRlcSm::GetTypeId ();
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1354
      break;
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1355
    }
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1356
}
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1357
ae7126b266ce revised LTE protocol stack for new RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 8717
diff changeset
  1358
8389
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1359
cb215987eb77 LTE-EPC end-to-end data plane imlemented and partially working
Nicola Baldo <nbaldo@cttc.es>
parents: 8156
diff changeset
  1360
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1361
// from 3GPP TS 36.213 table 8.2-1 UE Specific SRS Periodicity
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1362
const uint8_t SRS_ENTRIES = 9;
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1363
uint16_t g_srsPeriodicity[SRS_ENTRIES] = {0, 2, 5, 10, 20, 40, 80, 160, 320};
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1364
uint16_t g_srsCiLow[SRS_ENTRIES] = {0, 0, 2, 7, 17, 37, 77, 157, 317};
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1365
uint16_t g_srsCiHigh[SRS_ENTRIES] = {0, 1, 6, 16, 36, 76, 156, 316, 636};
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1366
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1367
uint16_t
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1368
LteEnbRrc::GetNewSrsConfigurationIndex ()
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1369
{
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1370
  NS_LOG_FUNCTION (this << m_ueSrsConfigurationIndexSet.size ());
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1371
  // SRS
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1372
  if (m_srsCurrentPeriodicityId==0)
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1373
    {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1374
      // no UEs -> init
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1375
      m_ueSrsConfigurationIndexSet.insert (0);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1376
      m_lastAllocatedConfigurationIndex = 0;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1377
      m_srsCurrentPeriodicityId++;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1378
      
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1379
      return 0;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1380
    }
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1381
  NS_ASSERT (m_srsCurrentPeriodicityId < SRS_ENTRIES);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1382
  NS_LOG_DEBUG (this << " SRS p " << g_srsPeriodicity[m_srsCurrentPeriodicityId] << " set " << m_ueSrsConfigurationIndexSet.size ());
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1383
  if (m_ueSrsConfigurationIndexSet.size () == g_srsPeriodicity[m_srsCurrentPeriodicityId])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1384
    {
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1385
      NS_LOG_DEBUG (this << " SRS reconfigure CIs " << g_srsPeriodicity[m_srsCurrentPeriodicityId] << " to " << g_srsPeriodicity[m_srsCurrentPeriodicityId+1] << " at " << Simulator::Now ());
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1386
      // increase the current periocity for having enough CIs
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1387
      m_ueSrsConfigurationIndexSet.clear ();
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1388
      m_srsCurrentPeriodicityId++;
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1389
      NS_ASSERT (m_srsCurrentPeriodicityId < SRS_ENTRIES);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1390
      // update all the UE's CI
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1391
      uint16_t srcCi = g_srsCiLow[m_srsCurrentPeriodicityId];
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1392
      std::map<uint16_t, Ptr<UeManager> >::iterator it;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1393
      for (it = m_ueMap.begin (); it != m_ueMap.end (); it++)
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1394
        {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1395
          (*it).second->SetSrsConfigurationIndex (srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1396
          m_ueSrsConfigurationIndexSet.insert (srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1397
          m_lastAllocatedConfigurationIndex = srcCi;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1398
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1399
          // update UeManager and trigger/update RRC connection reconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1400
          (*it).second->SetSrsConfigurationIndex (srcCi);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1401
          
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1402
          // configure PHY
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1403
          m_cphySapProvider->SetSrsConfigurationIndex ((*it).first, srcCi);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1404
          
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1405
          srcCi++;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1406
        }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1407
      m_ueSrsConfigurationIndexSet.insert (m_lastAllocatedConfigurationIndex + 1);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1408
      m_lastAllocatedConfigurationIndex++;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1409
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1410
  else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1411
    {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1412
      // find a CI from the available ones
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1413
      std::set<uint16_t>::reverse_iterator rit = m_ueSrsConfigurationIndexSet.rbegin ();
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1414
      NS_LOG_DEBUG (this << " lower bound " << (*rit) << " of " << g_srsCiHigh[m_srsCurrentPeriodicityId]);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1415
      if ((*rit) <= g_srsCiHigh[m_srsCurrentPeriodicityId])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1416
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1417
          // got it from the upper bound
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1418
          m_lastAllocatedConfigurationIndex = (*rit) + 1;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1419
          m_ueSrsConfigurationIndexSet.insert (m_lastAllocatedConfigurationIndex);
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1420
        }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1421
      else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1422
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1423
          // look for released ones
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1424
          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
  1425
            {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1426
              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
  1427
              if (it==m_ueSrsConfigurationIndexSet.end ())
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1428
                {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1429
                  m_lastAllocatedConfigurationIndex = srcCi;
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1430
                  m_ueSrsConfigurationIndexSet.insert (srcCi);
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1431
                  break;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1432
                }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1433
            }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1434
        } 
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1435
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1436
  return m_lastAllocatedConfigurationIndex;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1437
  
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1438
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1439
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1440
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1441
void
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1442
LteEnbRrc::RemoveSrsConfigurationIndex (uint16_t srcCi)
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1443
{
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1444
  NS_LOG_FUNCTION (this << srcCi);
9346
00e674a0d567 merge lena-dev and lena-epc
Nicola Baldo <nbaldo@cttc.es>
parents: 9345 9041
diff changeset
  1445
  NS_FATAL_ERROR ("I though this method was unused so far...");
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1446
  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
  1447
  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
  1448
  m_ueSrsConfigurationIndexSet.erase (it);
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1449
  NS_ASSERT (m_srsCurrentPeriodicityId > 1);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1450
  if (m_ueSrsConfigurationIndexSet.size () < g_srsPeriodicity[m_srsCurrentPeriodicityId - 1])
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1451
    {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1452
      // reduce the periodicity
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1453
      m_ueSrsConfigurationIndexSet.clear ();
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1454
      m_srsCurrentPeriodicityId--;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1455
      if (m_srsCurrentPeriodicityId==0)
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1456
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1457
          // no active users : renitialize structures
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1458
          m_lastAllocatedConfigurationIndex = 0;
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1459
        }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1460
      else
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1461
        {
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1462
          // update all the UE's CI
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1463
          uint16_t srcCi = g_srsCiLow[m_srsCurrentPeriodicityId];
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1464
          std::map<uint16_t, Ptr<UeManager> >::iterator it;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1465
          for (it = m_ueMap.begin (); it != m_ueMap.end (); it++)
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1466
            {
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1467
              (*it).second->SetSrsConfigurationIndex (srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1468
              m_ueSrsConfigurationIndexSet.insert (srcCi);
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1469
              m_lastAllocatedConfigurationIndex = srcCi;
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1470
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1471
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1472
              // update UeManager and trigger/update RRC connection reconfiguration
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1473
              (*it).second->SetSrsConfigurationIndex (srcCi);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1474
          
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1475
              // configure PHY
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1476
              m_cphySapProvider->SetSrsConfigurationIndex ((*it).first, (*it).second->GetSrsConfigurationIndex ());
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1477
9038
e1d67c8aa95b Polish code according to codereview
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9036
diff changeset
  1478
              srcCi++;
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1479
            }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1480
        }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1481
    }
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1482
}
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1483
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1484
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1485
LteEnbRrc::GetLogicalChannelGroup (EpsBearer bearer)
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1486
{
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1487
  if (bearer.IsGbr ())
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1488
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1489
      return 1;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1490
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1491
  else
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1492
    {
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1493
      return 2;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1494
    }
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1495
}
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1496
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1497
uint8_t 
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1498
LteEnbRrc::GetLogicalChannelPriority (EpsBearer bearer)
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1499
{
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1500
  return bearer.qci;
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1501
}
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1502
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1503
void
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1504
LteEnbRrc::SendSystemInformation ()
9036
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1505
{
5e09b29d4af5 Add SRS signaling
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8717
diff changeset
  1506
  NS_LOG_FUNCTION (this);
9406
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1507
  // for simplicity, we use the same periodicity for all sibs
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1508
  // 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
  1509
  LteRrcSap::SystemInformation si;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1510
  si.haveSib2 = true;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1511
  si.sib2.freqInfo.ulCarrierFreq = m_ulEarfcn;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1512
  si.sib2.freqInfo.ulBandwidth = m_ulBandwidth;
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1513
  m_rrcSapUser->SendSystemInformation (si);
7f0f9d8f8e20 new LTE RRC model
Nicola Baldo <nbaldo@cttc.es>
parents: 9346
diff changeset
  1514
  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
  1515
}
7886
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1516
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1517
} // namespace ns3
b65c16d4da83 LENA project first public release
CTTC
parents:
diff changeset
  1518