20 #include "ns3/packet.h"
21 #include "ns3/simulator.h"
22 #include "ns3/mobility-model.h"
23 #include "ns3/net-device.h"
26 #include "ns3/pointer.h"
27 #include "ns3/object-factory.h"
30 #include "ns3/propagation-loss-model.h"
31 #include "ns3/propagation-delay-model.h"
44 .AddConstructor<YansWifiChannel> ()
45 .AddAttribute (
"PropagationLossModel",
"A pointer to the propagation loss model attached to this channel.",
48 MakePointerChecker<PropagationLossModel> ())
49 .AddAttribute (
"PropagationDelayModel",
"A pointer to the propagation delay model attached to this channel.",
52 MakePointerChecker<PropagationDelayModel> ())
95 Time delay =
m_delay->GetDelay (senderMobility, receiverMobility);
96 double rxPowerDbm =
m_loss->
CalcRxPower (txPowerDbm, senderMobility, receiverMobility);
97 NS_LOG_DEBUG (
"propagation: txPower=" << txPowerDbm <<
"dbm, rxPower=" << rxPowerDbm <<
"dbm, " <<
98 "distance=" << senderMobility->
GetDistanceFrom (receiverMobility) <<
"m, delay=" << delay);
102 if (dstNetDevice == 0)
104 dstNode = 0xffffffff;
112 j, copy, rxPowerDbm, txVector, preamble);
121 m_phyList[i]->StartReceivePacket (packet, rxPowerDbm, txVector, preamble);
144 int64_t currentStream = stream;
146 return (currentStream - stream);
Ptr< PropagationDelayModel > m_delay
Propagation delay model.
Simulation virtual time values and global simulation resolution.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
double GetDistanceFrom(Ptr< const MobilityModel > position) const
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register the class in the ns-3 factory.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
void SetPropagationLossModel(Ptr< PropagationLossModel > loss)
void SetPropagationDelayModel(Ptr< PropagationDelayModel > delay)
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint16_t GetChannelNumber() const
Return the current channel number.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
Keep track of the current position and velocity of an object.
virtual Ptr< NetDevice > GetDevice(uint32_t i) const
virtual ~YansWifiChannel()
virtual uint32_t GetNDevices(void) const
Ptr< PropagationLossModel > m_loss
Propagation loss model.
double CalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
static void ScheduleWithContext(uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event with the given context.
PhyList m_phyList
List of YansWifiPhys connected to this YansWifiChannel.
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
static TypeId GetTypeId(void)
Wifi Channel interface specificationThis class works in tandem with the ns3::WifiPhy class...
void Receive(uint32_t i, Ptr< Packet > packet, double rxPowerDbm, WifiTxVector txVector, WifiPreamble preamble) const
This method is scheduled by Send for each associated YansWifiPhy.
Network layer to device interface.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
void Add(Ptr< YansWifiPhy > phy)
Adds the given YansWifiPhy to the PHY list.
void Send(Ptr< YansWifiPhy > sender, Ptr< const Packet > packet, double txPowerDbm, WifiTxVector txVector, WifiPreamble preamble) const
Ptr< T > GetObject(void) const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
int64_t AssignStreams(int64_t stream)
If this loss model uses objects of type RandomVariableStream, set the stream numbers to the integers ...
Ptr< Object > GetMobility(void)
Return the mobility model this PHY is associated with.