src/lte/model/a2-a4-rsrq-handover-algorithm.cc
author Peter D. Barnes, Jr. <barnes26@llnl.gov>
Fri, 26 Sep 2014 15:51:00 -0700
changeset 10968 2d29fee2b7b8
parent 10652 dc18deba4502
child 10983 087597a150da
permissions -rw-r--r--
[Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     2
/*
10379
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
10353
938b6e44ab95 Updated GPL header of GSoC files
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10327
diff changeset
     4
 * Copyright (c) 2013 Budiarto Herman
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     5
 *
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
     9
 *
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    13
 * GNU General Public License for more details.
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    14
 *
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    18
 *
10379
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
    19
 * Original work authors (from lte-enb-rrc.cc):
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
    20
 * - Nicola Baldo <nbaldo@cttc.es>
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
    21
 * - Marco Miozzo <mmiozzo@cttc.es>
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
    22
 * - Manuel Requena <manuel.requena@cttc.es>
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    23
 *
10379
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
    24
 * Converted to handover algorithm interface by:
c61db1276872 Correction to copyright notices in some GSoC LTE code
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10368
diff changeset
    25
 * - Budiarto Herman <budiarto.herman@magister.fi>
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    26
 */
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    27
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    28
#include "a2-a4-rsrq-handover-algorithm.h"
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    29
#include <ns3/log.h>
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    30
#include <ns3/uinteger.h>
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    31
10968
2d29fee2b7b8 [Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10652
diff changeset
    32
namespace ns3 {
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    33
10968
2d29fee2b7b8 [Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10652
diff changeset
    34
NS_LOG_COMPONENT_DEFINE ("A2A4RsrqHandoverAlgorithm");
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    35
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10412
diff changeset
    36
NS_OBJECT_ENSURE_REGISTERED (A2A4RsrqHandoverAlgorithm);
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    37
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    38
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    39
///////////////////////////////////////////
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    40
// Handover Management SAP forwarder
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    41
///////////////////////////////////////////
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    42
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    43
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    44
A2A4RsrqHandoverAlgorithm::A2A4RsrqHandoverAlgorithm ()
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
    45
  : m_a2MeasId (0),
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
    46
    m_a4MeasId (0),
10327
4ea8ec2bfb68 Handover algorithm based on Event A3 and RSRP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10324
diff changeset
    47
    m_servingCellThreshold (30),
4ea8ec2bfb68 Handover algorithm based on Event A3 and RSRP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10324
diff changeset
    48
    m_neighbourCellOffset (1),
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
    49
    m_handoverManagementSapUser (0)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    50
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    51
  NS_LOG_FUNCTION (this);
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    52
  m_handoverManagementSapProvider = new MemberLteHandoverManagementSapProvider<A2A4RsrqHandoverAlgorithm> (this);
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    53
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    54
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    55
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    56
A2A4RsrqHandoverAlgorithm::~A2A4RsrqHandoverAlgorithm ()
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    57
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    58
  NS_LOG_FUNCTION (this);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    59
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    60
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    61
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    62
TypeId
10380
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
    63
A2A4RsrqHandoverAlgorithm::GetTypeId ()
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    64
{
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    65
  static TypeId tid = TypeId ("ns3::A2A4RsrqHandoverAlgorithm")
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
    66
    .SetParent<LteHandoverAlgorithm> ()
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    67
    .AddConstructor<A2A4RsrqHandoverAlgorithm> ()
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    68
    .AddAttribute ("ServingCellThreshold",
10320
0fca10d6d044 LTE Automatic Neighbour Relation (ANR) function
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10317
diff changeset
    69
                   "If the RSRQ of the serving cell is worse than this threshold, "
0fca10d6d044 LTE Automatic Neighbour Relation (ANR) function
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10317
diff changeset
    70
                   "neighbour cells are consider for handover",
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    71
                   UintegerValue (30),
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    72
                   MakeUintegerAccessor (&A2A4RsrqHandoverAlgorithm::m_servingCellThreshold),
10320
0fca10d6d044 LTE Automatic Neighbour Relation (ANR) function
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10317
diff changeset
    73
                   MakeUintegerChecker<uint8_t> (0, 34)) // RSRQ range is [0..34] as per Section 9.1.7 of 3GPP TS 36.133
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    74
    .AddAttribute ("NeighbourCellOffset",
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    75
                   "Minimum offset between serving and best neighbour cell to trigger the Handover",
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    76
                   UintegerValue (1),
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    77
                   MakeUintegerAccessor (&A2A4RsrqHandoverAlgorithm::m_neighbourCellOffset),
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    78
                   MakeUintegerChecker<uint8_t> ())
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    79
  ;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    80
  return tid;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    81
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    82
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    83
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    84
void
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    85
A2A4RsrqHandoverAlgorithm::SetLteHandoverManagementSapUser (LteHandoverManagementSapUser* s)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    86
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    87
  NS_LOG_FUNCTION (this << s);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    88
  m_handoverManagementSapUser = s;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    89
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    90
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    91
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
    92
LteHandoverManagementSapProvider*
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
    93
A2A4RsrqHandoverAlgorithm::GetLteHandoverManagementSapProvider ()
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    94
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    95
  NS_LOG_FUNCTION (this);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    96
  return m_handoverManagementSapProvider;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    97
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    98
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
    99
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   100
void
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   101
A2A4RsrqHandoverAlgorithm::DoInitialize ()
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   102
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   103
  NS_LOG_FUNCTION (this);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   104
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   105
  NS_LOG_LOGIC (this << " requesting Event A2 measurements"
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   106
                     << " (threshold=" << (uint16_t) m_servingCellThreshold << ")");
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   107
  LteRrcSap::ReportConfigEutra reportConfigA2;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   108
  reportConfigA2.eventId = LteRrcSap::ReportConfigEutra::EVENT_A2;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   109
  reportConfigA2.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   110
  reportConfigA2.threshold1.range = m_servingCellThreshold;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   111
  reportConfigA2.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   112
  reportConfigA2.reportInterval = LteRrcSap::ReportConfigEutra::MS240;
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   113
  m_a2MeasId = m_handoverManagementSapUser->AddUeMeasReportConfigForHandover (reportConfigA2);
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   114
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   115
  NS_LOG_LOGIC (this << " requesting Event A4 measurements"
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   116
                     << " (threshold=0)");
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   117
  LteRrcSap::ReportConfigEutra reportConfigA4;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   118
  reportConfigA4.eventId = LteRrcSap::ReportConfigEutra::EVENT_A4;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   119
  reportConfigA4.threshold1.choice = LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   120
  reportConfigA4.threshold1.range = 0; // intentionally very low threshold
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   121
  reportConfigA4.triggerQuantity = LteRrcSap::ReportConfigEutra::RSRQ;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   122
  reportConfigA4.reportInterval = LteRrcSap::ReportConfigEutra::MS480;
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   123
  m_a4MeasId = m_handoverManagementSapUser->AddUeMeasReportConfigForHandover (reportConfigA4);
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   124
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   125
  LteHandoverAlgorithm::DoInitialize ();
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   126
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   127
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   128
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   129
void
10380
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   130
A2A4RsrqHandoverAlgorithm::DoDispose ()
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   131
{
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   132
  NS_LOG_FUNCTION (this);
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   133
  delete m_handoverManagementSapProvider;
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   134
}
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   135
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   136
b97c429d2bc9 Moved DoDispose method of handover and ANR classes to protected scope
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10379
diff changeset
   137
void
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   138
A2A4RsrqHandoverAlgorithm::DoReportUeMeas (uint16_t rnti,
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   139
                                           LteRrcSap::MeasResults measResults)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   140
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   141
  NS_LOG_FUNCTION (this << rnti << (uint16_t) measResults.measId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   142
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   143
  if (measResults.measId == m_a2MeasId)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   144
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   145
      NS_ASSERT_MSG (measResults.rsrqResult <= m_servingCellThreshold,
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   146
                     "Invalid UE measurement report");
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   147
      EvaluateHandover (rnti, measResults.rsrqResult);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   148
    }
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   149
  else if (measResults.measId == m_a4MeasId)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   150
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   151
      if (measResults.haveMeasResultNeighCells
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   152
          && !measResults.measResultListEutra.empty ())
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   153
        {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   154
          for (std::list <LteRrcSap::MeasResultEutra>::iterator it = measResults.measResultListEutra.begin ();
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   155
               it != measResults.measResultListEutra.end ();
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   156
               ++it)
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   157
            {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   158
              NS_ASSERT_MSG (it->haveRsrqResult == true,
10327
4ea8ec2bfb68 Handover algorithm based on Event A3 and RSRP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10324
diff changeset
   159
                             "RSRQ measurement is missing from cellId " << it->physCellId);
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   160
              UpdateNeighbourMeasurements (rnti, it->physCellId, it->rsrqResult);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   161
            }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   162
        }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   163
      else
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   164
        {
10322
54f2e33137a3 Using template for forwarding classes and new names for Handover Management SAP
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10320
diff changeset
   165
          NS_LOG_WARN (this << " Event A4 received without measurement results from neighbouring cells");
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   166
        }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   167
    }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   168
  else
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   169
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   170
      NS_LOG_WARN ("Ignoring measId " << (uint16_t) measResults.measId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   171
    }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   172
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   173
} // end of DoReportUeMeas
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   174
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   175
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   176
void
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   177
A2A4RsrqHandoverAlgorithm::EvaluateHandover (uint16_t rnti,
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   178
                                             uint8_t servingCellRsrq)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   179
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   180
  NS_LOG_FUNCTION (this << rnti << (uint16_t) servingCellRsrq);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   181
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   182
  MeasurementTable_t::iterator it1;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   183
  it1 = m_neighbourCellMeasures.find (rnti);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   184
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   185
  if (it1 == m_neighbourCellMeasures.end ())
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   186
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   187
      NS_LOG_WARN ("Skipping handover evaluation for RNTI " << rnti << " because neighbour cells information is not found");
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   188
    }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   189
  else
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   190
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   191
      // Find the best neighbour cell (eNB)
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   192
      NS_LOG_LOGIC ("Number of neighbour cells = " << it1->second.size ());
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   193
      uint16_t bestNeighbourCellId = 0;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   194
      uint8_t bestNeighbourRsrq = 0;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   195
      MeasurementRow_t::iterator it2;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   196
      for (it2 = it1->second.begin (); it2 != it1->second.end (); ++it2)
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   197
        {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   198
          if ((it2->second->m_rsrq > bestNeighbourRsrq)
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   199
              && IsValidNeighbour (it2->first))
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   200
            {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   201
              bestNeighbourCellId = it2->first;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   202
              bestNeighbourRsrq = it2->second->m_rsrq;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   203
            }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   204
        }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   205
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   206
      // Trigger Handover, if needed
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   207
      if (bestNeighbourCellId > 0)
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   208
        {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   209
          NS_LOG_LOGIC ("Best neighbour cellId " << bestNeighbourCellId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   210
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   211
          if ((bestNeighbourRsrq - servingCellRsrq) >= m_neighbourCellOffset)
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   212
            {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   213
              NS_LOG_LOGIC ("Trigger Handover to cellId " << bestNeighbourCellId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   214
              NS_LOG_LOGIC ("target cell RSRQ " << (uint16_t) bestNeighbourRsrq);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   215
              NS_LOG_LOGIC ("serving cell RSRQ " << (uint16_t) servingCellRsrq);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   216
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   217
              // Inform eNodeB RRC about handover
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   218
              m_handoverManagementSapUser->TriggerHandover (rnti,
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   219
                                                            bestNeighbourCellId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   220
            }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   221
        }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   222
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   223
    } // end of else of if (it1 == m_neighbourCellMeasures.end ())
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   224
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   225
} // end of EvaluateMeasurementReport
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   226
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   227
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   228
bool
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   229
A2A4RsrqHandoverAlgorithm::IsValidNeighbour (uint16_t cellId)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   230
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   231
  NS_LOG_FUNCTION (this << cellId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   232
10368
0a6adb7e304d Updated TODO tags to Doxygen format
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10353
diff changeset
   233
  /**
0a6adb7e304d Updated TODO tags to Doxygen format
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10353
diff changeset
   234
   * \todo In the future, this function can be expanded to validate whether the
0a6adb7e304d Updated TODO tags to Doxygen format
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10353
diff changeset
   235
   *       neighbour cell is a valid target cell, e.g., taking into account the
0a6adb7e304d Updated TODO tags to Doxygen format
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10353
diff changeset
   236
   *       NRT in ANR and whether it is a CSG cell with closed access.
0a6adb7e304d Updated TODO tags to Doxygen format
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10353
diff changeset
   237
   */
0a6adb7e304d Updated TODO tags to Doxygen format
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10353
diff changeset
   238
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   239
  return true;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   240
}
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   241
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   242
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   243
void
10324
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   244
A2A4RsrqHandoverAlgorithm::UpdateNeighbourMeasurements (uint16_t rnti,
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   245
                                                        uint16_t cellId,
20e45655eaa8 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10322
diff changeset
   246
                                                        uint8_t rsrq)
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   247
{
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   248
  NS_LOG_FUNCTION (this << rnti << cellId << (uint16_t) rsrq);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   249
  MeasurementTable_t::iterator it1;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   250
  it1 = m_neighbourCellMeasures.find (rnti);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   251
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   252
  if (it1 == m_neighbourCellMeasures.end ())
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   253
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   254
      // insert a new UE entry
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   255
      MeasurementRow_t row;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   256
      std::pair<MeasurementTable_t::iterator, bool> ret;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   257
      ret = m_neighbourCellMeasures.insert (std::pair<uint16_t, MeasurementRow_t> (rnti, row));
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   258
      NS_ASSERT (ret.second);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   259
      it1 = ret.first;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   260
    }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   261
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   262
  NS_ASSERT (it1 != m_neighbourCellMeasures.end ());
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   263
  Ptr<UeMeasure> neighbourCellMeasures;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   264
  std::map<uint16_t, Ptr<UeMeasure> >::iterator it2;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   265
  it2 = it1->second.find (cellId);
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   266
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   267
  if (it2 != it1->second.end ())
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   268
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   269
      neighbourCellMeasures = it2->second;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   270
      neighbourCellMeasures->m_cellId = cellId;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   271
      neighbourCellMeasures->m_rsrp = 0;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   272
      neighbourCellMeasures->m_rsrq = rsrq;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   273
    }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   274
  else
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   275
    {
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   276
      // insert a new cell entry
10381
31dc8d6462f9 UeMeasure class now inherits from SimpleRefCount
Budiarto Herman <budiarto.herman@magister.fi>
parents: 10380
diff changeset
   277
      neighbourCellMeasures = Create<UeMeasure> ();
10316
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   278
      neighbourCellMeasures->m_cellId = cellId;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   279
      neighbourCellMeasures->m_rsrp = 0;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   280
      neighbourCellMeasures->m_rsrq = rsrq;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   281
      it1->second[cellId] = neighbourCellMeasures;
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   282
    }
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   283
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   284
} // end of UpdateNeighbourMeasurements
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   285
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   286
dc88a59d7ff2 Handover management SAP interface and A2/RSRQ-based handover algorithm
Budiarto Herman <budiarto.herman@magister.fi>
parents:
diff changeset
   287
} // end of namespace ns3