5G-LENA nr-v3.0-32-g83aee33
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-helper.h
1/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
3// Copyright (c) 2019 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4//
5// SPDX-License-Identifier: GPL-2.0-only
6
7#ifndef NR_HELPER_H
8#define NR_HELPER_H
9
10#include "cc-bwp-helper.h"
11#include "ideal-beamforming-helper.h"
12#include "nr-bearer-stats-connector.h"
13#include "nr-mac-scheduling-stats.h"
14
15#include <ns3/eps-bearer.h>
16#include <ns3/net-device-container.h>
17#include <ns3/node-container.h>
18#include <ns3/nr-control-messages.h>
19#include <ns3/nr-spectrum-phy.h>
20#include <ns3/object-factory.h>
21
22namespace ns3
23{
24
25class NrUePhy;
26class NrGnbPhy;
27class SpectrumChannel;
28class NrSpectrumValueHelper;
29class NrGnbMac;
30class EpcHelper;
31class EpcTft;
32class NrBearerStatsCalculator;
33class NrMacRxTrace;
34class NrPhyRxTrace;
35class ComponentCarrierEnb;
36class ComponentCarrier;
37class NrMacScheduler;
38class NrGnbNetDevice;
39class NrUeNetDevice;
40class NrUeMac;
41class BwpManagerGnb;
42class BwpManagerUe;
43
202class NrHelper : public Object
203{
204 public:
208 NrHelper();
212 ~NrHelper() override;
213
218 static TypeId GetTypeId();
219
227 NetDeviceContainer InstallUeDevice(
228 const NodeContainer& c,
229 const std::vector<std::reference_wrapper<BandwidthPartInfoPtr>>& allBwps);
236 NetDeviceContainer InstallGnbDevice(
237 const NodeContainer& c,
238 const std::vector<std::reference_wrapper<BandwidthPartInfoPtr>> allBwps);
239
245 static uint32_t GetNumberBwp(const Ptr<const NetDevice>& gnbDevice);
252 static Ptr<NrGnbPhy> GetGnbPhy(const Ptr<NetDevice>& gnbDevice, uint32_t bwpIndex);
259 static Ptr<NrGnbMac> GetGnbMac(const Ptr<NetDevice>& gnbDevice, uint32_t bwpIndex);
266 static Ptr<NrUeMac> GetUeMac(const Ptr<NetDevice>& ueDevice, uint32_t bwpIndex);
273 static Ptr<NrUePhy> GetUePhy(const Ptr<NetDevice>& ueDevice, uint32_t bwpIndex);
279 static Ptr<BwpManagerGnb> GetBwpManagerGnb(const Ptr<NetDevice>& gnbDevice);
285 static Ptr<BwpManagerUe> GetBwpManagerUe(const Ptr<NetDevice>& ueDevice);
292 static Ptr<NrMacScheduler> GetScheduler(const Ptr<NetDevice>& gnbDevice, uint32_t bwpIndex);
293
299 void AttachToClosestEnb(NetDeviceContainer ueDevices, NetDeviceContainer enbDevices);
305 void AttachToEnb(const Ptr<NetDevice>& ueDevice, const Ptr<NetDevice>& gnbDevice);
306
315 void EnableTraces();
316
323 void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer);
333 void ActivateDataRadioBearer(Ptr<NetDevice> ueDevice, EpsBearer bearer);
347 void SetEpcHelper(Ptr<EpcHelper> epcHelper);
348
354 void SetBeamformingHelper(Ptr<BeamformingHelperBase> beamformingHelper);
355
362 void SetHarqEnabled(bool harqEnabled);
367 bool GetHarqEnabled() const;
374 void SetSnrTest(bool snrTest);
379 bool GetSnrTest() const;
380
384 enum OperationBandFlags : uint8_t
385 {
387 INIT_FADING = 0x02,
388 INIT_CHANNEL = 0x04
389 };
390
402 uint8_t flags = INIT_PROPAGATION | INIT_FADING | INIT_CHANNEL);
403
412 uint8_t ActivateDedicatedEpsBearer(NetDeviceContainer ueDevices,
413 EpsBearer bearer,
414 Ptr<EpcTft> tft);
415
424 uint8_t ActivateDedicatedEpsBearer(Ptr<NetDevice> ueDevice, EpsBearer bearer, Ptr<EpcTft> tft);
425
435 void DeActivateDedicatedEpsBearer(Ptr<NetDevice> ueDevice,
436 Ptr<NetDevice> enbDevice,
437 uint8_t bearerId);
438
446 void SetUeMacAttribute(const std::string& n, const AttributeValue& v);
447
455 void SetGnbMacAttribute(const std::string& n, const AttributeValue& v);
456
464 void SetGnbSpectrumAttribute(const std::string& n, const AttributeValue& v);
465
473 void SetUeSpectrumAttribute(const std::string& n, const AttributeValue& v);
474
483 void SetUeChannelAccessManagerAttribute(const std::string& n, const AttributeValue& v);
484
493 void SetGnbChannelAccessManagerAttribute(const std::string& n, const AttributeValue& v);
494
502 void SetSchedulerAttribute(const std::string& n, const AttributeValue& v);
503
512 void SetUePhyAttribute(const std::string& n, const AttributeValue& v);
513
522 void SetGnbPhyAttribute(const std::string& n, const AttributeValue& v);
523
532 void SetUeAntennaAttribute(const std::string& n, const AttributeValue& v);
533
542 void SetGnbAntennaAttribute(const std::string& n, const AttributeValue& v);
543
552 void SetUeChannelAccessManagerTypeId(const TypeId& typeId);
553
562 void SetGnbChannelAccessManagerTypeId(const TypeId& typeId);
563
575 void SetSchedulerTypeId(const TypeId& typeId);
576
583 void SetGnbBwpManagerAlgorithmTypeId(const TypeId& typeId);
584
591 void SetGnbBwpManagerAlgorithmAttribute(const std::string& n, const AttributeValue& v);
592
599 void SetUeBwpManagerAlgorithmTypeId(const TypeId& typeId);
600
601 /*
602 * \brief Sets the TypeId of the PhasedArraySpectrumPropagationLossModel to be used
603 * \param typeId Type of the object
604 */
605 void SetPhasedArraySpectrumPropagationLossModelTypeId(const TypeId& typeId);
606
613 void SetUeBwpManagerAlgorithmAttribute(const std::string& n, const AttributeValue& v);
614
622 const AttributeValue& v);
623
630 void SetChannelConditionModelAttribute(const std::string& n, const AttributeValue& v);
631
638 void SetPathlossAttribute(const std::string& n, const AttributeValue& v);
639
648 void SetGnbDlAmcAttribute(const std::string& n, const AttributeValue& v);
649
658 void SetGnbUlAmcAttribute(const std::string& n, const AttributeValue& v);
659
660 /*
661 * \brief Sets beam managers attribute.
662 * \param n the name of the attribute
663 * \param v the value of the attribute
664 */
665 void SetGnbBeamManagerAttribute(const std::string& n, const AttributeValue& v);
666
672 void SetGnbBeamManagerTypeId(const TypeId& typeId);
673
691 void SetUlErrorModel(const std::string& errorModelTypeId);
692
709 void SetDlErrorModel(const std::string& errorModelTypeId);
710
715
720
724 void EnableUlPhyTraces();
725
731 Ptr<NrPhyRxTrace> GetPhyRxTrace();
732
737
743
752
757
762
767
772
778 Ptr<NrBearerStatsCalculator> GetRlcStatsCalculator();
779
784
789
793 void EnableRlcE2eTraces();
794
798 void EnablePdcpE2eTraces();
799
805 Ptr<NrBearerStatsCalculator> GetPdcpStatsCalculator();
806
811
816
821
822 /*
823 * \brief Enable DL CTRL pathloss trace from a serving cell (this trace connects
824 * to NrSpectrumPhy trace, which is implementation wise different from
825 * EnablePathlossTrace function which is implemented in by using
826 * MultiModelSpectrumChannel trace and which
827 * generates pathloss traces for both DL and UL
828 */
829 void EnableDlCtrlPathlossTraces(NetDeviceContainer& netDeviceContainer);
830
831 /*
832 * \brief Enable DL CTRL pathloss trace from a serving cell (this trace connects
833 * to NrSpectrumPhy trace, which is implementation wise different from
834 * EnablePathlossTrace function which is implemented in by using
835 * MultiModelSpectrumChannel trace and which generates pathloss traces for
836 * both DL and UL)
837 */
838 void EnableDlDataPathlossTraces(NetDeviceContainer& netDeviceContainer);
839
852 int64_t AssignStreams(NetDeviceContainer c, int64_t stream);
853
856 {
857 std::string antennaElem{"ns3::IsotropicAntennaModel"};
858 size_t nAntCols{1};
859 size_t nAntRows{1};
860 bool isDualPolarized{false};
861 size_t nHorizPorts{1};
862 size_t nVertPorts{1};
863 double bearingAngle{0.0};
864 double polSlantAngle{0.0};
865 };
866
869 {
870 std::string pmSearchMethod{"ns3::NrPmSearchFull"};
871 std::string fullSearchCb{"ns3::NrCbTwoPort"};
872 uint8_t rankLimit{UINT8_MAX};
873 };
874
877 void SetPmSearchTypeId(const TypeId& typeId);
878
882 void SetPmSearchAttribute(const std::string& name, const AttributeValue& value);
883
886 void SetupGnbAntennas(const AntennaParams& ap);
887
890 void SetupUeAntennas(const AntennaParams& ap);
891
894 void SetupMimoPmi(const MimoPmiParams& mp);
895
896 private:
897 bool m_enableMimoFeedback{false};
898 ObjectFactory m_pmSearchFactory;
899
915 int64_t DoAssignStreamsToChannelObjects(Ptr<NrSpectrumPhy> phy, int64_t currentStream);
916
926 void DoDeActivateDedicatedEpsBearer(Ptr<NetDevice> ueDevice,
927 Ptr<NetDevice> enbDevice,
928 uint8_t bearerId);
929
930 Ptr<NrGnbPhy> CreateGnbPhy(const Ptr<Node>& n,
931 const std::unique_ptr<BandwidthPartInfo>& bwp,
932 const Ptr<NrGnbNetDevice>& dev,
933 const NrSpectrumPhy::NrPhyRxCtrlEndOkCallback& phyEndCtrlCallback);
934 Ptr<NrMacScheduler> CreateGnbSched();
935 Ptr<NrGnbMac> CreateGnbMac();
936
937 Ptr<NrUeMac> CreateUeMac() const;
938 Ptr<NrUePhy> CreateUePhy(const Ptr<Node>& n,
939 const std::unique_ptr<BandwidthPartInfo>& bwp,
940 const Ptr<NrUeNetDevice>& dev,
941 const NrSpectrumPhy::NrPhyDlHarqFeedbackCallback& dlHarqCallback,
942 const NrSpectrumPhy::NrPhyRxCtrlEndOkCallback& phyRxCtrlCallback);
943
944 Ptr<NetDevice> InstallSingleUeDevice(
945 const Ptr<Node>& n,
946 const std::vector<std::reference_wrapper<BandwidthPartInfoPtr>> allBwps);
947 Ptr<NetDevice> InstallSingleGnbDevice(
948 const Ptr<Node>& n,
949 const std::vector<std::reference_wrapper<BandwidthPartInfoPtr>> allBwps);
950 void AttachToClosestEnb(Ptr<NetDevice> ueDevice, NetDeviceContainer enbDevices);
951
952 ObjectFactory m_gnbNetDeviceFactory;
953 ObjectFactory m_ueNetDeviceFactory;
954 ObjectFactory m_channelFactory;
955 ObjectFactory m_ueMacFactory;
956 ObjectFactory m_gnbMacFactory;
957 ObjectFactory m_ueSpectrumFactory;
958 ObjectFactory m_gnbSpectrumFactory;
959 ObjectFactory m_uePhyFactory;
960 ObjectFactory m_gnbPhyFactory;
961 ObjectFactory m_ueChannelAccessManagerFactory;
962 ObjectFactory m_gnbChannelAccessManagerFactory;
963 ObjectFactory m_schedFactory;
964 ObjectFactory m_ueAntennaFactory;
965 ObjectFactory m_gnbAntennaFactory;
966 ObjectFactory m_gnbBwpManagerAlgoFactory;
967 ObjectFactory m_ueBwpManagerAlgoFactory;
968 ObjectFactory m_channelConditionModelFactory;
969 ObjectFactory m_spectrumPropagationFactory;
970 ObjectFactory m_pathlossModelFactory;
971 ObjectFactory m_gnbDlAmcFactory;
972 ObjectFactory m_gnbUlAmcFactory;
973 ObjectFactory m_gnbBeamManagerFactory;
974 ObjectFactory m_ueBeamManagerFactory;
975
976 uint64_t m_imsiCounter{0};
977 uint16_t m_cellIdCounter{1};
978
979 Ptr<EpcHelper> m_epcHelper{nullptr};
980 Ptr<BeamformingHelperBase> m_beamformingHelper{nullptr};
981
982 bool m_harqEnabled{false};
983 bool m_snrTest{false};
984
985 Ptr<NrPhyRxTrace> m_phyStats;
986 Ptr<NrMacRxTrace> m_macStats;
987
988 NrBearerStatsConnector
989 m_radioBearerStatsConnectorSimpleTraces;
991 NrBearerStatsConnector
992 m_radioBearerStatsConnectorCalculator;
994
995 std::map<uint8_t, ComponentCarrier> m_componentCarrierPhyParams;
996 std::vector<Ptr<Object>>
997 m_channelObjectsWithAssignedStreams;
1000 Ptr<NrMacSchedulingStats> m_macSchedStats;
1001};
1002
1003} // namespace ns3
1004
1005#endif /* NR_HELPER_H */
Helper for a correct setup of every NR simulation.
Definition nr-helper.h:203
void EnableDlDataPhyTraces()
Enable DL DATA PHY traces.
static Ptr< BwpManagerGnb > GetBwpManagerGnb(const Ptr< NetDevice > &gnbDevice)
Get the BwpManager of the GNB.
Definition nr-helper.cc:423
void SetPhasedArraySpectrumPropagationLossModelAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the PhasedArraySpectrumPropagationLossModel before it is created.
int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
static Ptr< NrUeMac > GetUeMac(const Ptr< NetDevice > &ueDevice, uint32_t bwpIndex)
Get a pointer to the MAC of the UE at the specified BWP.
Definition nr-helper.cc:397
void EnableTraces()
Enables the following traces: Transmitted/Received Control Messages DL/UL Phy Traces RLC traces PDCP ...
void AttachToEnb(const Ptr< NetDevice > &ueDevice, const Ptr< NetDevice > &gnbDevice)
Attach a UE to a particular GNB.
void AttachToClosestEnb(NetDeviceContainer ueDevices, NetDeviceContainer enbDevices)
Attach the UE specified to the closest GNB.
NetDeviceContainer InstallGnbDevice(const NodeContainer &c, const std::vector< std::reference_wrapper< BandwidthPartInfoPtr > > allBwps)
Install one (or more) GNBs.
Definition nr-helper.cc:506
void SetBeamformingHelper(Ptr< BeamformingHelperBase > beamformingHelper)
Set an ideal beamforming helper.
bool GetHarqEnabled() const
GetHarqEnabled.
Definition nr-helper.cc:471
void SetGnbDlAmcAttribute(const std::string &n, const AttributeValue &v)
NrHelper()
NrHelper constructor.
Definition nr-helper.cc:59
Ptr< NrBearerStatsCalculator > GetPdcpStatsCalculator()
Get the PDCP stats calculator object.
void EnableUePhyCtrlMsgsTraces()
Enable UE PHY CTRL TX and RX traces.
void EnableRlcSimpleTraces()
Enable RLC simple traces (DL RLC TX, DL RLC RX, UL DL TX, UL DL RX)
void SetUeAntennaAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the UE antenna, before it is created.
void SetUeChannelAccessManagerAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the UE channel access manager, before it is created.
bool GetSnrTest() const
GetSnrTest.
Definition nr-helper.cc:483
void EnableGnbPhyCtrlMsgsTraces()
Enable gNB PHY CTRL TX and RX traces.
~NrHelper() override
~NrHelper
Definition nr-helper.cc:96
void SetGnbBwpManagerAlgorithmTypeId(const TypeId &typeId)
Set the TypeId of the GNB BWP Manager. Works only before it is created.
static Ptr< BwpManagerUe > GetBwpManagerUe(const Ptr< NetDevice > &ueDevice)
Get the BwpManager of the UE.
Definition nr-helper.cc:437
void EnableDlMacSchedTraces()
void SetUeMacAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the UE MAC, before it is created.
void SetUlErrorModel(const std::string &errorModelTypeId)
Set the ErrorModel for UL AMC and UE spectrum at the same time.
OperationBandFlags
Flags for OperationBand initialization.
Definition nr-helper.h:385
@ INIT_PROPAGATION
Initialize the propagation loss model.
Definition nr-helper.h:386
@ INIT_FADING
Initialize the fading model.
Definition nr-helper.h:387
@ INIT_CHANNEL
Initialize the channel model.
Definition nr-helper.h:388
void SetUeBwpManagerAlgorithmTypeId(const TypeId &typeId)
Set the TypeId of the UE BWP Manager. Works only before it is created.
void EnableUlPhyTraces()
Enable UL PHY traces.
void EnablePathlossTraces()
Enable trace sinks for DL and UL pathloss.
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Activate a Data Radio Bearer on a given UE devices.
void SetEpcHelper(Ptr< EpcHelper > epcHelper)
void SetPmSearchAttribute(const std::string &name, const AttributeValue &value)
Set attribute of the precoding matrix search algorithm.
void SetGnbAntennaAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB antenna, before it is created.
void SetupGnbAntennas(const AntennaParams &ap)
Set parameters for gNB and UE antenna arrays.
static Ptr< NrGnbPhy > GetGnbPhy(const Ptr< NetDevice > &gnbDevice, uint32_t bwpIndex)
Get a pointer to the PHY of the GNB at the specified BWP.
Definition nr-helper.cc:371
void EnableUlMacSchedTraces()
void SetGnbUlAmcAttribute(const std::string &n, const AttributeValue &v)
static uint32_t GetNumberBwp(const Ptr< const NetDevice > &gnbDevice)
Get the number of configured BWP for a specific GNB NetDevice.
Definition nr-helper.cc:359
void EnableGnbMacCtrlMsgsTraces()
Enable gNB MAC CTRL TX and RX traces.
void SetUeChannelAccessManagerTypeId(const TypeId &typeId)
Set the TypeId of the UE Channel Access Manager. Works only before it is created.
void DeActivateDedicatedEpsBearer(Ptr< NetDevice > ueDevice, Ptr< NetDevice > enbDevice, uint8_t bearerId)
Manually trigger dedicated bearer de-activation at specific simulation time.
void SetHarqEnabled(bool harqEnabled)
SetHarqEnabled.
Definition nr-helper.cc:465
Ptr< NrBearerStatsCalculator > GetRlcStatsCalculator()
Get the RLC stats calculator object.
void EnableTransportBlockTrace()
Enable transport block trace.
void InitializeOperationBand(OperationBandInfo *band, uint8_t flags=INIT_PROPAGATION|INIT_FADING|INIT_CHANNEL)
Initialize the bandwidth parts by creating and configuring the channel models, if they are not alread...
Definition nr-helper.cc:267
void EnableGnbPacketCountTrace()
Enable gNB packet count trace.
void SetDlErrorModel(const std::string &errorModelTypeId)
Set the ErrorModel for DL AMC and GNB spectrum at the same time.
void EnableRlcE2eTraces()
Enable RLC calculator and end-to-end RCL traces to file.
void EnablePdcpSimpleTraces()
Enable PDCP traces (DL PDCP TX, DL PDCP RX, UL PDCP TX, UL PDCP RX)
static Ptr< NrMacScheduler > GetScheduler(const Ptr< NetDevice > &gnbDevice, uint32_t bwpIndex)
Get the Scheduler from the GNB specified.
Definition nr-helper.cc:451
void SetUeBwpManagerAlgorithmAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB BWP Manager, before it is created.
void SetGnbMacAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB MAC, before it is created.
void SetGnbPhyAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB PHY, before it is created.
void EnableDlCtrlPhyTraces()
Enable DL CTRL PHY traces.
void SetupUeAntennas(const AntennaParams &ap)
Set parameters for gNB and UE antenna arrays.
static Ptr< NrGnbMac > GetGnbMac(const Ptr< NetDevice > &gnbDevice, uint32_t bwpIndex)
Get a pointer to the MAC of the GNB at the specified BWP.
Definition nr-helper.cc:384
void SetUePhyAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the UE PHY, before it is created.
static Ptr< NrUePhy > GetUePhy(const Ptr< NetDevice > &ueDevice, uint32_t bwpIndex)
Get a pointer to the PHY of the UE at the specified BWP.
Definition nr-helper.cc:410
uint8_t ActivateDedicatedEpsBearer(NetDeviceContainer ueDevices, EpsBearer bearer, Ptr< EpcTft > tft)
void SetupMimoPmi(const MimoPmiParams &mp)
Set parameters for PMI search in MIMO operation.
void EnableUePacketCountTrace()
Enable UE packet count trace.
static TypeId GetTypeId()
GetTypeId.
Definition nr-helper.cc:102
void SetUeSpectrumAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the UE spectrum, before it is created.
void SetPathlossAttribute(const std::string &n, const AttributeValue &v)
void SetSchedulerAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the scheduler, before it is created.
void EnableUeMacCtrlMsgsTraces()
Enable UE MAC CTRL TX and RX traces.
void SetSchedulerTypeId(const TypeId &typeId)
Set the Scheduler TypeId. Works only before it is created.
void SetGnbBwpManagerAlgorithmAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB BWP Manager, before it is created.
Ptr< NrPhyRxTrace > GetPhyRxTrace()
Get the phy traces object.
void SetGnbSpectrumAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB spectrum, before it is created.
NetDeviceContainer InstallUeDevice(const NodeContainer &c, const std::vector< std::reference_wrapper< BandwidthPartInfoPtr > > &allBwps)
Install one (or more) UEs.
Definition nr-helper.cc:489
void SetChannelConditionModelAttribute(const std::string &n, const AttributeValue &v)
void SetGnbChannelAccessManagerAttribute(const std::string &n, const AttributeValue &v)
Set an attribute for the GNB channel access manager, before it is created.
void EnablePdcpE2eTraces()
Enable PDCP calculator and end-to-end PDCP traces to file.
void SetGnbChannelAccessManagerTypeId(const TypeId &typeId)
Set the TypeId of the GNB Channel Access Manager. Works only before it is created.
void SetGnbBeamManagerTypeId(const TypeId &typeId)
Set the TypeId of the beam manager.
void SetPmSearchTypeId(const TypeId &typeId)
Set TypeId of the precoding matrix search algorithm.
void SetSnrTest(bool snrTest)
SetSnrTest.
Definition nr-helper.cc:477
std::function< void(const std::list< Ptr< NrControlMessage > > &, uint8_t)> NrPhyRxCtrlEndOkCallback
This callback method type is used to notify that CTRL is received.
Callback< void, const DlHarqInfo & > NrPhyDlHarqFeedbackCallback
parameters of the gNB or UE antenna arrays
Definition nr-helper.h:856
size_t nAntRows
Number of antenna element rows (vertical height)
Definition nr-helper.h:859
bool isDualPolarized
true if antennas are cross-polarized (dual-polarized)
Definition nr-helper.h:860
double bearingAngle
Bearing angle in radians.
Definition nr-helper.h:863
std::string antennaElem
Antenna type.
Definition nr-helper.h:857
size_t nHorizPorts
Number of antenna ports in horizontal direction.
Definition nr-helper.h:861
size_t nVertPorts
Number of antenna ports in vertical direction.
Definition nr-helper.h:862
size_t nAntCols
Number of antenna element columns (horizontal width)
Definition nr-helper.h:858
double polSlantAngle
Polarization slant angle in radians.
Definition nr-helper.h:864
parameters for the search of optimal rank and precoding matrix indicator (RI, PMI)
Definition nr-helper.h:869
uint8_t rankLimit
Limit maximum MIMO rank to model limited UE capabilities.
Definition nr-helper.h:872
std::string fullSearchCb
Codebook when using full-search algorithm.
Definition nr-helper.h:871
std::string pmSearchMethod
Precoding matrix search algorithm.
Definition nr-helper.h:870
Operation band information structure.