21 #include "ns3/object.h"
22 #include "ns3/packet.h"
23 #include "ns3/simulator.h"
24 #include "ns3/mobility-model.h"
25 #include "ns3/net-device.h"
28 #include "ns3/pointer.h"
51 .AddConstructor<UanChannel> ()
52 .AddAttribute (
"PropagationModel",
53 "A pointer to the propagation model.",
56 MakePointerChecker<UanPropModel> ())
57 .AddAttribute (
"NoiseModel",
58 "A pointer to the model of the channel ambient noise.",
61 MakePointerChecker<UanNoiseModel> ())
86 UanDeviceList::iterator it =
m_devList.begin ();
143 m_devList.push_back (std::make_pair (dev, trans));
153 for (UanDeviceList::const_iterator i =
m_devList.begin (); i
157 if (src == i->second)
165 UanDeviceList::const_iterator i =
m_devList.begin ();
168 if (src != i->second)
170 NS_LOG_DEBUG (
"Scheduling " << i->first->GetMac ()->GetAddress ());
172 Time delay =
m_prop->GetDelay (senderMobility, rcvrMobility, txMode);
173 UanPdp pdp =
m_prop->GetPdp (senderMobility, rcvrMobility, txMode);
174 double rxPowerDb = txPowerDb -
m_prop->GetPathLossDb (senderMobility,
178 NS_LOG_DEBUG (
"txPowerDb=" << txPowerDb <<
"dB, rxPowerDb="
179 << rxPowerDb <<
"dB, distance="
181 <<
"m, delay=" << delay);
183 uint32_t dstNodeId = i->first->GetNode ()->GetId ();
209 m_devList[i].second->Receive (packet, rxPowerDb, txMode, pdp);
216 double noise =
m_noise->GetNoiseDbHz (fKhz);
void SendUp(uint32_t i, Ptr< Packet > packet, double rxPowerDb, UanTxMode txMode, UanPdp pdp)
Send a packet up to the receiving UanTransducer.
UanDeviceList m_devList
The list of devices on this channel.
keep track of time values and allow control of global simulation resolution
static TypeId GetTypeId(void)
Register this type.
smart pointer class similar to boost::intrusive_ptr
double GetDistanceFrom(Ptr< const MobilityModel > position) const
#define NS_ASSERT(condition)
NS_OBJECT_ENSURE_REGISTERED(NullMessageSimulatorImpl)
Abstract Channel Base Class.
double GetNoiseDbHz(double fKhz)
Get the noise level on the channel.
Ptr< UanNoiseModel > m_noise
The noise model.
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
void SetNoiseModel(Ptr< UanNoiseModel > noise)
Set the noise model this channel will use to determine ambient channel noise.
void TxPacket(Ptr< UanTransducer > src, Ptr< Packet > packet, double txPowerDb, UanTxMode txmode)
Send a packet out on the channel.
bool m_cleared
Has Clear ever been called on the channel.
Keep track of the current position and velocity of an object.
void AddDevice(Ptr< UanNetDevice > dev, Ptr< UanTransducer > trans)
Adds device to receiver list for this channel.
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
The power delay profile returned by propagation models.
Abstraction of packet modulation information.
void Clear(void)
Clear all pointer references.
virtual uint32_t GetNDevices(void) const
static void ScheduleWithContext(uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event with the given context.
Ptr< Packet > Copy(void) const
virtual Ptr< NetDevice > GetDevice(uint32_t i) const
virtual ~UanChannel()
Dummy destructor, see DoDispose.
#define NS_LOG_DEBUG(msg)
void SetPropagationModel(Ptr< UanPropModel > prop)
Set the propagation model this channel will use for path loss/propagation delay.
NS_LOG_COMPONENT_DEFINE("UanChannel")
Ptr< T > GetObject(void) const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Ptr< UanPropModel > m_prop
The propagation model.