A Discrete-Event Network Simulator
API
epc-enb-s1-sap.h
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Nicola Baldo <nbaldo@cttc.es>
19  */
20 
21 #ifndef EPC_ENB_S1_SAP_H
22 #define EPC_ENB_S1_SAP_H
23 
24 #include <list>
25 #include <ns3/eps-bearer.h>
26 #include <ns3/ipv4-address.h>
27 
28 namespace ns3 {
29 
30 
39 {
40 public:
41  virtual ~EpcEnbS1SapProvider ();
42 
49  virtual void InitialUeMessage (uint64_t imsi, uint16_t rnti) = 0;
50 
57  virtual void DoSendReleaseIndication (uint64_t imsi, uint16_t rnti, uint8_t bearerId) = 0;
58 
61  {
62  uint8_t epsBearerId;
63  uint32_t teid;
64  };
65 
68  {
69  uint16_t rnti;
70  uint16_t cellId;
71  uint32_t mmeUeS1Id;
72  std::list<BearerToBeSwitched> bearersToBeSwitched;
73  };
74 
81 
82 
90  virtual void UeContextRelease (uint16_t rnti) = 0;
91 
92 };
93 
94 
95 
104 {
105 public:
106  virtual ~EpcEnbS1SapUser ();
107 
112  {
113  uint16_t rnti;
114  };
115 
122 
127  {
128  uint16_t rnti;
131  uint8_t bearerId;
132  uint32_t gtpTeid;
134  };
135 
142 
143 
146  {
147  uint16_t rnti;
148  };
149 
156 
157 };
158 
159 
160 
161 
167 template <class C>
169 {
170 public:
176  MemberEpcEnbS1SapProvider (C* owner);
177 
178  // inherited from EpcEnbS1SapProvider
179  virtual void InitialUeMessage (uint64_t imsi, uint16_t rnti);
180  virtual void DoSendReleaseIndication (uint64_t imsi, uint16_t rnti, uint8_t bearerId);
181 
182  virtual void PathSwitchRequest (PathSwitchRequestParameters params);
183  virtual void UeContextRelease (uint16_t rnti);
184 
185 private:
187  C* m_owner;
188 };
189 
190 template <class C>
192  : m_owner (owner)
193 {
194 }
195 
196 template <class C>
198 {
199 }
200 
201 
202 template <class C>
203 void MemberEpcEnbS1SapProvider<C>::InitialUeMessage (uint64_t imsi, uint16_t rnti)
204 {
205  m_owner->DoInitialUeMessage (imsi, rnti);
206 }
207 
208 template <class C>
209 void MemberEpcEnbS1SapProvider<C>::DoSendReleaseIndication (uint64_t imsi, uint16_t rnti, uint8_t bearerId)
210 {
211  m_owner->DoReleaseIndication (imsi, rnti, bearerId);
212 }
213 
214 template <class C>
216 {
217  m_owner->DoPathSwitchRequest (params);
218 }
219 
220 template <class C>
222 {
223  m_owner->DoUeContextRelease (rnti);
224 }
225 
231 template <class C>
233 {
234 public:
240  MemberEpcEnbS1SapUser (C* owner);
241 
242  // inherited from EpcEnbS1SapUser
246 
247 private:
249  C* m_owner;
250 };
251 
252 template <class C>
254  : m_owner (owner)
255 {
256 }
257 
258 template <class C>
260 {
261 }
262 
263 template <class C>
265 {
266  m_owner->DoInitialContextSetupRequest (params);
267 }
268 
269 template <class C>
271 {
272  m_owner->DoDataRadioBearerSetupRequest (params);
273 }
274 
275 template <class C>
277 {
278  m_owner->DoPathSwitchRequestAcknowledge (params);
279 }
280 
281 } // namespace ns3
282 
283 #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
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:92
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
Template for the implementation of the EpcEnbS1SapProvider as a member of an owner class of type C to...
virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId)
Triggers epc-enb-application to send ERAB Release Indication message towards MME.
virtual void UeContextRelease(uint16_t rnti)
release UE context at the S1 Application of the source eNB after reception of the UE CONTEXT RELEASE ...
virtual void PathSwitchRequest(PathSwitchRequestParameters params)
Path Switch Request.
virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti)
Template for the implementation of the EpcEnbS1SapUser as a member of an owner class of type C to whi...
virtual void InitialContextSetupRequest(InitialContextSetupRequestParameters params)
Initial context setup request.
virtual void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params)
request a path switch acknowledge
virtual void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params)
request the setup of a DataRadioBearer
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.