5G-LENA nr-v4.0
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
lena-v2-utils.h
1// Copyright (c) 2020 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
5#ifndef LENA_V2_UTILS_H
6#define LENA_V2_UTILS_H
7
8#include "sinr-output-stats.h"
9
10#include "ns3/hexagonal-grid-scenario-helper.h"
11#include "ns3/nr-module.h"
12
13namespace ns3
14{
15
16class SinrOutputStats;
17class PowerOutputStats;
18class SlotOutputStats;
19class RbOutputStats;
20
21class LenaV2Utils
22{
23 public:
24 static void SetLenaV2SimulatorParameters(const double sector0AngleRad,
25 const std::string& scenario,
26 const std::string& radioNetwork,
27 std::string errorModel,
28 const std::string& operationMode,
29 const std::string& direction,
30 uint16_t numerology,
31 const std::string& pattern,
32 const NodeContainer& gnbSector1Container,
33 const NodeContainer& gnbSector2Container,
34 const NodeContainer& gnbSector3Container,
35 const NodeContainer& ueSector1Container,
36 const NodeContainer& ueSector2Container,
37 const NodeContainer& ueSector3Container,
38 const Ptr<NrPointToPointEpcHelper>& baseEpcHelper,
39 Ptr<NrHelper>& nrHelper,
40 NetDeviceContainer& gnbSector1NetDev,
41 NetDeviceContainer& gnbSector2NetDev,
42 NetDeviceContainer& gnbSector3NetDev,
43 NetDeviceContainer& ueSector1NetDev,
44 NetDeviceContainer& ueSector2NetDev,
45 NetDeviceContainer& ueSector3NetDev,
46 bool calibration,
47 bool enableUlPc,
48 std::string powerAllocation,
49 SinrOutputStats* sinrStats,
50 PowerOutputStats* ueTxPowerStats,
51 PowerOutputStats* gnbRxPowerStats,
52 SlotOutputStats* slotStats,
53 RbOutputStats* rbStats,
54 const std::string& scheduler,
55 uint32_t bandwidthMHz,
56 uint32_t freqScenario,
57 double downtiltAngle);
58 static void ReportSinrNr(SinrOutputStats* stats,
59 uint16_t cellId,
60 uint16_t rnti,
61 double avgSinr,
62 uint16_t bwpId);
63 static void ReportPowerNr(PowerOutputStats* stats,
64 const SfnSf& sfnSf,
65 Ptr<const SpectrumValue> txPsd,
66 const Time& t,
67 uint16_t rnti,
68 uint64_t imsi,
69 uint16_t bwpId,
70 uint16_t cellId);
71 static void ReportSlotStatsNr(SlotOutputStats* stats,
72 const SfnSf& sfnSf,
73 uint32_t scheduledUe,
74 uint32_t usedReg,
75 uint32_t usedSym,
76 uint32_t availableRb,
77 uint32_t availableSym,
78 uint16_t bwpId,
79 uint16_t cellId);
80 static void ReportRbStatsNr(RbOutputStats* stats,
81 const SfnSf& sfnSf,
82 uint8_t sym,
83 const std::vector<int>& rbUsed,
84 uint16_t bwpId,
85 uint16_t cellId);
86 static void ReportGnbRxDataNr(PowerOutputStats* gnbRxDataStats,
87 const SfnSf& sfnSf,
88 Ptr<const SpectrumValue> rxPsd,
89 const Time& t,
90 uint16_t bwpId,
91 uint16_t cellId);
92
93 static void ConfigureBwpTo(BandwidthPartInfoPtr& bwp, double centerFreq, double bwpBw);
94};
95
96} // namespace ns3
97
98#endif // LENA_V2_UTILS_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)
std::unique_ptr< BandwidthPartInfo > BandwidthPartInfoPtr
unique_ptr of BandwidthPartInfo