5G-LENA nr-v3.1-69-g2dd513a7
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
ideal-beamforming-helper.h
1// Copyright (c) 2020 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#include "beamforming-helper-base.h"
6
7#include "ns3/event-id.h"
8#include <ns3/beamforming-vector.h>
9#include <ns3/nstime.h>
10
11#ifndef SRC_NR_HELPER_IDEAL_BEAMFORMING_HELPER_H_
12#define SRC_NR_HELPER_IDEAL_BEAMFORMING_HELPER_H_
13
14namespace ns3
15{
16
17class NrGnbNetDevice;
18class NrUeNetDevice;
19class IdealBeamformingAlgorithm;
20
26{
27 public:
35 ~IdealBeamformingHelper() override;
36
41 static TypeId GetTypeId();
42
47 void SetBeamformingMethod(const TypeId& beamformingMethod) override;
48
53 void SetPeriodicity(const Time& v);
58 Time GetPeriodicity() const;
59
63 virtual void Run() const;
64
71 void AddBeamformingTask(const Ptr<NrGnbNetDevice>& gNbDev,
72 const Ptr<NrUeNetDevice>& ueDev) override;
73
74 protected:
75 // inherited from Object
76 void DoInitialize() override;
77
82 virtual void ExpireBeamformingTimer();
83
84 BeamformingVectorPair GetBeamformingVectors(
85 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
86 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
87
92 Ptr<IdealBeamformingAlgorithm>
94
95 std::list<SpectrumPhyPair> m_spectrumPhyPair;
96};
97
98}; // namespace ns3
99
100#endif /* SRC_NR_HELPER_IDEAL_BEAMFORMING_HELPER_H_ */
The BeamformingHelperBase class that is being used as the general interface for beamforming helper cl...
The IdealBeamformingHelper class.
virtual void ExpireBeamformingTimer()
The beamforming timer has expired; at the next slot, perform beamforming.
virtual void Run() const
Run beamforming task.
static TypeId GetTypeId()
Get the Type ID.
IdealBeamformingHelper()
IdealBeamformingHelper.
std::list< SpectrumPhyPair > m_spectrumPhyPair
The list of beamforming tasks to be executed.
Ptr< IdealBeamformingAlgorithm > m_beamformingAlgorithm
The beamforming algorithm that will be used.
void SetPeriodicity(const Time &v)
SetIdealBeamformingPeriodicity.
void AddBeamformingTask(const Ptr< NrGnbNetDevice > &gNbDev, const Ptr< NrUeNetDevice > &ueDev) override
Specify among which devices the beamforming algorithm should be performed.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that will call the configured algorithm for the specified devices and obtain the beamforming...
~IdealBeamformingHelper() override
~IdealBeamformingHelper
void SetBeamformingMethod(const TypeId &beamformingMethod) override
SetBeamformingMethod.
Time GetPeriodicity() const
GetIdealBeamformingPeriodicity.