5G-LENA  nr-v3.0-29-g83cc959
The 5G/NR module for the ns-3 simulator
ns3::BeamManager Class Reference

Antenna array management. More...

#include "beam-manager.h"

+ Inheritance diagram for ns3::BeamManager:
+ Collaboration diagram for ns3::BeamManager:

Public Types

typedef std::map< const Ptr< const NetDevice >, BeamformingVectorBeamformingStorage
 

Public Member Functions

 BeamManager ()
 BeamManager constructor.
 
 ~BeamManager () override
 ~BeamManager
 
virtual void ChangeBeamformingVector (const Ptr< const NetDevice > &device)
 Change the beamforming vector for tx/rx to/from specified device. More...
 
virtual void ChangeToQuasiOmniBeamformingVector ()
 Change current beamforming vector to quasi-omni beamforming vector. More...
 
void Configure (const Ptr< UniformPlanarArray > &antennaArray)
 Configures quasi-omni beamforming vector. More...
 
Ptr< const UniformPlanarArray > GetAntenna () const
 Get a pointer to the current antenna. More...
 
virtual PhasedArrayModel::ComplexVector GetBeamformingVector (const Ptr< NetDevice > &device) const
 Function that returns the beamforming vector weights that is used to communicated with a specified device. More...
 
BeamId GetBeamId (const BeamformingVector &v) const
 Extract the beam id from the beamforming vector specified. More...
 
virtual BeamId GetBeamId (const Ptr< NetDevice > &device) const
 Function that returns the beamId of the beam that is used to communicated with a specified device. More...
 
virtual PhasedArrayModel::ComplexVector GetCurrentBeamformingVector ()
 Function that returns the beamforming vector that is currently being used by the antenna. More...
 
PhasedArrayModel::ComplexVector GetVector (const BeamformingVector &v) const
 Get weight vector from a BeamformingVector. More...
 
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 specified connected device. More...
 
void SetPredefinedBeam (PhasedArrayModel::ComplexVector predefinedBeam)
 
void SetPredefinedBeam (uint16_t sector, double elevation)
 configures a predefined beam to use for directional transmissions More...
 
void SetSector (uint16_t sector, double elevation) const
 Set the Sector. More...
 
void SetSectorAz (double azimuth, double zenith) const
 Set the Sector. More...
 

Static Public Member Functions

static TypeId GetTypeId ()
 GetTypeId. More...
 

Detailed Description

Antenna array management.

BeamManager is responsible of installation and configuration of antenna array. Additionally, in the case of gNB it saves the map of beamforming vectors per device.

Introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 136 bytes (on a 64-bit architecture).

Definition at line 34 of file beam-manager.h.

Member Typedef Documentation

◆ BeamformingStorage

typedef std::map<const Ptr<const NetDevice>, BeamformingVector> ns3::BeamManager::BeamformingStorage

BeamformingStorage type used to save the map of beamforming vectors per device

Definition at line 95 of file beam-manager.h.

Member Function Documentation

◆ ChangeBeamformingVector()

void ns3::BeamManager::ChangeBeamformingVector ( const Ptr< const NetDevice > &  device)
virtual

Change the beamforming vector for tx/rx to/from specified device.

Parameters
deviceDevice to change the beamforming vector for

Definition at line 110 of file beam-manager.cc.

References ChangeToQuasiOmniBeamformingVector().

+ Here is the call graph for this function:

◆ ChangeToQuasiOmniBeamformingVector()

void ns3::BeamManager::ChangeToQuasiOmniBeamformingVector ( )
virtual

Change current beamforming vector to quasi-omni beamforming vector.

Before configuring omni beamforming vector, we want to make sure that it is being calculated with the actual number of antenna rows and columns. We want to avoid recalculations, if these numbers didn't change. Which will normally be the case.

Definition at line 144 of file beam-manager.cc.

References ns3::CreateQuasiOmniBfv(), and ns3::OMNI_BEAM_ID.

Referenced by ChangeBeamformingVector(), and Configure().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Configure()

void ns3::BeamManager::Configure ( const Ptr< UniformPlanarArray > &  antennaArray)

Configures quasi-omni beamforming vector.

Parameters
antennaArraythe antenna array

Definition at line 27 of file beam-manager.cc.

References ChangeToQuasiOmniBeamformingVector().

+ Here is the call graph for this function:

◆ GetAntenna()

Ptr< const UniformPlanarArray > ns3::BeamManager::GetAntenna ( ) const

Get a pointer to the current antenna.

Returns
the antenna

Definition at line 46 of file beam-manager.cc.

◆ GetBeamformingVector()

PhasedArrayModel::ComplexVector ns3::BeamManager::GetBeamformingVector ( const Ptr< NetDevice > &  device) const
virtual

Function that returns the beamforming vector weights that is used to communicated with a specified device.

Returns
the current beamforming vector

Definition at line 174 of file beam-manager.cc.

◆ GetBeamId() [1/2]

BeamId ns3::BeamManager::GetBeamId ( const BeamformingVector v) const

Extract the beam id from the beamforming vector specified.

Returns
the beam id
Parameters
vthe beamforming vector

Definition at line 40 of file beam-manager.cc.

◆ GetBeamId() [2/2]

BeamId ns3::BeamManager::GetBeamId ( const Ptr< NetDevice > &  device) const
virtual

Function that returns the beamId of the beam that is used to communicated with a specified device.

Returns
the current beamforming vector

Definition at line 200 of file beam-manager.cc.

References ns3::OMNI_BEAM_ID.

◆ GetCurrentBeamformingVector()

PhasedArrayModel::ComplexVector ns3::BeamManager::GetCurrentBeamformingVector ( )
virtual

Function that returns the beamforming vector that is currently being used by the antenna.

Returns
the current beamforming vector

Definition at line 138 of file beam-manager.cc.

◆ GetTypeId()

TypeId ns3::BeamManager::GetTypeId ( )
static

GetTypeId.

Returns
the TypeId of this instance

Definition at line 57 of file beam-manager.cc.

Referenced by ns3::NrHelper::NrHelper().

+ Here is the caller graph for this function:

◆ GetVector()

PhasedArrayModel::ComplexVector ns3::BeamManager::GetVector ( const BeamformingVector v) const

Get weight vector from a BeamformingVector.

Parameters
vthe BeamformingVector
Returns
the weight vector

Definition at line 34 of file beam-manager.cc.

◆ SaveBeamformingVector()

void ns3::BeamManager::SaveBeamformingVector ( const BeamformingVector bfv,
const Ptr< const NetDevice > &  device 
)
virtual

Function that saves the beamforming weights of the antenna for transmission or reception to/from a specified connected device.

Parameters
bfvthe unique identifier of the beam
devicedevice to which it is being transmitted, or from which is being received

Definition at line 84 of file beam-manager.cc.

◆ SetPredefinedBeam()

void ns3::BeamManager::SetPredefinedBeam ( uint16_t  sector,
double  elevation 
)

configures a predefined beam to use for directional transmissions

Parameters
sectorspecifies the sector of the beam to be configured
elevationspecifies the elevation angle of the beam to be configured

Definition at line 76 of file beam-manager.cc.

References ns3::CreateDirectionalBfv().

+ Here is the call graph for this function:

◆ SetSector()

void ns3::BeamManager::SetSector ( uint16_t  sector,
double  elevation 
) const

Set the Sector.

Parameters
sectorsector
elevationelevation

Definition at line 225 of file beam-manager.cc.

References ns3::CreateDirectionalBfv().

+ Here is the call graph for this function:

◆ SetSectorAz()

void ns3::BeamManager::SetSectorAz ( double  azimuth,
double  zenith 
) const

Set the Sector.

Parameters
azimuthazimuth
zenithzenith

Definition at line 232 of file beam-manager.cc.

References ns3::CreateDirectionalBfvAz().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: