26 #include "ns3/callback.h"
27 #include "ns3/nstime.h"
28 #include "ns3/event-id.h"
30 #include "send-params.h"
32 #include "ns3/object.h"
33 #include "ns3/traced-callback.h"
50 MODULATION_TYPE_BPSK_12, MODULATION_TYPE_QPSK_12, MODULATION_TYPE_QPSK_34, MODULATION_TYPE_QAM16_12,
51 MODULATION_TYPE_QAM16_34, MODULATION_TYPE_QAM64_23, MODULATION_TYPE_QAM64_34
56 PHY_STATE_IDLE, PHY_STATE_SCANNING, PHY_STATE_TX, PHY_STATE_RX
61 SimpleWimaxPhy, simpleOfdmWimaxPhy
64 static TypeId GetTypeId (
void);
108 void SetDuplex (uint64_t rxFrequency, uint64_t txFrequency);
254 EventId GetChnlSrchTimeoutEvent (
void)
const;
264 uint32_t
GetDataRate (ModulationType modulationType)
const;
276 uint64_t
GetNrSymbols (uint32_t size, ModulationType modulationType)
const;
282 uint64_t
GetNrBytes (uint32_t symbols, ModulationType modulationType)
const;
286 uint16_t
GetTtg (
void)
const;
290 uint16_t
GetRtg (
void)
const;
291 uint8_t GetFrameDurationCode (
void)
const;
319 void GetModulationFecParams (ModulationType modulationType, uint8_t &bitsPerSymbol,
double &fecCode)
const;
320 void EndScanning (
void);
321 virtual Time DoGetTransmissionTime (uint32_t size, ModulationType modulationType)
const = 0;
323 virtual void DoSetDataRates (
void) = 0;
324 virtual uint32_t DoGetDataRate (ModulationType modulationType)
const = 0;
325 virtual uint64_t DoGetNrSymbols (uint32_t size, ModulationType modulationType)
const = 0;
326 virtual uint64_t DoGetNrBytes (uint32_t symbols, ModulationType modulationType)
const = 0;
327 virtual uint16_t DoGetTtg (
void)
const = 0;
328 virtual uint16_t DoGetRtg (
void)
const = 0;
330 virtual uint8_t DoGetFrameDurationCode (
void)
const = 0;
331 virtual Time DoGetFrameDuration (uint8_t frameDurationCode)
const = 0;
332 virtual void DoSetPhyParameters (
void) = 0;
333 virtual double DoGetSamplingFactor (
void)
const = 0;
334 virtual uint16_t DoGetNfft (
void)
const = 0;
335 virtual double DoGetSamplingFrequency (
void)
const = 0;
336 virtual double DoGetGValue (
void)
const = 0;
341 uint64_t m_txFrequency;
342 uint64_t m_rxFrequency;
343 uint64_t m_scanningFrequency;
344 EventId m_dlChnlSrchTimeoutEvent;
351 uint8_t m_nrCarriers;
352 Time m_frameDuration;
353 uint32_t m_frequency;
354 uint32_t m_channelBandwidth;
356 Time m_symbolDuration;
357 uint16_t m_psPerSymbol;
358 uint16_t m_psPerFrame;
359 uint32_t m_symbolsPerFrame;
Time GetPsDuration(void) const
Callback< void, Ptr< const PacketBurst > > GetReceiveCallback(void) const
smart pointer class similar to boost::intrusive_ptr
void SetFrequency(uint32_t frequency)
set the frequency on which the device should lock
void SetFrameDuration(Time frameDuration)
Set the frame duration.
virtual void DoDispose(void)
virtual int64_t AssignStreams(int64_t stream)=0
bool IsDuplex(void) const
uint32_t GetChannelBandwidth(void) const
uint32_t GetSymbolsPerFrame(void) const
void SetSimplex(uint64_t frequency)
configure the physical layer in simplex mode
uint64_t GetRxFrequency(void) const
double GetSamplingFactor(void) const
Time GetSymbolDuration(void) const
void SetSymbolsPerFrame(uint32_t symbolsPerFrame)
set the number of symbols per frame
void SetPsDuration(Time psDuration)
set the physical slot duration in seconds
Time GetFrameDuration(void) const
void SetReceiveCallback(Callback< void, Ptr< const PacketBurst > > callback)
set the callback function to call when a burst is received
Time GetTransmissionTime(uint32_t size, ModulationType modulationType) const
uint16_t GetTtg(void) const
The SendParams class defines the parameters with which Send() function of a particular PHY is called...
void SetScanningCallback(void) const
calls the scanning call back function
uint16_t GetNfft(void) const
void SetPsPerSymbol(uint16_t psPerSymbol)
set the number of physical slots per symbol
uint64_t GetNrSymbols(uint32_t size, ModulationType modulationType) const
Ptr< WimaxChannel > GetChannel(void) const
Time GetFrameDurationSec(void) const
uint8_t GetNrCarriers(void) const
double GetGValue(void) const
void SetChannelBandwidth(uint32_t channelBandwidth)
Set the channel bandwidth.
uint64_t GetNrBytes(uint32_t symbols, ModulationType modulationType) const
uint16_t GetPsPerSymbol(void) const
virtual PhyType GetPhyType(void) const =0
Get the type of the physical layer.
void StartScanning(uint64_t frequency, Time timeout, Callback< void, bool, uint64_t > callback)
scan the frequency frequency for maximum timeout seconds and calls callback if the frequency could be...
Ptr< NetDevice > GetDevice(void) const
void Attach(Ptr< WimaxChannel > channel)
void SetSymbolDuration(Time symbolDuration)
set the OFMD symbol duration in second
uint16_t GetPsPerFrame(void) const
an identifier for simulation events.
virtual Ptr< Object > GetMobility(void)
void SetDuplex(uint64_t rxFrequency, uint64_t txFrequency)
configure the physical layer in duplex mode
void SetDevice(Ptr< WimaxNetDevice > device)
Set the device in which this physical layer is installed.
void SetState(PhyState state)
set the state of the device
uint16_t GetRtg(void) const
void SetDataRates(void)
calculates the data rate of each modulation and save them for future use
uint32_t GetDataRate(ModulationType modulationType) const
void SetNrCarriers(uint8_t nrCarriers)
Set the number of carriers in the physical frame.
double GetSamplingFrequency(void) const
uint64_t GetTxFrequency(void) const
a base class which provides memory management and object aggregation
void SetPsPerFrame(uint16_t psPerFrame)
set the number of physical slot per frame
uint32_t GetFrequency(void) const
void SetPhyParameters(void)
computes the Physical parameters and store them
virtual void Send(SendParams *params)=0
send a packet on the channel
a unique identifier for an interface.
virtual void SetMobility(Ptr< Object > mobility)
set the mobility model of the device
PhyState GetState(void) const
uint64_t GetScanningFrequency(void) const