24#include "ns3/simulator.h"
30NS_LOG_COMPONENT_DEFINE(
"SatInterference");
38 Address satEarthStationAddress)
54 NS_LOG_FUNCTION(
this);
62 NS_LOG_FUNCTION(
this);
70 NS_LOG_FUNCTION(
this);
78 NS_LOG_FUNCTION(
this);
86 NS_LOG_FUNCTION(
this);
94 NS_LOG_FUNCTION(
this);
108 static TypeId tid = TypeId(
"ns3::SatInterference").SetParent<Object>();
122Ptr<SatInterference::InterferenceChangeEvent>
125 NS_LOG_FUNCTION(
this << duration.GetSeconds() << power << rxAddress);
127 return DoAdd(duration, power, rxAddress);
130std::vector<std::pair<double, double>>
133 NS_LOG_FUNCTION(
this);
137 std::map<Ptr<SatInterference::InterferenceChangeEvent>,
bool>::iterator iter;
138 bool wasCollisionReported =
true;
144 wasCollisionReported =
false;
148 if (!wasCollisionReported)
150 NS_LOG_INFO(
"Packet collision!");
160 NS_LOG_FUNCTION(
this);
171 NS_LOG_FUNCTION(
this);
175 std::pair<std::map<Ptr<SatInterference::InterferenceChangeEvent>,
bool>::iterator,
bool> result;
180 NS_FATAL_ERROR(
"SatInterference::NotifyRxStart - Event already exists");
189 NS_LOG_FUNCTION(
this);
204 NS_LOG_FUNCTION(
this);
206 std::map<Ptr<SatInterference::InterferenceChangeEvent>,
bool>::iterator result =
211 NS_FATAL_ERROR(
"SatInterference::HasCollision - Event not found");
214 return result->second;
Time GetEndTime(void) const
~InterferenceChangeEvent()
Destructor of Event for satellite interference.
Time GetDuration(void) const
double GetRxPower(void) const
Address GetSatEarthStationAddress(void) const
InterferenceChangeEvent(uint32_t id, Time duration, double rxPower, Address satEarthStationAddress)
Constructor of Event for satellite interference.
Address m_satEarthStationAddress
uint32_t GetId(void) const
Time GetStartTime(void) const
virtual std::vector< std::pair< double, double > > DoCalculate(Ptr< SatInterference::InterferenceChangeEvent > event)=0
Calculates interference power for the given reference Sets final power at end time to finalPower.
virtual void DoNotifyRxStart(Ptr< SatInterference::InterferenceChangeEvent > event)=0
Notifies that RX is started by a receiver.
void Reset(void)
Resets current interference.
Ptr< SatInterference::InterferenceChangeEvent > Add(Time rxDuration, double rxPower, Address rxAddress)
Adds interference power to interference object.
uint32_t m_currentlyReceiving
~SatInterference()
Destructor for Satellite interference base class.
static TypeId GetTypeId(void)
Derived from Object.
virtual Ptr< SatInterference::InterferenceChangeEvent > DoAdd(Time rxDuration, double rxPower, Address rxAddress)=0
Adds interference power to interference object.
virtual void DoNotifyRxEnd(Ptr< SatInterference::InterferenceChangeEvent > event)=0
Notifies that RX is ended by a receiver.
virtual void NotifyRxEnd(Ptr< SatInterference::InterferenceChangeEvent > event)
Notifies that RX is ended by a receiver.
virtual void DoReset(void)=0
Resets current interference.
virtual void NotifyRxStart(Ptr< SatInterference::InterferenceChangeEvent > event)
Notifies that RX is started by a receiver.
virtual bool HasCollision(Ptr< SatInterference::InterferenceChangeEvent > event)
Checks whether the packet has collided.
std::vector< std::pair< double, double > > Calculate(Ptr< SatInterference::InterferenceChangeEvent > event)
Calculates interference power for the given reference.
SatInterference()
Constructor for Satellite interference base class.
std::map< Ptr< SatInterference::InterferenceChangeEvent >, bool > m_packetCollisions
SatArqSequenceNumber is handling the sequence numbers for the ARQ process.