22 #ifndef SIMPLE_OFDM_WIMAX_PHY_H
23 #define SIMPLE_OFDM_WIMAX_PHY_H
27 #include "ns3/callback.h"
28 #include "ns3/nstime.h"
29 #include "ns3/event-id.h"
30 #include "ns3/random-variable-stream.h"
33 #include "ns3/snr-to-block-error-rate-manager.h"
41 class SimpleOfdmWimaxChannel;
void SetNoiseFigure(double nf)
set the noise figure of the device
uint32_t GetCodedFecBlockSize(WimaxPhy::ModulationType modulationType) const
void StartReceive(uint32_t burstSize, bool isFirstBlock, uint64_t frequency, WimaxPhy::ModulationType modulationType, uint8_t direction, double rxPower, Ptr< PacketBurst > burst)
start the reception of a fec block
keep track of time values and allow control of global simulation resolution
~SimpleOfdmWimaxPhy(void)
smart pointer class similar to boost::intrusive_ptr
void SetSNRToBlockErrorRateTracesPath(char *tracesPath)
Set the path of the repository containing the traces.
TracedCallback< Ptr< PacketBurst > > m_phyRxEndTrace
The trace source fired when a packet ends the reception process from the medium.
void EndReceiveFecBlock(uint32_t burstSize, WimaxPhy::ModulationType modulationType, uint8_t direction, uint8_t drop, Ptr< PacketBurst > burst)
void Send(Ptr< PacketBurst > burst, WimaxPhy::ModulationType modulationType, uint8_t direction)
Sends a burst on the channel.
double DoGetSamplingFrequency(void) const
void NotifyRxDrop(Ptr< PacketBurst > burst)
Public method used to fire a PhyRxDrop trace.
void NotifyRxBegin(Ptr< PacketBurst > burst)
Public method used to fire a PhyRxBegin trace.
TracedCallback< Ptr< const PacketBurst > > m_traceRx
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
uint32_t m_dataRateQam64_23
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
void InitSimpleOfdmWimaxPhy(void)
std::list< bvec > * m_receivedFecBlocks
SNRToBlockErrorRateManager * m_snrToBlockErrorRateManager
void NotifyTxDrop(Ptr< PacketBurst > burst)
Public method used to fire a PhyTxDrop trace.
Time DoGetTransmissionTime(uint32_t size, WimaxPhy::ModulationType modulationType) const
uint8_t DoGetFrameDurationCode(void) const
void NotifyTxBegin(Ptr< PacketBurst > burst)
Public method used to fire a PhyTxBegin trace.
uint32_t DoGetDataRate(WimaxPhy::ModulationType modulationType) const
void SetTraceFilePath(std::string path)
double DoGetSamplingFactor(void) const
TracedCallback< Ptr< PacketBurst > > m_phyTxDropTrace
The trace source fired when the phy layer drops a packet as it tries to transmit it.
double DoGetGValue(void) const
void SetBandwidth(uint32_t BW)
Set the bandwidth.
void CreateFecBlocks(const bvec &buffer, WimaxPhy::ModulationType modulationType)
void EndSendFecBlock(WimaxPhy::ModulationType modulationType, uint8_t direction)
TracedCallback< Ptr< PacketBurst > > m_phyTxBeginTrace
The trace source fired when a packet begins the transmission process on the medium.
double GetTxGain(void) const
Ptr< UniformRandomVariable > m_URNG
Provides uniform random variables.
bvec ConvertBurstToBits(Ptr< const PacketBurst > burst)
void DoSetDataRates(void)
double GetRxGain(void) const
uint16_t m_nrRecivedFecBlocks
uint32_t m_nrFecBlocksSent
uint16_t DoGetTtg(void) const
The SendParams class defines the parameters with which Send() function of a particular PHY is called...
Time GetBlockTransmissionTime(WimaxPhy::ModulationType modulationType) const
Time DoGetFrameDuration(uint8_t frameDurationCode) const
uint32_t m_dataRateQpsk12
void EndReceive(Ptr< const PacketBurst > burst)
uint16_t DoGetNfft(void) const
void SetRxGain(double rxgain)
uint32_t m_dataRateQpsk34
Ptr< PacketBurst > m_currentBurst
void NotifyRxEnd(Ptr< PacketBurst > burst)
Public method used to fire a PhyRxEnd trace.
void StartSendDummyFecBlock(bool isFirstBlock, WimaxPhy::ModulationType modulationType, uint8_t direction)
static TypeId GetTypeId(void)
double GetTxPower(void) const
void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
double GetNoiseFigure(void) const
uint16_t DoGetRtg(void) const
uint32_t m_currentBurstSize
void DoAttach(Ptr< WimaxChannel > channel)
Attach the physical layer to a channel.
void ActivateLoss(bool loss)
if called with true it will enable the loss model
uint64_t DoGetNrBytes(uint32_t symbols, WimaxPhy::ModulationType modulationType) const
uint64_t DoGetNrSymbols(uint32_t size, WimaxPhy::ModulationType modulationType) const
void SetTxGain(double txgain)
void NotifyTxEnd(Ptr< PacketBurst > burst)
Public method used to fire a PhyTxEnd trace.
uint32_t CalculateDataRate(WimaxPhy::ModulationType modulationType) const
uint32_t m_dataRateQam64_34
TracedCallback< Ptr< PacketBurst > > m_phyRxBeginTrace
The trace source fired when a packet begins the reception process from the medium.
std::string GetTraceFilePath(void) const
void SetTxPower(double txPower)
set the transmission power
TracedCallback< Ptr< PacketBurst > > m_phyTxEndTrace
The trace source fired when a packet ends the transmission process on the medium. ...
uint32_t m_dataRateBpsk12
uint16_t GetNrBlocks(uint32_t burstSize, WimaxPhy::ModulationType modulationType) const
uint32_t GetBandwidth(void) const
uint16_t m_nbErroneousBlock
Ptr< PacketBurst > ConvertBitsToBurst(bvec buffer)
uint32_t m_dataRateQam16_34
void SetBlockParameters(uint32_t burstSize, WimaxPhy::ModulationType modulationType)
WimaxPhy::PhyType GetPhyType(void) const
returns the type this physical layer
void GetModulationFecParams(WimaxPhy::ModulationType modulationType, uint8_t &bitsPerSymbol, double &fecCode) const
uint32_t GetFecBlockSize(WimaxPhy::ModulationType type) const
void SetReceiveCallback(Callback< void, Ptr< PacketBurst >, Ptr< WimaxConnection > > callback)
set the callback function to call when a burst is received
This class handles the SNR to BlcER traces.
void DoSetPhyParameters(void)
uint32_t m_dataRateQam16_12
uint16_t m_nrRemainingBlocksToSend
a unique identifier for an interface.
TracedCallback< Ptr< PacketBurst > > m_phyRxDropTrace
The trace source fired when the phy layer drops a packet it has received.
TracedCallback< Ptr< const PacketBurst > > m_traceTx
std::list< bvec > * m_fecBlocks