26 #include "ns3/object.h"
27 #include "ns3/uan-mac.h"
28 #include "ns3/uan-tx-mode.h"
29 #include "ns3/uan-prop-model.h"
30 #include "ns3/uan-transducer.h"
31 #include "ns3/device-energy-model.h"
74 virtual void Clear (
void);
82 inline double DbToKp (
double db)
const
84 return std::pow (10, db / 10.0);
92 inline double KpToDb (
double kp)
const
94 return 10 * std::log10 (kp);
130 virtual void Clear (
void);
415 virtual void Clear (
void) = 0;
virtual ~UanPhyListener()
Default destructor.
virtual Ptr< UanNetDevice > GetDevice(void)=0
Get the device hosting this Phy.
keep track of time values and allow control of global simulation resolution
virtual bool IsStateBusy(void)=0
TracedCallback< Ptr< const Packet > > m_phyTxBeginTrace
Trace source indicating a packet has begun transmitting over the channel medium.
virtual bool IsStateSleep(void)=0
virtual void NotifyTransStartTx(Ptr< Packet > packet, double txPowerDb, UanTxMode txMode)=0
Called when a transmission is beginning on the attched transducer.
void NotifyRxDrop(Ptr< const Packet > packet)
Called when the Phy drops a packet.
virtual void SetCcaThresholdDb(double thresh)=0
Set the threshold for detecting channel busy.
virtual double GetRxThresholdDb(void)=0
Get the minimum received signal strength required to receive a packet without errors.
virtual Ptr< UanChannel > GetChannel(void) const =0
Get the attached channel.
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
virtual void SetRxThresholdDb(double thresh)=0
Set the minimum SINR threshold to receive a packet without errors.
TracedCallback< Ptr< const Packet > > m_phyRxDropTrace
Trace source indicating a packet has been dropped by the device during reception. ...
virtual void SetDevice(Ptr< UanNetDevice > device)=0
Set the device hosting this Phy.
virtual void Clear(void)=0
Clear all pointer references.
TracedCallback< Ptr< const Packet > > m_phyTxDropTrace
Trace source indicating a packet has been dropped by the device during transmission.
virtual void SetReceiveErrorCallback(RxErrCallback cb)=0
Set the callback to be used when a packet is received with errors.
virtual void NotifyIntChange(void)=0
Called when there has been a change in the ammount of interference this node is experiencing from oth...
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
virtual uint32_t GetNModes(void)=0
Get the number of transmission modes supported by this Phy.
virtual bool IsStateTx(void)=0
virtual double GetCcaThresholdDb(void)=0
Get the CCA threshold signal strength required to detect channel busy.
void NotifyTxDrop(Ptr< const Packet > packet)
Called when the transducer attempts to transmit a new packet while already transmitting a prior packe...
void NotifyRxEnd(Ptr< const Packet > packet)
Called when a packet is received without error.
virtual void RegisterListener(UanPhyListener *listener)=0
Register a UanPhyListener to be notified of common UanPhy events.
virtual void NotifyRxStart(void)=0
Called when UanPhy begins receiving packet.
TracedCallback< Ptr< const Packet > > m_phyRxEndTrace
Trace source indicating a packet has been completely received from the channel medium by the device...
virtual bool IsStateCcaBusy(void)=0
virtual void Clear(void)
Clear all pointer references.
double KpToDb(double kp) const
Convert kilopascals to dB re 1 uPa.
virtual void NotifyTxStart(Time duration)=0
Called when transmission starts from Phy object.
static TypeId GetTypeId(void)
Register this type.
The power delay profile returned by propagation models.
Abstraction of packet modulation information.
Calculate packet error probability, based on received SINR and modulation (mode). ...
std::list< UanPacketArrival > ArrivalList
List of arriving packets overlapping in time.
State
Enum defining possible Phy states.
void NotifyTxBegin(Ptr< const Packet > packet)
Called when the transducer begins transmitting a packet.
virtual void NotifyRxEndError(void)=0
Called when UanPhy finishes receiving packet in error.
void NotifyRxBegin(Ptr< const Packet > packet)
Called when the Phy begins to receive a packet.
virtual void NotifyRxEndOk(void)=0
Called when UanPhy finishes receiving packet without error.
virtual void SetTxPowerDb(double txpwr)=0
Set the transmit power.
static TypeId GetTypeId(void)
Register this type.
Interface for PHY event listener.
virtual void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
virtual void SetSleepMode(bool sleep)=0
Set the Phy SLEEP mode.
double DbToKp(double db) const
Convert dB re 1 uPa to kilopascals.
virtual int64_t AssignStreams(int64_t stream)=0
Assign a fixed random variable stream number to the random variables used by this model...
virtual double CalcPer(Ptr< Packet > pkt, double sinrDb, UanTxMode mode)=0
Calculate the packet error probability based on SINR at the receiver and a tx mode.
Class used for calculating SINR of packet in UanPhy.
Base class for UAN Phy models.
virtual void EnergyDepletionHandler(void)=0
Handle the energy depletion event.
virtual double GetTxPowerDb(void)=0
Get the current transmit power, in dB.
virtual void NotifyCcaStart(void)=0
Called when UanPhy begins sensing channel is busy.
virtual void SetEnergyModelCallback(DeviceEnergyModel::ChangeStateCallback callback)=0
Set the DeviceEnergyModel callback for UanPhy device.
virtual void SetRxGainDb(double gain)=0
Set the receiver gain.
Callback< void, Ptr< Packet >, double, UanTxMode > RxOkCallback
Packet received successfully callback function type.
virtual void NotifyCcaEnd(void)=0
Called when UanPhy stops sensing channel is busy.
virtual UanTxMode GetMode(uint32_t n)=0
Get a specific transmission mode.
TracedCallback< Ptr< const Packet > > m_phyTxEndTrace
Trace source indicating a packet has been completely transmitted over the channel.
virtual double GetRxGainDb(void)=0
Get the receiver gain added to signal at receiver in dB.
virtual void Clear(void)
Clear all pointer references.
virtual void StartRxPacket(Ptr< Packet > pkt, double rxPowerDb, UanTxMode txMode, UanPdp pdp)=0
Packet arriving from channel: i.e.
static TypeId GetTypeId(void)
Register this type.
virtual double CalcSinrDb(Ptr< Packet > pkt, Time arrTime, double rxPowerDb, double ambNoiseDb, UanTxMode mode, UanPdp pdp, const UanTransducer::ArrivalList &arrivalList) const =0
Calculate the SINR value for a packet.
virtual Ptr< UanTransducer > GetTransducer(void)=0
Get the attached transducer.
a base class which provides memory management and object aggregation
virtual void SetMac(Ptr< UanMac > mac)=0
Set the MAC forwarding messages to this Phy.
virtual bool IsStateIdle(void)=0
virtual Ptr< Packet > GetPacketRx(void) const =0
Get the packet currently being received.
virtual void SetChannel(Ptr< UanChannel > channel)=0
Attach to a channel.
Callback< void, Ptr< Packet >, double > RxErrCallback
Packet receive error callback function type.
virtual void SendPacket(Ptr< Packet > pkt, uint32_t modeNum)=0
Send a packet using a specific transmission mode.
virtual void SetTransducer(Ptr< UanTransducer > trans)=0
Attach a transducer to this Phy.
a unique identifier for an interface.
void NotifyTxEnd(Ptr< const Packet > packet)
Called when the transducer finishes transmitting a packet.
virtual bool IsStateRx(void)=0
TracedCallback< Ptr< const Packet > > m_phyRxBeginTrace
Trace source indicating a packet has begun being received from the channel medium by the device...
virtual void SetReceiveOkCallback(RxOkCallback cb)=0
Set the callback to be used when a packet is received without error.