@@ -75,6 +75,26 @@ class ThreeGppPropagationLossModel : public PropagationLossModel
75
75
*/
76
76
bool IsO2iLowPenetrationLoss (Ptr<const ChannelCondition> cond) const ;
77
77
78
+ /* *
79
+ * @brief Stop-gap solution for wraparound model
80
+ *
81
+ * Stop-gap solution for support of wraparound model in the 5G NR module. This
82
+ * method was introduced for ns-3.45 but will be removed in a future release once
83
+ * a more general solution is added elsewhere (most likely in the spectrum channel). The
84
+ * callback method registered here will be executed at the beginning of DoCalcRxPower, and the
85
+ * returned pointer to a mobility model will be subsequently used as the (replacement) source
86
+ * mobility model for the rest of DoCalcRxPower() processing.
87
+ *
88
+ * @param prologueFunction Function that receives two mobility models and compute a third, based
89
+ * on the wrapped position of the second model in respect to the first
90
+ */
91
+ static void InstallDoCalcRxPowerPrologueFunction (
92
+ std::function<Ptr<MobilityModel>(Ptr<const MobilityModel>, Ptr<const MobilityModel>)>
93
+ prologueFunction)
94
+ {
95
+ m_doCalcRxPowerPrologueFunction = prologueFunction;
96
+ }
97
+
78
98
private:
79
99
/* *
80
100
* Computes the received power by applying the pathloss model described in
@@ -300,6 +320,10 @@ class ThreeGppPropagationLossModel : public PropagationLossModel
300
320
Ptr<NormalRandomVariable>
301
321
m_normalO2iHighLossVar; // !< a normal random variable for the calculation of 02i high loss,
302
322
// !< see TR38.901 Table 7.4.3-2
323
+
324
+ // / Optional prologue function that can be used to implement wraparound models
325
+ static std::function<Ptr<MobilityModel>(Ptr<const MobilityModel>, Ptr<const MobilityModel>)>
326
+ m_doCalcRxPowerPrologueFunction;
303
327
};
304
328
305
329
/* *
0 commit comments