mirror of
https://gitlab.ibr.cs.tu-bs.de/tschuber/ns-3-leo.git
synced 2025-06-08 10:03:58 +02:00
Add link params to model with attributes
This commit is contained in:
parent
1224169ff5
commit
27ee6a3697
8 changed files with 77 additions and 12 deletions
|
@ -24,7 +24,7 @@ namespace ns3 {
|
||||||
#define LEO_ONEWEB_FREQUENCY 28.5 // GHz
|
#define LEO_ONEWEB_FREQUENCY 28.5 // GHz
|
||||||
#define LEO_ONEWEB_BANDWIDTH 0.25 // GHz
|
#define LEO_ONEWEB_BANDWIDTH 0.25 // GHz
|
||||||
#define LEO_ONEWEB_TX_ANTENNA_D 2.4 // m
|
#define LEO_ONEWEB_TX_ANTENNA_D 2.4 // m
|
||||||
#define LEO_ONEWEB_EIRP 63.2 // dBW
|
#define LEO_ONEWEB_EIRP 93.2 // dBm
|
||||||
#define LEO_ONEWEB_MODCOD "256APSK 32/45" // -
|
#define LEO_ONEWEB_MODCOD "256APSK 32/45" // -
|
||||||
#define LEO_ONEWEB_ROLL_OFF_FACTOR 0.1 // -
|
#define LEO_ONEWEB_ROLL_OFF_FACTOR 0.1 // -
|
||||||
#define LEO_ONEWEB_SPECTRAL_EFF 5.1 // bps/Hz
|
#define LEO_ONEWEB_SPECTRAL_EFF 5.1 // bps/Hz
|
||||||
|
|
|
@ -26,10 +26,25 @@ LeoPropagationLossModel::GetTypeId (void)
|
||||||
DoubleValue (1000000.0),
|
DoubleValue (1000000.0),
|
||||||
MakeDoubleAccessor (&LeoPropagationLossModel::m_cutoffDistance),
|
MakeDoubleAccessor (&LeoPropagationLossModel::m_cutoffDistance),
|
||||||
MakeDoubleChecker<double> ())
|
MakeDoubleChecker<double> ())
|
||||||
.AddAttribute ("MaxAngle",
|
.AddAttribute ("ElevationAngle",
|
||||||
"Cut-off angle for signal propagation",
|
"Cut-off angle for signal propagation",
|
||||||
DoubleValue (20.0),
|
DoubleValue (20.0),
|
||||||
MakeDoubleAccessor (&LeoPropagationLossModel::m_cutoffAngle),
|
MakeDoubleAccessor (&LeoPropagationLossModel::m_elevationAngle),
|
||||||
|
MakeDoubleChecker<double> ())
|
||||||
|
.AddAttribute ("AtmosphericLoss",
|
||||||
|
"Atmospheric loss due to attenuation in dB",
|
||||||
|
DoubleValue (0.0),
|
||||||
|
MakeDoubleAccessor (&LeoPropagationLossModel::m_atmosphericLoss),
|
||||||
|
MakeDoubleChecker<double> ())
|
||||||
|
.AddAttribute ("FreeSpacePathLoss",
|
||||||
|
"Free space path loss in dB",
|
||||||
|
DoubleValue (0.0),
|
||||||
|
MakeDoubleAccessor (&LeoPropagationLossModel::m_atmosphericLoss),
|
||||||
|
MakeDoubleChecker<double> ())
|
||||||
|
.AddAttribute ("LinkMargin",
|
||||||
|
"Link margin in dB",
|
||||||
|
DoubleValue (0.0),
|
||||||
|
MakeDoubleAccessor (&LeoPropagationLossModel::m_linkMargin),
|
||||||
MakeDoubleChecker<double> ())
|
MakeDoubleChecker<double> ())
|
||||||
;
|
;
|
||||||
return tid;
|
return tid;
|
||||||
|
@ -61,13 +76,14 @@ LeoPropagationLossModel::DoCalcRxPower (double txPowerDbm,
|
||||||
Ptr<MobilityModel> a,
|
Ptr<MobilityModel> a,
|
||||||
Ptr<MobilityModel> b) const
|
Ptr<MobilityModel> b) const
|
||||||
{
|
{
|
||||||
if (a->GetDistanceFrom (b) > m_cutoffDistance && GetAngle (a, b) > m_cutoffAngle)
|
if (a->GetDistanceFrom (b) > m_cutoffDistance && GetAngle (a, b) > m_elevationAngle / 2.0)
|
||||||
{
|
{
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
double rxc = 0.0;//-m_variable->GetValue ();
|
double rxc = -m_atmosphericLoss - m_freeSpacePathLoss;
|
||||||
//NS_LOG_DEBUG ("attenuation coefficient="<<rxc<<"Db");
|
NS_LOG_DEBUG ("attenuation coefficient= " << rxc << " dB");
|
||||||
|
|
||||||
return txPowerDbm + rxc;
|
return txPowerDbm + rxc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,24 @@ private:
|
||||||
double m_cutoffDistance;
|
double m_cutoffDistance;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cutoff angle for signal
|
* Maximum elevation angle
|
||||||
*/
|
*/
|
||||||
double m_cutoffAngle;
|
double m_elevationAngle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Atmospheric loss
|
||||||
|
*/
|
||||||
|
double m_atmosphericLoss;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free space path loss (FSPL)
|
||||||
|
*/
|
||||||
|
double m_freeSpacePathLoss;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Link margin
|
||||||
|
*/
|
||||||
|
double m_linkMargin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Rx Power taking into account only the particular
|
* Returns the Rx Power taking into account only the particular
|
||||||
|
|
|
@ -24,14 +24,14 @@ namespace ns3 {
|
||||||
#define LEO_STARLINK_FREQUENCY 28.5 // GHz
|
#define LEO_STARLINK_FREQUENCY 28.5 // GHz
|
||||||
#define LEO_STARLINK_BANDWIDTH 0.5 // GHz
|
#define LEO_STARLINK_BANDWIDTH 0.5 // GHz
|
||||||
#define LEO_STARLINK_TX_ANTENNA_D 3.5 // m
|
#define LEO_STARLINK_TX_ANTENNA_D 3.5 // m
|
||||||
#define LEO_STARLINK_EIRP 68.4 // dBW
|
#define LEO_STARLINK_EIRP 98.4 // dBm
|
||||||
#define LEO_STARLINK_MODCOD "256APSK 3/4" // -
|
#define LEO_STARLINK_MODCOD "256APSK 3/4" // -
|
||||||
#define LEO_STARLINK_ROLL_OFF_FACTOR 0.1 // -
|
#define LEO_STARLINK_ROLL_OFF_FACTOR 0.1 // -
|
||||||
#define LEO_STARLINK_SPECTRAL_EFF 5.4 // bps/Hz
|
#define LEO_STARLINK_SPECTRAL_EFF 5.4 // bps/Hz
|
||||||
#define LEO_STARLINK_PATH_DISTANCE 1684 // km
|
#define LEO_STARLINK_PATH_DISTANCE 1684 // km
|
||||||
#define LEO_STARLINK_ELEVATION_ANGLE 40 // deg
|
#define LEO_STARLINK_ELEVATION_ANGLE 40 // deg
|
||||||
#define LEO_STARLINK_FSPL 186.1 // dB
|
#define LEO_STARLINK_FSPL 186.1 // dB
|
||||||
#define LEO_STARLINK_ATMOSPHERIC_LOSS 2.9 // dB
|
#define LEO_STARLINK_ATMOSPHERIC_LOSS 2.9 // dBm
|
||||||
#define LEO_STARLINK_RX_ANTENNA_GAIN 40.9 // dBi
|
#define LEO_STARLINK_RX_ANTENNA_GAIN 40.9 // dBi
|
||||||
#define LEO_STARLINK_SYSTEM_TEMP 535.9 // K
|
#define LEO_STARLINK_SYSTEM_TEMP 535.9 // K
|
||||||
#define LEO_STARLINK_G_T 13.6 // dB/K
|
#define LEO_STARLINK_G_T 13.6 // dB/K
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace ns3 {
|
||||||
#define LEO_TELESAT_FREQUENCY 28.5 // GHz
|
#define LEO_TELESAT_FREQUENCY 28.5 // GHz
|
||||||
#define LEO_TELESAT_BANDWIDTH 2.1 // GHz
|
#define LEO_TELESAT_BANDWIDTH 2.1 // GHz
|
||||||
#define LEO_TELESAT_TX_ANTENNA_D 3.5 // m
|
#define LEO_TELESAT_TX_ANTENNA_D 3.5 // m
|
||||||
#define LEO_TELESAT_EIRP 75.9 // dBW
|
#define LEO_TELESAT_EIRP 105.9 // dBm
|
||||||
#define LEO_TELESAT_MODCOD "64APSK 3/4" // -
|
#define LEO_TELESAT_MODCOD "64APSK 3/4" // -
|
||||||
#define LEO_TELESAT_ROLL_OFF_FACTOR 0.1 // -
|
#define LEO_TELESAT_ROLL_OFF_FACTOR 0.1 // -
|
||||||
#define LEO_TELESAT_SPECTRAL_EFF 4.1 // bps/Hz
|
#define LEO_TELESAT_SPECTRAL_EFF 4.1 // bps/Hz
|
||||||
|
|
|
@ -173,7 +173,8 @@ MockChannel::Deliver (
|
||||||
Ptr<PropagationLossModel> pLoss = GetPropagationLoss ();
|
Ptr<PropagationLossModel> pLoss = GetPropagationLoss ();
|
||||||
if (pLoss != 0)
|
if (pLoss != 0)
|
||||||
{
|
{
|
||||||
if (pLoss->CalcRxPower (1.0, srcMob, dstMob) == 0.0)
|
// check if Rx power is below link margin
|
||||||
|
if (pLoss->CalcRxPower (src->GetTxPower (), srcMob, dstMob) == 0.0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "ns3/net-device-queue-interface.h"
|
#include "ns3/net-device-queue-interface.h"
|
||||||
#include "ns3/ethernet-header.h"
|
#include "ns3/ethernet-header.h"
|
||||||
#include "ns3/ethernet-trailer.h"
|
#include "ns3/ethernet-trailer.h"
|
||||||
|
#include "ns3/double.h"
|
||||||
#include "mock-channel.h"
|
#include "mock-channel.h"
|
||||||
#include "mock-net-device.h"
|
#include "mock-net-device.h"
|
||||||
|
|
||||||
|
@ -69,6 +70,11 @@ MockNetDevice::GetTypeId (void)
|
||||||
TimeValue (Seconds (0.0)),
|
TimeValue (Seconds (0.0)),
|
||||||
MakeTimeAccessor (&MockNetDevice::m_tInterframeGap),
|
MakeTimeAccessor (&MockNetDevice::m_tInterframeGap),
|
||||||
MakeTimeChecker ())
|
MakeTimeChecker ())
|
||||||
|
.AddAttribute ("TxPower",
|
||||||
|
"Transmit power in dBm",
|
||||||
|
DoubleValue (1.0),
|
||||||
|
MakeDoubleAccessor (&MockNetDevice::m_txPower),
|
||||||
|
MakeDoubleChecker<double> ())
|
||||||
|
|
||||||
//
|
//
|
||||||
// Transmit queueing discipline for the device which includes its own set
|
// Transmit queueing discipline for the device which includes its own set
|
||||||
|
@ -765,4 +771,16 @@ MockNetDevice::IsPointToPoint() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double
|
||||||
|
MockNetDevice::GetTxPower () const
|
||||||
|
{
|
||||||
|
return m_txPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MockNetDevice::SetTxPower (double txPower)
|
||||||
|
{
|
||||||
|
m_txPower = txPower;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ns3
|
} // namespace ns3
|
||||||
|
|
|
@ -91,6 +91,16 @@ public:
|
||||||
*/
|
*/
|
||||||
bool Attach (Ptr<MockChannel> ch);
|
bool Attach (Ptr<MockChannel> ch);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the transmission power in dbm
|
||||||
|
*/
|
||||||
|
double GetTxPower () const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the transmission power in dbm
|
||||||
|
*/
|
||||||
|
void SetTxPower (double txPower);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attach a queue to the MockNetDevice.
|
* Attach a queue to the MockNetDevice.
|
||||||
*
|
*
|
||||||
|
@ -280,6 +290,11 @@ private:
|
||||||
READY, /**< The transmitter is ready to begin transmission of a packet */
|
READY, /**< The transmitter is ready to begin transmission of a packet */
|
||||||
BUSY /**< The transmitter is busy transmitting a packet */
|
BUSY /**< The transmitter is busy transmitting a packet */
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Transmission power used for transmissions
|
||||||
|
*/
|
||||||
|
double m_txPower;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The state of the Net Device transmit state machine.
|
* The state of the Net Device transmit state machine.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue