A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
lte-handover-algorithm.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2013 Budiarto Herman
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Budiarto Herman <budiarto.herman@magister.fi>
18 *
19 */
20
21#ifndef LTE_HANDOVER_ALGORITHM_H
22#define LTE_HANDOVER_ALGORITHM_H
23
24#include "lte-rrc-sap.h"
25
26#include <ns3/object.h>
27
28namespace ns3
29{
30
31class LteHandoverManagementSapUser;
32class LteHandoverManagementSapProvider;
33
34/**
35 * \brief The abstract base class of a handover algorithm that operates using
36 * the Handover Management SAP interface.
37 *
38 * Handover algorithm receives measurement reports from an eNodeB RRC instance
39 * and tells the eNodeB RRC instance when to do a handover.
40 *
41 * This class is an abstract class intended to be inherited by subclasses that
42 * implement its virtual methods. By inheriting from this abstract class, the
43 * subclasses gain the benefits of being compatible with the LteEnbNetDevice
44 * class, being accessible using namespace-based access through ns-3 Config
45 * subsystem, and being installed and configured by LteHelper class (see
46 * LteHelper::SetHandoverAlgorithmType and
47 * LteHelper::SetHandoverAlgorithmAttribute methods).
48 *
49 * The communication with the eNodeB RRC instance is done through the *Handover
50 * Management SAP* interface. The handover algorithm instance corresponds to the
51 * "provider" part of this interface, while the eNodeB RRC instance takes the
52 * role of the "user" part. The following code skeleton establishes the
53 * connection between both instances:
54 *
55 * Ptr<LteEnbRrc> u = ...;
56 * Ptr<LteHandoverAlgorithm> p = ...;
57 * u->SetLteHandoverManagementSapProvider (p->GetLteHandoverManagementSapProvider ());
58 * p->SetLteHandoverManagementSapUser (u->GetLteHandoverManagementSapUser ());
59 *
60 * However, user rarely needs to use the above code, since it has already been
61 * taken care by LteHelper::InstallEnbDevice.
62 *
63 * \sa LteHandoverManagementSapProvider, LteHandoverManagementSapUser
64 */
66{
67 public:
69 ~LteHandoverAlgorithm() override;
70
71 /**
72 * \brief Get the type ID.
73 * \return the object TypeId
74 */
75 static TypeId GetTypeId();
76
77 /**
78 * \brief Set the "user" part of the Handover Management SAP interface that
79 * this handover algorithm instance will interact with.
80 * \param s a reference to the "user" part of the interface, typically a
81 * member of an LteEnbRrc instance
82 */
84
85 /**
86 * \brief Export the "provider" part of the Handover Management SAP interface.
87 * \return the reference to the "provider" part of the interface, typically to
88 * be kept by an LteEnbRrc instance
89 */
91
92 protected:
93 // inherited from Object
94 void DoDispose() override;
95
96 // HANDOVER MANAGEMENT SAP PROVIDER IMPLEMENTATION
97
98 /**
99 * \brief Implementation of LteHandoverManagementSapProvider::ReportUeMeas.
100 * \param rnti Radio Network Temporary Identity, an integer identifying the UE
101 * where the report originates from
102 * \param measResults a single report of one measurement identity
103 */
104 virtual void DoReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults) = 0;
105
106}; // end of class LteHandoverAlgorithm
107
108} // end of namespace ns3
109
110#endif /* LTE_HANDOVER_ALGORITHM_H */
The abstract base class of a handover algorithm that operates using the Handover Management SAP inter...
virtual void SetLteHandoverManagementSapUser(LteHandoverManagementSapUser *s)=0
Set the "user" part of the Handover Management SAP interface that this handover algorithm instance wi...
void DoDispose() override
Destructor implementation.
virtual void DoReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults)=0
Implementation of LteHandoverManagementSapProvider::ReportUeMeas.
static TypeId GetTypeId()
Get the type ID.
virtual LteHandoverManagementSapProvider * GetLteHandoverManagementSapProvider()=0
Export the "provider" part of the Handover Management SAP interface.
Service Access Point (SAP) offered by the handover algorithm instance to the eNodeB RRC instance.
Service Access Point (SAP) offered by the eNodeB RRC instance to the handover algorithm instance.
A base class which provides memory management and object aggregation.
Definition: object.h:89
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.
MeasResults structure.
Definition: lte-rrc-sap.h:717