5G-LENA nr-v3.3-120-gdac69c56
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-gnb-cphy-sap.h
1// Copyright (c) 2011, 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// Marco Miozzo <mmiozzo@cttc.es>
7
8#ifndef NR_GNB_CPHY_SAP_H
9#define NR_GNB_CPHY_SAP_H
10
11#include "nr-rrc-sap.h"
12
13#include "ns3/ptr.h"
14
15#include <stdint.h>
16
17namespace ns3
18{
19
20class NrGnbNetDevice;
21
29{
30 public:
34 virtual ~NrGnbCphySapProvider() = default;
35
41 virtual void SetCellId(uint16_t cellId) = 0;
42
49 virtual void SetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth) = 0;
50
57 virtual void SetEarfcn(uint32_t ulEarfcn, uint32_t dlEarfcn) = 0;
58
64 virtual void AddUe(uint16_t rnti) = 0;
65
71 virtual void RemoveUe(uint16_t rnti) = 0;
72
79 virtual void SetPa(uint16_t rnti, double pa) = 0;
80
87 virtual void SetTransmissionMode(uint16_t rnti, uint8_t txMode) = 0;
88
95 virtual void SetSrsConfigurationIndex(uint16_t rnti, uint16_t srsCi) = 0;
96
103
110
116 virtual int8_t GetReferenceSignalPower() = 0;
117};
118
126{
127 public:
131 virtual ~NrGnbCphySapUser() = default;
132};
133
138template <class C>
140{
141 public:
148
149 // Delete default constructor to avoid misuse
151
152 // inherited from NrGnbCphySapProvider
153 void SetCellId(uint16_t cellId) override;
154 void SetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth) override;
155 void SetEarfcn(uint32_t ulEarfcn, uint32_t dlEarfcn) override;
156 void AddUe(uint16_t rnti) override;
157 void RemoveUe(uint16_t rnti) override;
158 void SetPa(uint16_t rnti, double pa) override;
159 void SetTransmissionMode(uint16_t rnti, uint8_t txMode) override;
160 void SetSrsConfigurationIndex(uint16_t rnti, uint16_t srsCi) override;
163 int8_t GetReferenceSignalPower() override;
164
165 private:
166 C* m_owner;
167};
168
169template <class C>
171 : m_owner(owner)
172{
173}
174
175template <class C>
176void
178{
179 m_owner->DoSetCellId(cellId);
180}
181
182template <class C>
183void
184MemberNrGnbCphySapProvider<C>::SetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth)
185{
186 m_owner->DoSetBandwidth(ulBandwidth, dlBandwidth);
187}
188
189template <class C>
190void
191MemberNrGnbCphySapProvider<C>::SetEarfcn(uint32_t ulEarfcn, uint32_t dlEarfcn)
192{
193 m_owner->DoSetEarfcn(ulEarfcn, dlEarfcn);
194}
195
196template <class C>
197void
199{
200 m_owner->DoAddUe(rnti);
201}
202
203template <class C>
204void
206{
207 m_owner->DoRemoveUe(rnti);
208}
209
210template <class C>
211void
213{
214 m_owner->DoSetPa(rnti, pa);
215}
216
217template <class C>
218void
220{
221 m_owner->DoSetTransmissionMode(rnti, txMode);
222}
223
224template <class C>
225void
227{
228 m_owner->DoSetSrsConfigurationIndex(rnti, srsCi);
229}
230
231template <class C>
232void
234{
235 m_owner->DoSetMasterInformationBlock(mib);
236}
237
238template <class C>
239void
242{
243 m_owner->DoSetSystemInformationBlockType1(sib1);
244}
245
246template <class C>
247int8_t
249{
250 return m_owner->DoGetReferenceSignalPower();
251}
252
257template <class C>
259{
260 public:
266 MemberNrGnbCphySapUser(C* owner);
267
268 // Delete default constructor to avoid misuse
269 MemberNrGnbCphySapUser() = delete;
270
271 // methods inherited from NrGnbCphySapUser go here
272
273 private:
274 C* m_owner;
275};
276
277template <class C>
279 : m_owner(owner)
280{
281}
282
283} // namespace ns3
284
285#endif // NR_GNB_CPHY_SAP_H
void SetSrsConfigurationIndex(uint16_t rnti, uint16_t srsCi) override
void RemoveUe(uint16_t rnti) override
void AddUe(uint16_t rnti) override
int8_t GetReferenceSignalPower() override
void SetEarfcn(uint32_t ulEarfcn, uint32_t dlEarfcn) override
void SetCellId(uint16_t cellId) override
void SetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth) override
void SetMasterInformationBlock(NrRrcSap::MasterInformationBlock mib) override
void SetTransmissionMode(uint16_t rnti, uint8_t txMode) override
void SetPa(uint16_t rnti, double pa) override
void SetSystemInformationBlockType1(NrRrcSap::SystemInformationBlockType1 sib1) override
virtual void SetCellId(uint16_t cellId)=0
virtual void RemoveUe(uint16_t rnti)=0
virtual void SetSrsConfigurationIndex(uint16_t rnti, uint16_t srsCi)=0
virtual void SetMasterInformationBlock(NrRrcSap::MasterInformationBlock mib)=0
virtual void SetEarfcn(uint32_t ulEarfcn, uint32_t dlEarfcn)=0
virtual void SetBandwidth(uint16_t ulBandwidth, uint16_t dlBandwidth)=0
virtual void AddUe(uint16_t rnti)=0
virtual ~NrGnbCphySapProvider()=default
virtual void SetPa(uint16_t rnti, double pa)=0
virtual void SetTransmissionMode(uint16_t rnti, uint8_t txMode)=0
virtual int8_t GetReferenceSignalPower()=0
virtual void SetSystemInformationBlockType1(NrRrcSap::SystemInformationBlockType1 sib1)=0
virtual ~NrGnbCphySapUser()=default
MasterInformationBlock structure.
Definition nr-rrc-sap.h:627
SystemInformationBlockType1 structure.
Definition nr-rrc-sap.h:635