5#ifndef SRC_NR_MODEL_BEAM_MANAGER_H_
6#define SRC_NR_MODEL_BEAM_MANAGER_H_
8#include "beamforming-vector.h"
10#include "ns3/event-id.h"
11#include "ns3/net-device.h"
12#include "ns3/nstime.h"
21class BeamformingHelperBase;
56 void SetPredefinedBeam(PhasedArrayModel::ComplexVector predefinedBeam);
63 void SetPredefinedBeam(uint16_t sector,
double elevation);
70 void Configure(
const Ptr<UniformPlanarArray>& antennaArray);
90 Ptr<const UniformPlanarArray>
GetAntenna()
const;
104 const Ptr<const NetDevice>& device);
129 const Ptr<NetDevice>& device)
const;
143 void SetSector(uint16_t sector,
double elevation)
const;
150 void SetSectorAz(
double azimuth,
double zenith)
const;
153 Ptr<UniformPlanarArray>
155 uint32_t m_numRows{0};
157 uint32_t m_numColumns{0};
159 uint32_t m_numPortElems{0};
160 bool m_isPolDual{
false};
Representation of a beam id.
Antenna array management.
static TypeId GetTypeId()
GetTypeId.
BeamManager()
BeamManager constructor.
std::map< const Ptr< const NetDevice >, BeamformingVector > BeamformingStorage
void SetSectorAz(double azimuth, double zenith) const
Set the Sector.
PhasedArrayModel::ComplexVector GetVector(const BeamformingVector &v) const
Get weight vector from a BeamformingVector.
virtual PhasedArrayModel::ComplexVector GetBeamformingVector(const Ptr< NetDevice > &device) const
Function that returns the beamforming vector weights that is used to communicated with a specified de...
virtual PhasedArrayModel::ComplexVector GetCurrentBeamformingVector()
Function that returns the beamforming vector that is currently being used by the antenna.
BeamId GetBeamId(const BeamformingVector &v) const
Extract the beam id from the beamforming vector specified.
virtual void ChangeToQuasiOmniBeamformingVector()
Change current beamforming vector to quasi-omni beamforming vector.
void Configure(const Ptr< UniformPlanarArray > &antennaArray)
Configures quasi-omni beamforming vector.
void SetSector(uint16_t sector, double elevation) const
Set the Sector.
Ptr< const UniformPlanarArray > GetAntenna() const
Get a pointer to the current antenna.
~BeamManager() override
~BeamManager
virtual void ChangeBeamformingVector(const Ptr< const NetDevice > &device)
Change the beamforming vector for tx/rx to/from specified device.
virtual void SaveBeamformingVector(const BeamformingVector &bfv, const Ptr< const NetDevice > &device)
Function that saves the beamforming weights of the antenna for transmission or reception to/from a sp...
std::pair< PhasedArrayModel::ComplexVector, BeamId > BeamformingVector
Physical representation of a beam.