A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
epc-s1ap-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.cat>
19  */
20 
21 #ifndef EPC_S1AP_SAP_H
22 #define EPC_S1AP_SAP_H
23 
24 #include <ns3/address.h>
25 #include <ns3/ptr.h>
26 #include <ns3/object.h>
27 #include <ns3/eps-bearer.h>
28 #include <ns3/epc-tft.h>
29 #include <list>
30 
31 
32 namespace ns3 {
33 
35 {
36 public:
37  virtual ~EpcS1apSap ();
38 
39 };
40 
41 
48 class EpcS1apSapMme : public EpcS1apSap
49 {
50 public:
51 
60  virtual void InitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t stmsi, uint16_t ecgi) = 0;
61 
62 
68  {
69  uint16_t erabId;
71  uint32_t enbTeid;
72  };
73 
82  virtual void InitialContextSetupResponse (uint64_t mmeUeS1Id,
83  uint16_t enbUeS1Id,
84  std::list<ErabSetupItem> erabSetupList) = 0;
85 
86 
92  {
93  uint16_t erabId;
95  uint32_t enbTeid;
96  };
97 
102  virtual void PathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t gci, std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList) = 0;
103 };
104 
105 
106 
113 class EpcS1apSapEnb : public EpcS1apSap
114 {
115 public:
116 
117 
119  {
120  uint8_t erabId;
123  uint32_t sgwTeid;
124  };
125 
134  virtual void InitialContextSetupRequest (uint64_t mmeUeS1Id,
135  uint16_t enbUeS1Id,
136  std::list<ErabToBeSetupItem> erabToBeSetupList) = 0;
137 
138 
144  {
145  uint8_t erabId;
147  uint32_t enbTeid;
148  };
149 
154  virtual void PathSwitchRequestAcknowledge (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList) = 0;
155 
156 
157 };
158 
159 
160 
161 
162 
163 
169 template <class C>
171 {
172 public:
173  MemberEpcS1apSapMme (C* owner);
174 
175  // inherited from EpcS1apSapMme
176  virtual void InitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi);
177  virtual void InitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabSetupItem> erabSetupList);
178  virtual void PathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList);
179 
180 private:
183 };
184 
185 template <class C>
187  : m_owner (owner)
188 {
189 }
190 
191 template <class C>
193 {
194 }
195 
196 template <class C>
197 void MemberEpcS1apSapMme<C>::InitialUeMessage (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi)
198 {
199  m_owner->DoInitialUeMessage (mmeUeS1Id, enbUeS1Id, imsi, ecgi);
200 }
201 
202 template <class C>
203 void MemberEpcS1apSapMme<C>::InitialContextSetupResponse (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabSetupItem> erabSetupList)
204 {
205  m_owner->DoInitialContextSetupResponse (mmeUeS1Id, enbUeS1Id, erabSetupList);
206 }
207 
208 template <class C>
209 void MemberEpcS1apSapMme<C>::PathSwitchRequest (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInDownlinkItem> erabToBeSwitchedInDownlinkList)
210 {
211  m_owner->DoPathSwitchRequest (enbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInDownlinkList);
212 }
213 
214 
215 
216 
217 
218 
219 
225 template <class C>
227 {
228 public:
229  MemberEpcS1apSapEnb (C* owner);
230 
231  // inherited from EpcS1apSapEnb
232  virtual void InitialContextSetupRequest (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeSetupItem> erabToBeSetupList);
233  virtual void PathSwitchRequestAcknowledge (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList);
234 
235 private:
238 };
239 
240 template <class C>
242  : m_owner (owner)
243 {
244 }
245 
246 template <class C>
248 {
249 }
250 
251 template <class C>
252 void MemberEpcS1apSapEnb<C>::InitialContextSetupRequest (uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list<ErabToBeSetupItem> erabToBeSetupList)
253 {
254  m_owner->DoInitialContextSetupRequest (mmeUeS1Id, enbUeS1Id, erabToBeSetupList);
255 }
256 
257 template <class C>
258 void MemberEpcS1apSapEnb<C>::PathSwitchRequestAcknowledge (uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list<ErabSwitchedInUplinkItem> erabToBeSwitchedInUplinkList)
259 {
260  m_owner->DoPathSwitchRequestAcknowledge (enbUeS1Id, mmeUeS1Id, cgi, erabToBeSwitchedInUplinkList);
261 }
262 
263 
264 
265 
266 
267 
268 
269 } //namespace ns3
270 
271 #endif /* EPC_S1AP_SAP_H */
272 
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.
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:48
E-RAB Setup Item IEs, see 3GPP TS 36.413 9.1.4.2.
Definition: epc-s1ap-sap.h:67
virtual void InitialContextSetupResponse(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabSetupItem > erabSetupList)
INITIAL CONTEXT SETUP RESPONSE message, see 3GPP TS 36.413 9.1.4.2.
Definition: epc-s1ap-sap.h:203
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:71
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:113
virtual void PathSwitchRequestAcknowledge(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInUplinkItem > erabToBeSwitchedInUplinkList)
PATH SWITCH REQUEST ACKNOWLEDGE message, see 3GPP TS 36.413 9.1.5.9.
Definition: epc-s1ap-sap.h:258
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.
virtual ~EpcS1apSap()
Definition: epc-s1ap-sap.cc:25
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 InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList)=0
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:38
virtual void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t imsi, uint16_t ecgi)
Definition: epc-s1ap-sap.h:197
virtual void InitialContextSetupRequest(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, std::list< ErabToBeSetupItem > erabToBeSetupList)
Definition: epc-s1ap-sap.h:252
virtual void InitialUeMessage(uint64_t mmeUeS1Id, uint16_t enbUeS1Id, uint64_t stmsi, uint16_t ecgi)=0
Template for the implementation of the EpcS1apSapMme as a member of an owner class of type C to which...
Definition: epc-s1ap-sap.h:170
virtual void PathSwitchRequest(uint64_t enbUeS1Id, uint64_t mmeUeS1Id, uint16_t cgi, std::list< ErabSwitchedInDownlinkItem > erabToBeSwitchedInDownlinkList)
PATH SWITCH REQUEST message, see 3GPP TS 36.413 9.1.5.8.
Definition: epc-s1ap-sap.h:209
Template for the implementation of the EpcS1apSapEnb as a member of an owner class of type C to which...
Definition: epc-s1ap-sap.h:226