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"
45 .AddConstructor<YansWifiChannel> ()
46 .AddAttribute (
"PropagationLossModel",
"A pointer to the propagation loss model attached to this channel.",
49 MakePointerChecker<PropagationLossModel> ())
50 .AddAttribute (
"PropagationDelayModel",
"A pointer to the propagation delay model attached to this channel.",
53 MakePointerChecker<PropagationDelayModel> ())
96 Time delay =
m_delay->GetDelay (senderMobility, receiverMobility);
97 double rxPowerDbm =
m_loss->
CalcRxPower (txPowerDbm, senderMobility, receiverMobility);
98 NS_LOG_DEBUG (
"propagation: txPower=" << txPowerDbm <<
"dbm, rxPower=" << rxPowerDbm <<
"dbm, " <<
99 "distance=" << senderMobility->
GetDistanceFrom (receiverMobility) <<
"m, delay=" << delay);
103 if (dstNetDevice == 0)
105 dstNode = 0xffffffff;
113 j, copy, rxPowerDbm, txVector, preamble);
122 m_phyList[i]->StartReceivePacket (packet, rxPowerDbm, txVector, preamble);
145 int64_t currentStream = stream;
147 return (currentStream - stream);
Ptr< PropagationDelayModel > m_delay
Propagation delay model.
keep track of time values and allow control of 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
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)
NS_OBJECT_ENSURE_REGISTERED(NullMessageSimulatorImpl)
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
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)
void Add(Ptr< YansWifiPhy > phy)
Adds the given YansWifiPhy to the PHY list.
NS_LOG_COMPONENT_DEFINE("YansWifiChannel")
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.