5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-epc-gnb-s1-sap.h
1// Copyright (c) 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Author: Nicola Baldo <nbaldo@cttc.es>
6
7#ifndef NR_EPC_GNB_S1_SAP_H
8#define NR_EPC_GNB_S1_SAP_H
9
10#include "nr-eps-bearer.h"
11
12#include "ns3/ipv4-address.h"
13
14#include <list>
15
16namespace ns3
17{
18
26{
27 public:
28 virtual ~NrEpcGnbS1SapProvider() = default;
29
36 virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti) = 0;
37
44 virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId) = 0;
45
48 {
49 uint8_t epsBearerId;
50 uint32_t teid;
51 };
52
55 {
56 uint16_t rnti;
57 uint16_t cellId;
58 uint32_t mmeUeS1Id;
59 std::list<BearerToBeSwitched> bearersToBeSwitched;
60 };
61
68
76 virtual void UeContextRelease(uint16_t rnti) = 0;
77};
78
138
143template <class C>
145{
146 public:
153
154 // Delete default constructor to avoid misuse
156
157 // inherited from NrEpcGnbS1SapProvider
158 void InitialUeMessage(uint64_t imsi, uint16_t rnti) override;
159 void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId) override;
160
162 void UeContextRelease(uint16_t rnti) override;
163
164 private:
165 C* m_owner;
166};
167
168template <class C>
170 : m_owner(owner)
171{
172}
173
174template <class C>
175void
177{
178 m_owner->DoInitialUeMessage(imsi, rnti);
179}
180
181template <class C>
182void
184 uint16_t rnti,
185 uint8_t bearerId)
186{
187 m_owner->DoReleaseIndication(imsi, rnti, bearerId);
188}
189
190template <class C>
191void
193{
194 m_owner->DoPathSwitchRequest(params);
195}
196
197template <class C>
198void
200{
201 m_owner->DoUeContextRelease(rnti);
202}
203
208template <class C>
210{
211 public:
217 NrMemberEpcGnbS1SapUser(C* owner);
218
219 // Delete default constructor to avoid misuse
220 NrMemberEpcGnbS1SapUser() = delete;
221
222 // inherited from NrEpcGnbS1SapUser
226
227 private:
228 C* m_owner;
229};
230
231template <class C>
233 : m_owner(owner)
234{
235}
236
237template <class C>
238void
240{
241 m_owner->DoInitialContextSetupRequest(params);
242}
243
244template <class C>
245void
248{
249 m_owner->DoDataRadioBearerSetupRequest(params);
250}
251
252template <class C>
253void
256{
257 m_owner->DoPathSwitchRequestAcknowledge(params);
258}
259
260} // namespace ns3
261
262#endif // NR_EPC_GNB_S1_SAP_H
virtual void UeContextRelease(uint16_t rnti)=0
virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId)=0
Triggers epc-gnb-application to send ERAB Release Indication message towards MME.
virtual void InitialUeMessage(uint64_t imsi, uint16_t rnti)=0
virtual void PathSwitchRequest(PathSwitchRequestParameters params)=0
virtual void InitialContextSetupRequest(InitialContextSetupRequestParameters params)=0
virtual void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params)=0
virtual void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params)=0
This class contains the specification of EPS Bearers.
void PathSwitchRequest(PathSwitchRequestParameters params) override
void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId) override
Triggers epc-gnb-application to send ERAB Release Indication message towards MME.
void UeContextRelease(uint16_t rnti) override
void InitialUeMessage(uint64_t imsi, uint16_t rnti) override
void DataRadioBearerSetupRequest(DataRadioBearerSetupRequestParameters params) override
void InitialContextSetupRequest(InitialContextSetupRequestParameters params) override
void PathSwitchRequestAcknowledge(PathSwitchRequestAcknowledgeParameters params) override
std::list< BearerToBeSwitched > bearersToBeSwitched
list of bearers to be switched
uint32_t mmeUeS1Id
mmeUeS1Id in practice, we use the IMSI
PathSwitchRequestAcknowledgeParameters structure.