5G-LENA nr-v3.3-18-g7e4df5bb
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
cttc-nr-3gpp-calibration-utils-v2.h
1// Copyright (c) 2020 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#ifndef NR_3GPP_CALIBRATION_UTILS_V2_H
6#define NR_3GPP_CALIBRATION_UTILS_V2_H
7
8#include "sinr-output-stats.h"
9
10#include "ns3/random-variable-stream.h"
11#include <ns3/distance-based-three-gpp-spectrum-propagation-loss-model.h>
12#include <ns3/hexagonal-grid-scenario-helper.h>
13#include <ns3/nr-module.h>
14
15namespace ns3
16{
17
18class SinrOutputStats;
19class PowerOutputStats;
20class SlotOutputStats;
21class RbOutputStats;
22
24{
25 public:
26 static void SetLenaV2SimulatorParameters(const double sector0AngleRad,
27 const std::string& scenario,
28 const std::string& confType,
29 const std::string& radioNetwork,
30 std::string errorModel,
31 const std::string& operationMode,
32 const std::string& direction,
33 uint16_t numerology,
34 const std::string& pattern,
35 const NodeContainer& gnbSector1Container,
36 const NodeContainer& gnbSector2Container,
37 const NodeContainer& gnbSector3Container,
38 const NodeContainer& ueSector1Container,
39 const NodeContainer& ueSector2Container,
40 const NodeContainer& ueSector3Container,
41 const Ptr<NrPointToPointEpcHelper>& baseEpcHelper,
42 Ptr<NrHelper>& nrHelper,
43 NetDeviceContainer& gnbSector1NetDev,
44 NetDeviceContainer& gnbSector2NetDev,
45 NetDeviceContainer& gnbSector3NetDev,
46 NetDeviceContainer& ueSector1NetDev,
47 NetDeviceContainer& ueSector2NetDev,
48 NetDeviceContainer& ueSector3NetDev,
49 bool enableFading,
50 bool enableUlPc,
51 std::string powerAllocation,
52 SinrOutputStats* sinrStats,
53 PowerOutputStats* ueTxPowerStats,
54 PowerOutputStats* gnbRxPowerStats,
55 SlotOutputStats* slotStats,
56 RbOutputStats* rbStats,
57 const std::string& scheduler,
58 uint32_t bandwidthMHz,
59 double startingFreq,
60 uint32_t freqScenario,
61 double gnbTxPower,
62 double ueTxPower,
63 double downtiltAngle,
64 const uint32_t gnbNumRows,
65 const uint32_t gnbNumColumns,
66 const uint32_t ueNumRows,
67 const uint32_t ueNumColumns,
68 bool gnbEnable3gppElement,
69 bool ueEnable3gppElement,
70 const double gnbHSpacing,
71 const double gnbVSpacing,
72 const double ueHSpacing,
73 const double ueVSpacing,
74 const double gnbNoiseFigure,
75 const double ueNoiseFigure,
76 bool enableRealBF,
77 bool enableShadowing,
78 double o2iThreshold,
79 double o2iLowLossThreshold,
80 bool linkO2iConditionToAntennaHeight,
81 bool crossPolarizedGnb,
82 bool crossPolarizedUe,
83 double polSlantAngleGnb1,
84 double polSlantAngleGnb2,
85 double polSlantAngleUe1,
86 double polSlantAngleUe2,
87 std::string bfMethod,
88 uint16_t beamConfSector,
89 double beamConfElevation,
90 double isd,
91 bool ueBearingAngle);
92
93 static void ReportSinrNr(SinrOutputStats* stats,
94 uint16_t cellId,
95 uint16_t rnti,
96 double avgSinr,
97 uint16_t bwpId);
98 static void ReportPowerNr(PowerOutputStats* stats,
99 const SfnSf& sfnSf,
100 Ptr<const SpectrumValue> txPsd,
101 const Time& t,
102 uint16_t rnti,
103 uint64_t imsi,
104 uint16_t bwpId,
105 uint16_t cellId);
106 static void ReportSlotStatsNr(SlotOutputStats* stats,
107 const SfnSf& sfnSf,
108 uint32_t scheduledUe,
109 uint32_t usedReg,
110 uint32_t usedSym,
111 uint32_t availableRb,
112 uint32_t availableSym,
113 uint16_t bwpId,
114 uint16_t cellId);
115 static void ReportRbStatsNr(RbOutputStats* stats,
116 const SfnSf& sfnSf,
117 uint8_t sym,
118 const std::vector<int>& rbUsed,
119 uint16_t bwpId,
120 uint16_t cellId);
121 static void ReportGnbRxDataNr(PowerOutputStats* gnbRxDataStats,
122 const SfnSf& sfnSf,
123 Ptr<const SpectrumValue> rxPsd,
124 const Time& t,
125 uint16_t bwpId,
126 uint16_t cellId);
127
128 static void ConfigureBwpTo(BandwidthPartInfoPtr& bwp, double centerFreq, double bwpBw);
129};
130
131} // namespace ns3
132
133#endif // NR_3GPP_CALIBRATION_UTILS_V2_H
static void SetLenaV2SimulatorParameters(const double sector0AngleRad, const std::string &scenario, const std::string &confType, const std::string &radioNetwork, std::string errorModel, const std::string &operationMode, const std::string &direction, uint16_t numerology, const std::string &pattern, const NodeContainer &gnbSector1Container, const NodeContainer &gnbSector2Container, const NodeContainer &gnbSector3Container, const NodeContainer &ueSector1Container, const NodeContainer &ueSector2Container, const NodeContainer &ueSector3Container, const Ptr< NrPointToPointEpcHelper > &baseEpcHelper, Ptr< NrHelper > &nrHelper, NetDeviceContainer &gnbSector1NetDev, NetDeviceContainer &gnbSector2NetDev, NetDeviceContainer &gnbSector3NetDev, NetDeviceContainer &ueSector1NetDev, NetDeviceContainer &ueSector2NetDev, NetDeviceContainer &ueSector3NetDev, bool enableFading, bool enableUlPc, std::string powerAllocation, SinrOutputStats *sinrStats, PowerOutputStats *ueTxPowerStats, PowerOutputStats *gnbRxPowerStats, SlotOutputStats *slotStats, RbOutputStats *rbStats, const std::string &scheduler, uint32_t bandwidthMHz, double startingFreq, uint32_t freqScenario, double gnbTxPower, double ueTxPower, double downtiltAngle, const uint32_t gnbNumRows, const uint32_t gnbNumColumns, const uint32_t ueNumRows, const uint32_t ueNumColumns, bool gnbEnable3gppElement, bool ueEnable3gppElement, const double gnbHSpacing, const double gnbVSpacing, const double ueHSpacing, const double ueVSpacing, const double gnbNoiseFigure, const double ueNoiseFigure, bool enableRealBF, bool enableShadowing, double o2iThreshold, double o2iLowLossThreshold, bool linkO2iConditionToAntennaHeight, bool crossPolarizedGnb, bool crossPolarizedUe, double polSlantAngleGnb1, double polSlantAngleGnb2, double polSlantAngleUe1, double polSlantAngleUe2, std::string bfMethod, uint16_t beamConfSector, double beamConfElevation, double isd, bool ueBearingAngle)
Class to collect and store the transmission power values obtained from a simulation.
Class to collect and store the Resource Block statistics from a simulation.
The SfnSf class.
Definition sfnsf.h:32
Class to collect and store the SINR values obtained from a simulation.
Class to collect and store the SINR values obtained from a simulation.
std::unique_ptr< BandwidthPartInfo > BandwidthPartInfoPtr
unique_ptr of BandwidthPartInfo