A Discrete-Event Network Simulator
API
lte-handover-management-sap.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_MANAGEMENT_SAP_H
22 #define LTE_HANDOVER_MANAGEMENT_SAP_H
23 
24 #include "lte-rrc-sap.h"
25 
26 namespace ns3
27 {
28 
38 {
39  public:
41 
53  virtual void ReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults) = 0;
54 
55 }; // end of class LteHandoverManagementSapProvider
56 
65 {
66  public:
68 
85  virtual std::vector<uint8_t> AddUeMeasReportConfigForHandover(
86  LteRrcSap::ReportConfigEutra reportConfig) = 0;
87 
101  virtual void TriggerHandover(uint16_t rnti, uint16_t targetCellId) = 0;
102 
103 }; // end of class LteHandoverManagementSapUser
104 
110 template <class C>
112 {
113  public:
120 
121  // Delete default constructor to avoid misuse
123 
124  // inherited from LteHandoverManagementSapProvider
125  void ReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults) override;
126 
127  private:
128  C* m_owner;
129 
130 }; // end of class MemberLteHandoverManagementSapProvider
131 
132 template <class C>
134  : m_owner(owner)
135 {
136 }
137 
138 template <class C>
139 void
141  LteRrcSap::MeasResults measResults)
142 {
143  m_owner->DoReportUeMeas(rnti, measResults);
144 }
145 
151 template <class C>
153 {
154  public:
161 
162  // Delete default constructor to avoid misuse
164 
165  // inherited from LteHandoverManagementSapUser
166  std::vector<uint8_t> AddUeMeasReportConfigForHandover(
167  LteRrcSap::ReportConfigEutra reportConfig) override;
168  void TriggerHandover(uint16_t rnti, uint16_t targetCellId) override;
169 
170  private:
171  C* m_owner;
172 
173 }; // end of class MemberLteAnrSapUser
174 
175 template <class C>
177  : m_owner(owner)
178 {
179 }
180 
181 template <class C>
182 std::vector<uint8_t>
184  LteRrcSap::ReportConfigEutra reportConfig)
185 {
186  return m_owner->DoAddUeMeasReportConfigForHandover(reportConfig);
187 }
188 
189 template <class C>
190 void
191 MemberLteHandoverManagementSapUser<C>::TriggerHandover(uint16_t rnti, uint16_t targetCellId)
192 {
193  return m_owner->DoTriggerHandover(rnti, targetCellId);
194 }
195 
196 } // end of namespace ns3
197 
198 #endif /* LTE_HANDOVER_MANAGEMENT_SAP_H */
Service Access Point (SAP) offered by the handover algorithm instance to the eNodeB RRC instance.
virtual void ReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults)=0
Send a UE measurement report to handover algorithm.
Service Access Point (SAP) offered by the eNodeB RRC instance to the handover algorithm instance.
virtual std::vector< uint8_t > AddUeMeasReportConfigForHandover(LteRrcSap::ReportConfigEutra reportConfig)=0
Request a certain reporting configuration to be fulfilled by the UEs attached to the eNodeB entity.
virtual void TriggerHandover(uint16_t rnti, uint16_t targetCellId)=0
Instruct the eNodeB RRC entity to prepare a handover.
Template for the implementation of the LteHandoverManagementSapProvider as a member of an owner class...
void ReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults) override
Send a UE measurement report to handover algorithm.
Template for the implementation of the LteHandoverManagementSapUser as a member of an owner class of ...
void TriggerHandover(uint16_t rnti, uint16_t targetCellId) override
Instruct the eNodeB RRC entity to prepare a handover.
std::vector< uint8_t > AddUeMeasReportConfigForHandover(LteRrcSap::ReportConfigEutra reportConfig) override
Request a certain reporting configuration to be fulfilled by the UEs attached to the eNodeB entity.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
MeasResults structure.
Definition: lte-rrc-sap.h:717
Specifies criteria for triggering of an E-UTRA measurement reporting event.
Definition: lte-rrc-sap.h:373