Add user link parameters

This commit is contained in:
Tim Schubert 2020-08-10 18:28:59 +02:00
parent bb3bcb627c
commit 7293dbbad1
12 changed files with 247 additions and 96 deletions

View file

@ -40,25 +40,55 @@ LeoChannelHelper::LeoChannelHelper (std::string constellation) :
} }
void void
LeoChannelHelper::SetConstellation (std::string constellation); LeoChannelHelper::SetConstellation (std::string constellation)
{ {
if (constellation == "Starlink") if (constellation == "StarlinkGateway")
{ {
SetConstellationAttributes (LEO_STARLINK_EIRP, SetConstellationAttributes (LEO_STARLINK_GATEWAY_EIRP,
LEO_STARLINK_ELEVATION_ANGLE, LEO_STARLINK_GATEWAY_ELEVATION_ANGLE,
LEO_STARLINK_FSPL, LEO_STARLINK_GATEWAY_FSPL,
LEO_STARLINK_ATMOSPHERIC_LOSS, LEO_STARLINK_GATEWAY_ATMOSPHERIC_LOSS,
LEO_STARLINK_LINK_MARGIN, LEO_STARLINK_GATEWAY_LINK_MARGIN,
LEO_STARLINK_DATA_RATE); LEO_STARLINK_GATEWAY_DATA_RATE,
LEO_STARLINK_GATEWAY_RX_ANTENNA_GAIN,
0.0 // TODO
);
} }
else if (constellation == "Telesat") else if (constellation == "StarlinkUser")
{ {
SetConstellationAttributes (LEO_TELESAT_EIRP, SetConstellationAttributes (LEO_STARLINK_USER_EIRP,
LEO_TELESAT_ELEVATION_ANGLE, LEO_STARLINK_USER_ELEVATION_ANGLE,
LEO_TELESAT_FSPL, LEO_STARLINK_USER_FSPL,
LEO_TELESAT_ATMOSPHERIC_LOSS, LEO_STARLINK_USER_ATMOSPHERIC_LOSS,
LEO_TELESAT_LINK_MARGIN, LEO_STARLINK_USER_LINK_MARGIN,
LEO_TELESAT_DATA_RATE); LEO_STARLINK_USER_DATA_RATE,
LEO_STARLINK_USER_RX_ANTENNA_GAIN,
0.0
);
}
else if (constellation == "TelesatGateway")
{
SetConstellationAttributes (LEO_TELESAT_GATEWAY_EIRP,
LEO_TELESAT_GATEWAY_ELEVATION_ANGLE,
LEO_TELESAT_GATEWAY_FSPL,
LEO_TELESAT_GATEWAY_ATMOSPHERIC_LOSS,
LEO_TELESAT_GATEWAY_LINK_MARGIN,
LEO_TELESAT_GATEWAY_DATA_RATE,
LEO_TELESAT_GATEWAY_RX_ANTENNA_GAIN,
0.0
);
}
else if (constellation == "TelesatUser")
{
SetConstellationAttributes (LEO_TELESAT_USER_EIRP,
LEO_TELESAT_USER_ELEVATION_ANGLE,
LEO_TELESAT_USER_FSPL,
LEO_TELESAT_USER_ATMOSPHERIC_LOSS,
LEO_TELESAT_USER_LINK_MARGIN,
LEO_TELESAT_USER_DATA_RATE,
LEO_TELESAT_USER_RX_ANTENNA_GAIN,
0.0
);
} }
else else
{ {
@ -72,11 +102,19 @@ LeoChannelHelper::SetConstellationAttributes (double eirp,
double fspl, double fspl,
double atmosphericLoss, double atmosphericLoss,
double linkMargin, double linkMargin,
double dataRate) double dataRate,
double rxGain,
double rxLoss)
{ {
m_gndDeviceFactory.Set ("TxPower", DoubleValue (eirp)); m_gndDeviceFactory.Set ("TxPower", DoubleValue (eirp));
m_satDeviceFactory.Set ("TxPower", DoubleValue (eirp)); m_satDeviceFactory.Set ("TxPower", DoubleValue (eirp));
m_gndDeviceFactory.Set ("RxGain", DoubleValue (rxGain));
m_gndDeviceFactory.Set ("RxLoss", DoubleValue (rxLoss));
m_satDeviceFactory.Set ("RxLoss", DoubleValue (rxGain));
m_satDeviceFactory.Set ("RxGain", DoubleValue (rxLoss));
m_gndDeviceFactory.Set ("DataRate", DoubleValue (dataRate)); m_gndDeviceFactory.Set ("DataRate", DoubleValue (dataRate));
m_satDeviceFactory.Set ("DataRate", DoubleValue (dataRate)); m_satDeviceFactory.Set ("DataRate", DoubleValue (dataRate));

View file

@ -76,7 +76,9 @@ private:
double fspl, double fspl,
double atmosphericLoss, double atmosphericLoss,
double linkMargin, double linkMargin,
double dataRate); double dataRate,
double rxGain,
double rxLoss);
}; };
}; };

View file

@ -2,6 +2,7 @@
#include "ns3/log.h" #include "ns3/log.h"
#include "ns3/enum.h" #include "ns3/enum.h"
#include "ns3/double.h"
#include "leo-mock-net-device.h" #include "leo-mock-net-device.h"
@ -25,6 +26,16 @@ LeoMockNetDevice::GetTypeId (void)
MakeEnumChecker ( MakeEnumChecker (
DeviceType::GND, "ns3::LeoMockNetDevice::NetDeviceType::GND", DeviceType::GND, "ns3::LeoMockNetDevice::NetDeviceType::GND",
DeviceType::SAT, "ns3::LeoMockNetDevice::NetDeviceType::SAT")) DeviceType::SAT, "ns3::LeoMockNetDevice::NetDeviceType::SAT"))
.AddAttribute ("ReceiverGain",
"Receiver gain in dBm",
DoubleValue (0.0),
MakeDoubleAccessor (&LeoMockNetDevice::m_rxGain),
MakeDoubleChecker<double> ())
.AddAttribute ("ReceiverLoss",
"Receiver loss in dBm",
DoubleValue (0.0),
MakeDoubleAccessor (&LeoMockNetDevice::m_rxLoss),
MakeDoubleChecker<double> ())
; ;
return tid; return tid;
}; };
@ -45,4 +56,10 @@ LeoMockNetDevice::SetDeviceType (LeoMockNetDevice::DeviceType deviceType)
m_deviceType = deviceType; m_deviceType = deviceType;
} }
double
LeoMockNetDevice::DoCalcRxPower (double rxPower) const
{
return rxPower - m_rxLoss + m_rxGain;
}
}; /* namspace ns3 */ }; /* namspace ns3 */

View file

@ -30,8 +30,13 @@ public:
DeviceType GetDeviceType () const; DeviceType GetDeviceType () const;
void SetDeviceType (DeviceType deviceType); void SetDeviceType (DeviceType deviceType);
protected:
virtual double DoCalcRxPower (double rxPower) const;
private: private:
DeviceType m_deviceType; DeviceType m_deviceType;
double m_rxLoss;
double m_rxGain;
}; };
}; };

View file

@ -21,30 +21,55 @@ namespace ns3 {
* *
*/ */
#define LEO_ONEWEB_FREQUENCY 28.5 // GHz // gateway uplink
#define LEO_ONEWEB_BANDWIDTH 0.25 // GHz #define LEO_ONEWEB_GATEWAY_FREQUENCY 28.5 // GHz
#define LEO_ONEWEB_TX_ANTENNA_D 2.4 // m #define LEO_ONEWEB_GATEWAY_BANDWIDTH 0.25 // GHz
#define LEO_ONEWEB_EIRP 93.2 // dBm #define LEO_ONEWEB_GATEWAY_TX_ANTENNA_D 2.4 // m
#define LEO_ONEWEB_MODCOD "256APSK 32/45" // - #define LEO_ONEWEB_GATEWAY_EIRP 93.2 // dBm
#define LEO_ONEWEB_ROLL_OFF_FACTOR 0.1 // - #define LEO_ONEWEB_GATEWAY_MODCOD "256APSK 32/45" // -
#define LEO_ONEWEB_SPECTRAL_EFF 5.1 // bps/Hz #define LEO_ONEWEB_GATEWAY_ROLL_OFF_FACTOR 0.1 // -
#define LEO_ONEWEB_PATH_DISTANCE 1504 // km #define LEO_ONEWEB_GATEWAY_SPECTRAL_EFF 5.1 // bps/Hz
#define LEO_ONEWEB_ELEVATION_ANGLE 55 // deg #define LEO_ONEWEB_GATEWAY_PATH_DISTANCE 1504 // km
#define LEO_ONEWEB_FSPL 185.1 // dB #define LEO_ONEWEB_GATEWAY_ELEVATION_ANGLE 55 // deg
#define LEO_ONEWEB_ATMOSPHERIC_LOSS 2.3 // dB #define LEO_ONEWEB_GATEWAY_FSPL 185.1 // dB
#define LEO_ONEWEB_RX_ANTENNA_GAIN 37.8 // dBi #define LEO_ONEWEB_GATEWAY_ATMOSPHERIC_LOSS 2.3 // dB
#define LEO_ONEWEB_SYSTEM_TEMP 447.2 // K #define LEO_ONEWEB_GATEWAY_RX_ANTENNA_GAIN 37.8 // dBi
#define LEO_ONEWEB_G_T 11.3 // dB/K #define LEO_ONEWEB_GATEWAY_SYSTEM_TEMP 447.2 // K
#define LEO_ONEWEB_RX_C_N0 32.5 // dB #define LEO_ONEWEB_GATEWAY_G_T 11.3 // dB/K
#define LEO_ONEWEB_RX_C_ACI 27 // dB #define LEO_ONEWEB_GATEWAY_RX_C_N0 32.5 // dB
#define LEO_ONEWEB_RX_C_ASI 27 // dB #define LEO_ONEWEB_GATEWAY_RX_C_ACI 27 // dB
#define LEO_ONEWEB_RX_C_XPI 25 // dB #define LEO_ONEWEB_GATEWAY_RX_C_ASI 27 // dB
#define LEO_ONEWEB_HPA_C_3IM 30 // dB #define LEO_ONEWEB_GATEWAY_RX_C_XPI 25 // dB
#define LEO_ONEWEB_RX_EB_N0_I0 13.3 // dB #define LEO_ONEWEB_GATEWAY_HPA_C_3IM 30 // dB
#define LEO_ONEWEB_REQ_EB_N0 12.3 // dB #define LEO_ONEWEB_GATEWAY_RX_EB_N0_I0 13.3 // dB
#define LEO_ONEWEB_LINK_MARGIN 1.03 // dB #define LEO_ONEWEB_GATEWAY_REQ_EB_N0 12.3 // dB
#define LEO_ONEWEB_DATA_RATE 1341.1 // Mbps #define LEO_ONEWEB_GATEWAY_LINK_MARGIN 1.03 // dB
#define LEO_ONEWEB_SHANNON_LIMIT 1.06 // dB #define LEO_ONEWEB_GATEWAY_DATA_RATE 1341.1 // Mbps
#define LEO_ONEWEB_GATEWAY_SHANNON_LIMIT 1.06 // dB
// user uplink
#define LEO_ONEWEB_USER_FREQUENCY 18.5 // GHz
#define LEO_ONEWEB_USER_BANDWIDTH 0.25 // GHz
#define LEO_ONEWEB_USER_EIRP 36.0 // dBm
#define LEO_ONEWEB_USER_MODCOD "16APSK28/45" // -
#define LEO_ONEWEB_USER_ROLL_OFF_FACTOR 0.1 // -
#define LEO_ONEWEB_USER_SPECTRAL_EFF 2.23 // bps/Hz
#define LEO_ONEWEB_USER_PATH_DISTANCE 2439 // km
#define LEO_ONEWEB_USER_ELEVATION_ANGLE 20 // deg
#define LEO_ONEWEB_USER_FSPL 185.5 // dB
#define LEO_ONEWEB_USER_ATMOSPHERIC_LOSS 2.0 // dB
#define LEO_ONEWEB_GATEWAY_RX_ANTENNA_D 1 // m
#define LEO_ONEWEB_USER_RX_ANTENNA_GAIN 43.5 // dBi
#define LEO_ONEWEB_USER_SYSTEM_TEMP 285.3 // K
#define LEO_ONEWEB_USER_RX_C_N0 9.6 // dB
#define LEO_ONEWEB_USER_RX_C_ASI 30 // dB
#define LEO_ONEWEB_USER_RX_C_XPI 25 // dB
#define LEO_ONEWEB_USER_HPA_C_3IM 20 // dB
#define LEO_ONEWEB_USER_RX_EB_N0_I0 5.5 // dB
#define LEO_ONEWEB_USER_REQ_EB_N0 4.6 // dB
#define LEO_ONEWEB_USER_LINK_MARGIN 0.85 // dB
#define LEO_ONEWEB_USER_DATA_RATE 558.7 // Mbps
#define LEO_ONEWEB_USER_SHANNON_LIMIT 1.49 // dB
}; };

View file

@ -81,10 +81,12 @@ LeoPropagationLossModel::DoCalcRxPower (double txPowerDbm,
return 0.0; return 0.0;
} }
double rxc = -m_atmosphericLoss - m_freeSpacePathLoss; // txPowerDbm includes tx antenna gain and losses
NS_LOG_DEBUG ("attenuation coefficient= " << rxc << " dB"); // receiver loss and gain added at net device
// P_{RX} = P_{TX} + G_{TX} - L_{TX} - L_{FS} - L_M + G_{RX} - L_{RX}
double rxc = txPowerDbm - m_atmosphericLoss - m_freeSpacePathLoss - m_linkMargin;
return txPowerDbm + rxc; return rxc;
} }
int64_t int64_t

View file

@ -21,30 +21,55 @@ namespace ns3 {
* *
*/ */
#define LEO_STARLINK_FREQUENCY 28.5 // GHz // gateway uplink
#define LEO_STARLINK_BANDWIDTH 0.5 // GHz #define LEO_STARLINK_GATEWAY_FREQUENCY 28.5 // GHz
#define LEO_STARLINK_TX_ANTENNA_D 3.5 // m #define LEO_STARLINK_GATEWAY_BANDWIDTH 0.5 // GHz
#define LEO_STARLINK_EIRP 98.4 // dBm #define LEO_STARLINK_GATEWAY_TX_ANTENNA_D 3.5 // m
#define LEO_STARLINK_MODCOD "256APSK 3/4" // - #define LEO_STARLINK_GATEWAY_EIRP 98.4 // dBm
#define LEO_STARLINK_ROLL_OFF_FACTOR 0.1 // - #define LEO_STARLINK_GATEWAY_MODCOD "256APSK 3/4" // -
#define LEO_STARLINK_SPECTRAL_EFF 5.4 // bps/Hz #define LEO_STARLINK_GATEWAY_ROLL_OFF_FACTOR 0.1 // -
#define LEO_STARLINK_PATH_DISTANCE 1684 // km #define LEO_STARLINK_GATEWAY_SPECTRAL_EFF 5.4 // bps/Hz
#define LEO_STARLINK_ELEVATION_ANGLE 40 // deg #define LEO_STARLINK_GATEWAY_PATH_DISTANCE 1684 // km
#define LEO_STARLINK_FSPL 186.1 // dB #define LEO_STARLINK_GATEWAY_ELEVATION_ANGLE 40 // deg
#define LEO_STARLINK_ATMOSPHERIC_LOSS 2.9 // dB #define LEO_STARLINK_GATEWAY_FSPL 186.1 // dB
#define LEO_STARLINK_RX_ANTENNA_GAIN 40.9 // dBi #define LEO_STARLINK_GATEWAY_ATMOSPHERIC_LOSS 2.9 // dB
#define LEO_STARLINK_SYSTEM_TEMP 535.9 // K #define LEO_STARLINK_GATEWAY_RX_ANTENNA_GAIN 40.9 // dBi
#define LEO_STARLINK_G_T 13.6 // dB/K #define LEO_STARLINK_GATEWAY_SYSTEM_TEMP 535.9 // K
#define LEO_STARLINK_RX_C_N0 32.4 // dB #define LEO_STARLINK_GATEWAY_G_T 13.6 // dB/K
#define LEO_STARLINK_RX_C_ACI 27 // dB #define LEO_STARLINK_GATEWAY_RX_C_N0 32.4 // dB
#define LEO_STARLINK_RX_C_ASI 27 // dB #define LEO_STARLINK_GATEWAY_RX_C_ACI 27 // dB
#define LEO_STARLINK_RX_C_XPI 25 // dB #define LEO_STARLINK_GATEWAY_RX_C_ASI 27 // dB
#define LEO_STARLINK_HPA_C_3IM 30 // dB #define LEO_STARLINK_GATEWAY_RX_C_XPI 25 // dB
#define LEO_STARLINK_RX_EB_N0_I0 13.3 // dB #define LEO_STARLINK_GATEWAY_HPA_C_3IM 30 // dB
#define LEO_STARLINK_REQ_EB_N0 12.3 // dB #define LEO_STARLINK_GATEWAY_RX_EB_N0_I0 13.3 // dB
#define LEO_STARLINK_LINK_MARGIN 1.02 // dB #define LEO_STARLINK_GATEWAY_REQ_EB_N0 12.3 // dB
#define LEO_STARLINK_DATA_RATE 2682.1 // Mbps #define LEO_STARLINK_GATEWAY_LINK_MARGIN 1.02 // dB
#define LEO_STARLINK_SHANNON_LIMIT 1.06 // dB #define LEO_STARLINK_GATEWAY_DATA_RATE 2682.1 // Mbps
#define LEO_STARLINK_GATEWAY_SHANNON_LIMIT 1.06 // dB
// user uplink
#define LEO_STARLINK_USER_FREQUENCY 13.5 // GHz
#define LEO_STARLINK_USER_BANDWIDTH 0.25 // GHz
#define LEO_STARLINK_USER_EIRP 66.7 // dBm
#define LEO_STARLINK_USER_MODCOD "16APSK3/4" // -
#define LEO_STARLINK_USER_ROLL_OFF_FACTOR 0.1 // -
#define LEO_STARLINK_USER_SPECTRAL_EFF 2.7 // bps/Hz
#define LEO_STARLINK_USER_PATH_DISTANCE 1684 // km
#define LEO_STARLINK_USER_ELEVATION_ANGLE 40 // deg
#define LEO_STARLINK_USER_FSPL 179.6 // dB
#define LEO_STARLINK_USER_ATMOSPHERIC_LOSS 0.53 // dB
#define LEO_STARLINK_GATEWAY_RX_ANTENNA_D 0.7 // m
#define LEO_STARLINK_USER_RX_ANTENNA_GAIN 37.7 // dBi
#define LEO_STARLINK_USER_SYSTEM_TEMP 362.9 // K
#define LEO_STARLINK_USER_RX_C_N0 12.0 // dB
#define LEO_STARLINK_USER_RX_C_ASI 25 // dB
#define LEO_STARLINK_USER_RX_C_XPI 22 // dB
#define LEO_STARLINK_USER_HPA_C_3IM 25 // dB
#define LEO_STARLINK_USER_RX_EB_N0_I0 6.7 // dB
#define LEO_STARLINK_USER_REQ_EB_N0 5.9 // dB
#define LEO_STARLINK_USER_LINK_MARGIN 0.82 // dB
#define LEO_STARLINK_USER_DATA_RATE 674.3 // Mbps
#define LEO_STARLINK_USER_SHANNON_LIMIT 1.46 // dB
}; };

View file

@ -21,30 +21,55 @@ namespace ns3 {
* *
*/ */
#define LEO_TELESAT_FREQUENCY 28.5 // GHz // gateway uplink
#define LEO_TELESAT_BANDWIDTH 2.1 // GHz #define LEO_TELESAT_GATEWAY_FREQUENCY 28.5 // GHz
#define LEO_TELESAT_TX_ANTENNA_D 3.5 // m #define LEO_TELESAT_GATEWAY_BANDWIDTH 2.1 // GHz
#define LEO_TELESAT_EIRP 105.9 // dBm #define LEO_TELESAT_GATEWAY_TX_ANTENNA_D 3.5 // m
#define LEO_TELESAT_MODCOD "64APSK 3/4" // - #define LEO_TELESAT_GATEWAY_EIRP 105.9 // dBm
#define LEO_TELESAT_ROLL_OFF_FACTOR 0.1 // - #define LEO_TELESAT_GATEWAY_MODCOD "64APSK 3/4" // -
#define LEO_TELESAT_SPECTRAL_EFF 4.1 // bps/Hz #define LEO_TELESAT_GATEWAY_ROLL_OFF_FACTOR 0.1 // -
#define LEO_TELESAT_PATH_DISTANCE 2439 // km #define LEO_TELESAT_GATEWAY_SPECTRAL_EFF 4.1 // bps/Hz
#define LEO_TELESAT_ELEVATION_ANGLE 20 // deg #define LEO_TELESAT_GATEWAY_PATH_DISTANCE 2439 // km
#define LEO_TELESAT_FSPL 189.3 // dB #define LEO_TELESAT_GATEWAY_ELEVATION_ANGLE 20 // deg
#define LEO_TELESAT_ATMOSPHERIC_LOSS 4.8 // dB #define LEO_TELESAT_GATEWAY_FSPL 189.3 // dB
#define LEO_TELESAT_RX_ANTENNA_GAIN 31.8 // dBi #define LEO_TELESAT_GATEWAY_ATMOSPHERIC_LOSS 4.8 // dB
#define LEO_TELESAT_SYSTEM_TEMP 868.4 // K #define LEO_TELESAT_GATEWAY_RX_ANTENNA_GAIN 31.8 // dBi
#define LEO_TELESAT_G_T 2.4 // dB/K #define LEO_TELESAT_GATEWAY_SYSTEM_TEMP 868.4 // K
#define LEO_TELESAT_RX_C_N0 25.6 // dB #define LEO_TELESAT_GATEWAY_G_T 2.4 // dB/K
#define LEO_TELESAT_RX_C_ACI 27 // dB #define LEO_TELESAT_GATEWAY_RX_C_N0 25.6 // dB
#define LEO_TELESAT_RX_C_ASI 23.5 // dB #define LEO_TELESAT_GATEWAY_RX_C_ACI 27 // dB
#define LEO_TELESAT_RX_C_XPI 25 // dB #define LEO_TELESAT_GATEWAY_RX_C_ASI 23.5 // dB
#define LEO_TELESAT_HPA_C_3IM 25 // dB #define LEO_TELESAT_GATEWAY_RX_C_XPI 25 // dB
#define LEO_TELESAT_RX_EB_N0_I0 11.4 // dB #define LEO_TELESAT_GATEWAY_HPA_C_3IM 25 // dB
#define LEO_TELESAT_REQ_EB_N0 11.0 // dB #define LEO_TELESAT_GATEWAY_RX_EB_N0_I0 11.4 // dB
#define LEO_TELESAT_LINK_MARGIN 0.36 // dB #define LEO_TELESAT_GATEWAY_REQ_EB_N0 11.0 // dB
#define LEO_TELESAT_DATA_RATE 9857.1 // Mbps #define LEO_TELESAT_GATEWAY_LINK_MARGIN 0.36 // dB
#define LEO_TELESAT_SHANNON_LIMIT 1.09 // dB #define LEO_TELESAT_GATEWAY_DATA_RATE 9857.1 // Mbps
#define LEO_TELESAT_GATEWAY_SHANNON_LIMIT 1.09 // dB
// user uplink
#define LEO_TELESAT_USER_FREQUENCY 13.5 // GHz
#define LEO_TELESAT_USER_BANDWIDTH 0.25 // GHz
#define LEO_TELESAT_USER_EIRP 64.6 // dBm
#define LEO_TELESAT_USER_MODCOD "16APSK2/3" // -
#define LEO_TELESAT_USER_ROLL_OFF_FACTOR 0.1 // -
#define LEO_TELESAT_USER_SPECTRAL_EFF 2.4 // bps/Hz
#define LEO_TELESAT_USER_PATH_DISTANCE 1504 // km
#define LEO_TELESAT_USER_ELEVATION_ANGLE 55 // deg
#define LEO_TELESAT_USER_FSPL 178.6 // dB
#define LEO_TELESAT_USER_ATMOSPHERIC_LOSS 0.41 // dB
#define LEO_TELESAT_GATEWAY_RX_ANTENNA_D 0.75 // m
#define LEO_TELESAT_USER_RX_ANTENNA_GAIN 38.3 // dBi
#define LEO_TELESAT_USER_SYSTEM_TEMP 350.1 // K
#define LEO_TELESAT_USER_RX_C_N0 10.5 // dB
#define LEO_TELESAT_USER_RX_C_ASI 25 // dB
#define LEO_TELESAT_USER_RX_C_XPI 20 // dB
#define LEO_TELESAT_USER_HPA_C_3IM 30 // dB
#define LEO_TELESAT_USER_RX_EB_N0_I0 5.9 // dB
#define LEO_TELESAT_USER_REQ_EB_N0 5.2 // dB
#define LEO_TELESAT_USER_LINK_MARGIN 0.76 // dB
#define LEO_TELESAT_USER_DATA_RATE 599.4 // Mbps
#define LEO_TELESAT_USER_SHANNON_LIMIT 1.49 // dB
}; };

View file

@ -156,7 +156,7 @@ MockChannel::GetPropagationLoss () const
} }
void void
MockChannel::SetPropagationLoss (PropagationLossModel model) MockChannel::SetPropagationLoss (Ptr<PropagationLossModel> model)
{ {
m_propagationLoss = model; m_propagationLoss = model;
} }

View file

@ -73,7 +73,7 @@ public:
virtual bool TransmitStart (Ptr<const Packet> p, uint32_t devId, Address dst, Time txTime) = 0; virtual bool TransmitStart (Ptr<const Packet> p, uint32_t devId, Address dst, Time txTime) = 0;
Ptr<PropagationLossModel> GetPropagationLoss () const; Ptr<PropagationLossModel> GetPropagationLoss () const;
void SetPropagationLoss (PropagationLossModel model); void SetPropagationLoss (Ptr<PropagationLossModel> model);
protected: protected:
TracedCallback<Ptr<const Packet>, // Packet being transmitted TracedCallback<Ptr<const Packet>, // Packet being transmitted

View file

@ -414,12 +414,18 @@ MockNetDevice::SetReceiveErrorModel (Ptr<ErrorModel> em)
m_receiveErrorModel = em; m_receiveErrorModel = em;
} }
double
MockNetDevice::DoCalcRxPower (double rxPower) const
{
return rxPower;
}
void void
MockNetDevice::Receive (Ptr<Packet> packet, MockNetDevice::Receive (Ptr<Packet> packet,
Ptr<MockNetDevice> senderDevice, Ptr<MockNetDevice> senderDevice,
double rxPower) double rxPower)
{ {
NS_LOG_FUNCTION (this << packet << senderDevice); NS_LOG_FUNCTION (this << packet << senderDevice << rxPower);
if (senderDevice == this) if (senderDevice == this)
{ {
@ -428,6 +434,8 @@ MockNetDevice::Receive (Ptr<Packet> packet,
m_phyRxEndTrace (packet); m_phyRxEndTrace (packet);
rxPower = DoCalcRxPower (rxPower);
if (rxPower < m_rxThreshold) if (rxPower < m_rxThreshold)
{ {
// Received power is below threshold // Received power is below threshold

View file

@ -147,8 +147,10 @@ public:
* arrived at the device. * arrived at the device.
* *
* \param p Ptr to the received packet. * \param p Ptr to the received packet.
* \param senderDevice sender
* \param rxPower RX power excluding receiver gain and loss
*/ */
void Receive (Ptr<Packet> p, Ptr<MockNetDevice> senderDevice); void Receive (Ptr<Packet> p, Ptr<MockNetDevice> senderDevice, double rxPower);
// The remaining methods are documented in ns3::NetDevice* // The remaining methods are documented in ns3::NetDevice*
@ -206,6 +208,8 @@ protected:
virtual void DoInitialize (void); virtual void DoInitialize (void);
virtual void NotifyNewAggregate (void); virtual void NotifyNewAggregate (void);
virtual double DoCalcRxPower (double rxPower) const;
private: private:
/** /**