A Discrete-Event Network Simulator
API
epc-enb-s1-sap.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
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: Nicola Baldo <nbaldo@cttc.es>
18 */
19
20#ifndef EPC_ENB_S1_SAP_H
21#define EPC_ENB_S1_SAP_H
22
23#include <ns3/eps-bearer.h>
24#include <ns3/ipv4-address.h>
25
26#include <list>
27
28namespace ns3
29{
30
38{
39 public:
40 virtual ~EpcEnbS1SapProvider();
41
48 virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti) = 0;
49
56 virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId) = 0;
57
60 {
61 uint8_t epsBearerId;
63 };
64
67 {
68 uint16_t rnti;
69 uint16_t cellId;
71 std::list<BearerToBeSwitched> bearersToBeSwitched;
72 };
73
80
88 virtual void UeContextRelease(uint16_t rnti) = 0;
89};
90
98{
99 public:
100 virtual ~EpcEnbS1SapUser();
101
106 {
107 uint16_t rnti;
108 };
109
116
121 {
122 uint16_t rnti;
125 uint8_t bearerId;
128 };
129
136
139 {
140 uint16_t rnti;
141 };
142
149};
150
155template <class C>
157{
158 public:
165
166 // inherited from EpcEnbS1SapProvider
167 void InitialUeMessage(uint64_t imsi, uint16_t rnti) override;
168 void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId) override;
169
171 void UeContextRelease(uint16_t rnti) override;
172
173 private:
176};
177
178template <class C>
180 : m_owner(owner)
181{
182}
183
184template <class C>
186{
187}
188
189template <class C>
190void
192{
193 m_owner->DoInitialUeMessage(imsi, rnti);
194}
195
196template <class C>
197void
199 uint16_t rnti,
200 uint8_t bearerId)
201{
202 m_owner->DoReleaseIndication(imsi, rnti, bearerId);
203}
204
205template <class C>
206void
208{
209 m_owner->DoPathSwitchRequest(params);
210}
211
212template <class C>
213void
215{
216 m_owner->DoUeContextRelease(rnti);
217}
218
223template <class C>
225{
226 public:
232 MemberEpcEnbS1SapUser(C* owner);
233
234 // inherited from EpcEnbS1SapUser
238
239 private:
242};
243
244template <class C>
246 : m_owner(owner)
247{
248}
249
250template <class C>
252{
253}
254
255template <class C>
256void
258{
259 m_owner->DoInitialContextSetupRequest(params);
260}
261
262template <class C>
263void
265{
266 m_owner->DoDataRadioBearerSetupRequest(params);
267}
268
269template <class C>
270void
273{
274 m_owner->DoPathSwitchRequestAcknowledge(params);
275}
276
277} // namespace ns3
278
279#endif // EPC_ENB_S1_SAP_H
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
virtual void UeContextRelease(uint16_t rnti)=0
Release UE context at the S1 Application of the source eNB after reception of the UE CONTEXT RELEASE ...
virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId)=0
Triggers epc-enb-application to send ERAB Release Indication message towards MME.
virtual void PathSwitchRequest(PathSwitchRequestParameters params)=0
Path Switch Request.
virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti)=0
Initial UE message.
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
virtual void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params)=0
Request a path switch acknowledge.
virtual void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params)=0
Request the setup of a DataRadioBearer.
virtual void InitialContextSetupRequest(InitialContextSetupRequestParameters params)=0
Initial context setup request.
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:91
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:43
Template for the implementation of the EpcEnbS1SapProvider as a member of an owner class of type C to...
void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId) override
Triggers epc-enb-application to send ERAB Release Indication message towards MME.
void InitialUeMessage(uint64_t imsi, uint16_t rnti) override
Initial UE message.
void PathSwitchRequest(PathSwitchRequestParameters params) override
Path Switch Request.
void UeContextRelease(uint16_t rnti) override
Release UE context at the S1 Application of the source eNB after reception of the UE CONTEXT RELEASE ...
Template for the implementation of the EpcEnbS1SapUser as a member of an owner class of type C to whi...
void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params) override
Request the setup of a DataRadioBearer.
void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params) override
Request a path switch acknowledge.
void InitialContextSetupRequest(InitialContextSetupRequestParameters params) override
Initial context setup request.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
PathSwitchRequestParameters structure.
std::list< BearerToBeSwitched > bearersToBeSwitched
list of bearers to be switched
uint32_t mmeUeS1Id
mmeUeS1Id in practice, we use the IMSI
Parameters passed to DataRadioBearerSetupRequest ()
EpsBearer bearer
the characteristics of the bearer to be setup
uint16_t rnti
the RNTI identifying the UE for which the DataRadioBearer is to be created
uint32_t gtpTeid
S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1.
Ipv4Address transportLayerAddress
IP Address of the SGW, see 36.423 9.2.1.
Parameters passed to InitialContextSetupRequest ()
PathSwitchRequestAcknowledgeParameters structure.