A Discrete-Event Network Simulator
API
epc-s1ap-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.cat>
18 */
19
20#ifndef EPC_S1AP_SAP_H
21#define EPC_S1AP_SAP_H
22
23#include <ns3/address.h>
24#include <ns3/epc-tft.h>
25#include <ns3/eps-bearer.h>
26#include <ns3/object.h>
27#include <ns3/ptr.h>
28
29#include <list>
30
31namespace ns3
32{
33
40{
41 public:
42 virtual ~EpcS1apSap();
43};
44
52{
53 public:
62 virtual void InitialUeMessage(uint64_t mmeUeS1Id,
63 uint16_t enbUeS1Id,
64 uint64_t stmsi,
65 uint16_t ecgi) = 0;
66
71 {
72 uint8_t erabId;
73 };
74
85 uint64_t mmeUeS1Id,
86 uint16_t enbUeS1Id,
87 std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication) = 0;
88
93 {
94 uint16_t erabId;
97 };
98
107 virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id,
108 uint16_t enbUeS1Id,
109 std::list<ErabSetupItem> erabSetupList) = 0;
110
115 {
116 uint16_t erabId;
119 };
120
129 virtual void PathSwitchRequest(
130 uint64_t enbUeS1Id,
131 uint64_t mmeUeS1Id,
132 uint16_t gci,
133 std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList) = 0;
134};
135
143{
144 public:
147 {
148 uint8_t erabId;
152 };
153
161 virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id,
162 uint16_t enbUeS1Id,
163 std::list<ErabToBeSetupItem> erabToBeSetupList) = 0;
164
169 {
170 uint8_t erabId;
173 };
174
184 uint64_t enbUeS1Id,
185 uint64_t mmeUeS1Id,
186 uint16_t cgi,
187 std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList) = 0;
188};
189
194template <class C>
196{
197 public:
203 MemberEpcS1apSapMme(C* owner);
204
205 // inherited from EpcS1apSapMme
213 void InitialUeMessage(uint64_t mmeUeS1Id,
214 uint16_t enbUeS1Id,
215 uint64_t imsi,
216 uint16_t ecgi) override;
224 uint64_t mmeUeS1Id,
225 uint16_t enbUeS1Id,
226 std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication) override;
227
234 void InitialContextSetupResponse(uint64_t mmeUeS1Id,
235 uint16_t enbUeS1Id,
236 std::list<ErabSetupItem> erabSetupList) override;
245 uint64_t enbUeS1Id,
246 uint64_t mmeUeS1Id,
247 uint16_t cgi,
248 std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList) override;
249
250 private:
253};
254
255template <class C>
257 : m_owner(owner)
258{
259}
260
261template <class C>
263{
264}
265
266template <class C>
267void
269 uint16_t enbUeS1Id,
270 uint64_t imsi,
271 uint16_t ecgi)
272{
273 m_owner->DoInitialUeMessage(mmeUeS1Id, enbUeS1Id, imsi, ecgi);
274}
275
276template <class C>
277void
279 uint64_t mmeUeS1Id,
280 uint16_t enbUeS1Id,
281 std::list<ErabToBeReleasedIndication> erabToBeReleaseIndication)
282{
283 m_owner->DoErabReleaseIndication(mmeUeS1Id, enbUeS1Id, erabToBeReleaseIndication);
284}
285
286template <class C>
287void
289 uint16_t enbUeS1Id,
290 std::list<ErabSetupItem> erabSetupList)
291{
292 m_owner->DoInitialContextSetupResponse(mmeUeS1Id, enbUeS1Id, erabSetupList);
293}
294
295template <class C>
296void
298 uint64_t enbUeS1Id,
299 uint64_t mmeUeS1Id,
300 uint16_t cgi,
301 std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList)
302{
303 m_owner->DoPathSwitchRequest(enbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInDownlinkList);
304}
305
310template <class C>
312{
313 public:
319 MemberEpcS1apSapEnb(C* owner);
320
321 // inherited from EpcS1apSapEnb
328 void InitialContextSetupRequest(uint64_t mmeUeS1Id,
329 uint16_t enbUeS1Id,
330 std::list<ErabToBeSetupItem> erabToBeSetupList) override;
339 uint64_t enbUeS1Id,
340 uint64_t mmeUeS1Id,
341 uint16_t cgi,
342 std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList) override;
343
344 private:
347};
348
349template <class C>
351 : m_owner(owner)
352{
353}
354
355template <class C>
357{
358}
359
360template <class C>
361void
363 uint16_t enbUeS1Id,
364 std::list<ErabToBeSetupItem> erabToBeSetupList)
365{
366 m_owner->DoInitialContextSetupRequest(mmeUeS1Id, enbUeS1Id, erabToBeSetupList);
367}
368
369template <class C>
370void
372 uint64_t enbUeS1Id,
373 uint64_t mmeUeS1Id,
374 uint16_t cgi,
375 std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList)
376{
377 m_owner->DoPathSwitchRequestAcknowledge(enbUeS1Id,
378 mmeUeS1Id,
379 cgi,
380 erabToBeSwitchedInUplinkList);
381}
382
383} // namespace ns3
384
385#endif /* EPC_S1AP_SAP_H */
eNB side of the S1-AP Service Access Point (SAP), provides the eNB methods to be called when an S1-AP...
Definition: epc-s1ap-sap.h:143
virtual void PathSwitchRequestAcknowledge(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList)=0
PATH SWITCH REQUEST ACKNOWLEDGE message, see 3GPP TS 36.413 9.1.5.9.
virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList)=0
Initial context setup request.
Base class that defines EPC S1-AP Service Access Point (SAP) interface.
Definition: epc-s1ap-sap.h:40
virtual ~EpcS1apSap()
Definition: epc-s1ap-sap.cc:25
MME side of the S1-AP Service Access Point (SAP), provides the MME methods to be called when an S1-AP...
Definition: epc-s1ap-sap.h:52
virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabSetupItem > erabSetupList)=0
INITIAL CONTEXT SETUP RESPONSE message, see 3GPP TS 36.413 9.1.4.2.
virtual void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t stmsi, uint16_t ecgi)=0
Initial UE message.
virtual void ErabReleaseIndication(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeReleasedIndication > erabToBeReleaseIndication)=0
As per 3GPP TS 36.413 version 9.8.0 section 8.2.3.2.2, the eNB indicates bearer release by sending an...
virtual void PathSwitchRequest(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t gci, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList)=0
PATH SWITCH REQUEST message, see 3GPP TS 36.413 9.1.5.8.
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 EpcS1apSapEnb as a member of an owner class of type C to which...
Definition: epc-s1ap-sap.h:312
void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList) override
Initial context setup request function.
Definition: epc-s1ap-sap.h:362
void PathSwitchRequestAcknowledge(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList) override
Path switch request acknowledge function.
Definition: epc-s1ap-sap.h:371
C * m_owner
owner class
Definition: epc-s1ap-sap.h:346
Template for the implementation of the EpcS1apSapMme as a member of an owner class of type C to which...
Definition: epc-s1ap-sap.h:196
void PathSwitchRequest(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList) override
Path switch request.
Definition: epc-s1ap-sap.h:297
void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi) override
Initial UE Message function.
Definition: epc-s1ap-sap.h:268
C * m_owner
owner class
Definition: epc-s1ap-sap.h:252
void ErabReleaseIndication(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeReleasedIndication > erabToBeReleaseIndication) override
ERAB Release Indiation function.
Definition: epc-s1ap-sap.h:278
void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabSetupItem > erabSetupList) override
Initial context setup response.
Definition: epc-s1ap-sap.h:288
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ErabToBeSetupItem structure.
Definition: epc-s1ap-sap.h:147
EpsBearer erabLevelQosParameters
Level QOS parameters.
Definition: epc-s1ap-sap.h:149
Ipv4Address transportLayerAddress
transport layer address
Definition: epc-s1ap-sap.h:150
E-RAB Setup Item IEs, see 3GPP TS 36.413 9.1.4.2.
Definition: epc-s1ap-sap.h:93
Ipv4Address enbTransportLayerAddress
transport layer address
Definition: epc-s1ap-sap.h:95
E-RAB Release Indication Item IEs, 3GPP TS 36.413 version 9.8.0 section 9.1.3.7.
Definition: epc-s1ap-sap.h:71