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"
50 .AddConstructor<UanChannel> ()
51 .AddAttribute (
"PropagationModel",
52 "A pointer to the propagation model.",
55 MakePointerChecker<UanPropModel> ())
56 .AddAttribute (
"NoiseModel",
57 "A pointer to the model of the channel ambient noise.",
60 MakePointerChecker<UanNoiseModel> ())
85 UanDeviceList::iterator it =
m_devList.begin ();
142 m_devList.push_back (std::make_pair (dev, trans));
152 for (UanDeviceList::const_iterator i =
m_devList.begin (); i
156 if (src == i->second)
164 UanDeviceList::const_iterator i =
m_devList.begin ();
167 if (src != i->second)
169 NS_LOG_DEBUG (
"Scheduling " << i->first->GetMac ()->GetAddress ());
171 Time delay =
m_prop->GetDelay (senderMobility, rcvrMobility, txMode);
172 UanPdp pdp =
m_prop->GetPdp (senderMobility, rcvrMobility, txMode);
173 double rxPowerDb = txPowerDb -
m_prop->GetPathLossDb (senderMobility,
177 NS_LOG_DEBUG (
"txPowerDb=" << txPowerDb <<
"dB, rxPowerDb="
178 << rxPowerDb <<
"dB, distance="
180 <<
"m, delay=" << delay);
182 uint32_t dstNodeId = i->first->GetNode ()->GetId ();
208 m_devList[i].second->Receive (packet, rxPowerDb, txMode, pdp);
215 double noise =
m_noise->GetNoiseDbHz (fKhz);
void SendUp(uint32_t i, Ptr< Packet > packet, double rxPowerDb, UanTxMode txMode, UanPdp pdp)
keep track of time values and allow control of global simulation resolution
smart pointer class similar to boost::intrusive_ptr
double GetDistanceFrom(Ptr< const MobilityModel > position) const
#define NS_ASSERT(condition)
#define NS_LOG_COMPONENT_DEFINE(name)
Abstract Channel Base Class.
double GetNoiseDbHz(double fKhz)
Ptr< UanNoiseModel > m_noise
virtual void DoDispose(void)
static TypeId GetTypeId()
void SetNoiseModel(Ptr< UanNoiseModel > noise)
void TxPacket(Ptr< UanTransducer > src, Ptr< Packet > packet, double txPowerDb, UanTxMode txmode)
Keep track of the current position and velocity of an object.
void AddDevice(Ptr< UanNetDevice > dev, Ptr< UanTransducer > trans)
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
Abstraction of packet modulation information.
virtual uint32_t GetNDevices(void) const
static void ScheduleWithContext(uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
Ptr< Packet > Copy(void) const
virtual Ptr< NetDevice > GetDevice(uint32_t i) const
hold objects of type Ptr<T>
#define NS_LOG_DEBUG(msg)
void SetPropagationModel(Ptr< UanPropModel > prop)
Ptr< T > GetObject(void) const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Ptr< UanPropModel > m_prop