27 #include <ns3/spectrum-phy.h>
28 #include <ns3/traced-callback.h>
29 #include <ns3/traced-value.h>
30 #include <ns3/event-id.h>
36 class LrWpanErrorModel;
37 struct LrWpanSpectrumSignalParameters;
39 class SpectrumChannel;
43 class UniformRandomVariable;
122 namespace TracedValueCallback
An identifier for simulation events.
Make LrWpanPhy a SpectrumPhy so we can enable the eventual modeling of device interference.
virtual void StartRx(Ptr< SpectrumSignalParameters > params)
Notify the SpectrumPhy instance of an incoming waveform.
Ptr< const SpectrumValue > m_noise
The spectral density for for the noise.
std::pair< Ptr< Packet >, bool > PacketAndStatus
The second is true if the first is flagged as error/invalid.
void SetPdDataConfirmCallback(PdDataConfirmCallback c)
set the callback for the end of a TX, as part of the interconnections betweenthe PHY and the MAC.
void(* StateTracedCallback)(Time time, LrWpanPhyEnumeration oldState, LrWpanPhyEnumeration newState)
TracedCallback signature for Trx state change events.
EventId m_setTRXState
Scheduler event of a currently running deferred transceiver state switch.
static const uint32_t aMaxPhyPacketSize
The maximum packet size accepted by the PHY.
static TypeId GetTypeId(void)
Get the type ID.
bool ChannelSupported(uint8_t channel)
Check if the given channel is supported by the PHY.
Ptr< SpectrumValue > m_txPsd
The transmit power spectral density.
void ChangeTrxState(LrWpanPhyEnumeration newState)
Change the PHY state to the given new state, firing the state change trace.
PlmeSetAttributeConfirmCallback m_plmeSetAttributeConfirmCallback
This callback is used to report attribute set results back to the MAC.
void SetPlmeGetAttributeConfirmCallback(PlmeGetAttributeConfirmCallback c)
set the callback for the end of an GetAttribute, as part of the interconnections betweenthe PHY and t...
Time CalculateTxTime(Ptr< const Packet > packet)
Calculate the time required for sending the given packet, including preamble, SFD and PHR.
Ptr< AntennaModel > m_antenna
The antenna used by the transceiver.
double GetDataOrSymbolRate(bool isData)
implement PLME SetAttribute confirm SAP bit rate is in kbit/s.
void SetPlmeSetTRXStateConfirmCallback(PlmeSetTRXStateConfirmCallback c)
set the callback for the end of an SetTRXState, as part of the interconnections betweenthe PHY and th...
void PlmeSetTRXStateRequest(LrWpanPhyEnumeration state)
IEEE 802.15.4-2006 section 6.2.2.7 PLME-SET-TRX-STATE.request Set PHY state.
void SetTxPowerSpectralDensity(Ptr< SpectrumValue > txPsd)
Set the Power Spectral Density of outgoing signals in W/Hz.
static const LrWpanPhyDataAndSymbolRates dataSymbolRates[7]
The data and symbol rates for the different PHY options.
void PlmeGetAttributeRequest(LrWpanPibAttributeIdentifier id)
IEEE 802.15.4-2006 section 6.2.2.5 PLME-GET.request Get attributes per definition from Table 23 in se...
Ptr< UniformRandomVariable > m_random
Uniform random variable stream.
TracedValue< LrWpanPhyEnumeration > m_trxState
The current transceiver state.
void PlmeCcaRequest(void)
IEEE 802.15.4-2006 section 6.2.2.1 PLME-CCA.request Perform a CCA per section 6.9....
void PlmeEdRequest(void)
IEEE 802.15.4-2006 section 6.2.2.3 PLME-ED.request Perform an ED per section 6.9.7.
TracedCallback< Ptr< const Packet > > m_phyTxEndTrace
The trace source fired when a packet ends the transmission process on the medium.
void SetPlmeEdConfirmCallback(PlmeEdConfirmCallback c)
set the callback for the end of an ED, as part of the interconnections betweenthe PHY and the MAC.
void EndRx(Ptr< SpectrumSignalParameters > params)
Finish the reception of a frame.
PlmeCcaConfirmCallback m_plmeCcaConfirmCallback
This callback is used to report CCA status to the MAC or CSMA/CA.
Ptr< NetDevice > m_device
The configured net device.
void PdDataRequest(const uint32_t psduLength, Ptr< Packet > p)
IEEE 802.15.4-2006 section 6.2.1.1 PD-DATA.request Request to transfer MPDU from MAC (transmitting)
LrWpanPhyOption GetMyPhyOption(void)
Get the currently configured PHY option.
Ptr< SpectrumChannel > GetChannel(void)
Get the currently attached channel.
Ptr< LrWpanErrorModel > m_errorModel
The error model describing the bit and packet error rates.
Ptr< LrWpanErrorModel > GetErrorModel(void) const
get the error model in use
PlmeEdConfirmCallback m_plmeEdConfirmCallback
This callback is used to report ED status to the MAC.
std::pair< Ptr< LrWpanSpectrumSignalParameters >, bool > m_currentRxPacket
Statusinformation of the currently received packet.
EventId m_ccaRequest
Scheduler event of a currently running CCA request.
virtual Ptr< const SpectrumModel > GetRxSpectrumModel(void) const
void SetMyPhyOption(void)
Configure the PHY option according to the current channel and channel page.
uint64_t GetPhySHRDuration(void) const
Get the duration of the SHR (preamble and SFD) in symbols, depending on the currently selected channe...
LrWpanEdPower m_edPower
Helper value for tracking the average power during ED.
Ptr< const SpectrumValue > GetNoisePowerSpectralDensity(void)
Get the noise power spectral density.
PacketAndStatus m_currentTxPacket
Statusinformation of the currently transmitted packet.
TracedCallback< Ptr< const Packet >, double > m_phyRxEndTrace
The trace source fired when a packet ends the reception process from the medium.
Ptr< SpectrumChannel > m_channel
The channel attached to this transceiver.
PdDataConfirmCallback m_pdDataConfirmCallback
This callback is used to report packet transmission status to the MAC layer.
TracedCallback< Ptr< const Packet > > m_phyTxBeginTrace
The trace source fired when a packet begins the transmission process on the medium.
Ptr< MobilityModel > m_mobility
The mobility model used by the PHY.
double m_ccaPeakPower
Helper value for the peak power value during CCA.
LrWpanPhyOption m_phyOption
The currently configured PHY type.
EventId m_edRequest
Scheduler event of a currently running ED request.
LrWpanPhyPibAttributes m_phyPIBAttributes
The current PHY PIB attributes.
double m_rxSensitivity
The receiver sensitivity.
static const uint32_t aTurnaroundTime
The turnaround time for switching the transceiver from RX to TX or vice versa.
LrWpanPhyEnumeration m_trxStatePending
The next pending state to applied after the current action of the PHY is completed.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
void CheckInterference(void)
Check if the interference destroys a frame currently received.
Time GetPpduHeaderTxTime(void)
Calculate the time required for sending the PPDU header, that is the preamble, SFD and PHR.
Ptr< LrWpanInterferenceHelper > m_signal
The accumulated signals currently received by the transceiver, including the signal of a possibly rec...
LrWpanPhy(void)
Default constructor.
int8_t GetNominalTxPowerFromPib(uint8_t phyTransmitPower)
Calculates the nominal transmit power of the device in decibels relative to 1 mW according to the rep...
PdDataIndicationCallback m_pdDataIndicationCallback
This callback is used to notify incoming packets to the MAC layer.
void SetMobility(Ptr< MobilityModel > m)
Set the mobility model associated with this device.
void SetErrorModel(Ptr< LrWpanErrorModel > e)
set the error model to use
TracedCallback< Ptr< const Packet > > m_phyRxDropTrace
The trace source fired when the phy layer drops a packet it has received.
void EndCca(void)
Called at the end of the CCA.
void EndSetTRXState(void)
Called after applying a deferred transceiver state switch.
PlmeSetTRXStateConfirmCallback m_plmeSetTRXStateConfirmCallback
This callback is used to report transceiver state change status to the MAC.
void PlmeSetAttributeRequest(LrWpanPibAttributeIdentifier id, LrWpanPhyPibAttributes *attribute)
IEEE 802.15.4-2006 section 6.2.2.9 PLME-SET.request Set attributes per definition from Table 23 in se...
PlmeGetAttributeConfirmCallback m_plmeGetAttributeConfirmCallback
This callback is used to report requested attribute values back to the MAC.
bool PhyIsBusy(void) const
Check if the PHY is busy, which is the case if the PHY is currently sending or receiving a frame.
void SetPdDataIndicationCallback(PdDataIndicationCallback c)
set the callback for the end of a RX, as part of the interconnections betweenthe PHY and the MAC.
EventId m_pdDataRequest
Scheduler event of a currently running data transmission request.
TracedCallback< Ptr< const Packet > > m_phyTxDropTrace
The trace source fired when the phy layer drops a packet as it tries to transmit it.
virtual void DoDispose(void)
Destructor implementation.
TracedCallback< Ptr< const Packet > > m_phyRxBeginTrace
The trace source fired when a packet begins the reception process from the medium.
void SetDevice(Ptr< NetDevice > d)
Set the associated NetDevice instance.
void SetPlmeSetAttributeConfirmCallback(PlmeSetAttributeConfirmCallback c)
set the callback for the end of an SetAttribute, as part of the interconnections betweenthe PHY and t...
Time m_rxLastUpdate
Timestamp of the last calculation of the PER of a packet currently received.
Ptr< MobilityModel > GetMobility(void) const
Get the associated MobilityModel instance.
void SetChannel(Ptr< SpectrumChannel > c)
Set the channel attached to this device.
static const LrWpanPhyPpduHeaderSymbolNumber ppduHeaderSymbolNumbers[7]
The preamble, SFD, and PHR lengths in symbols for the different PHY options.
Ptr< Object > GetAntenna(void) const
Get the AntennaModel used by this SpectrumPhy instance for transmission and/or reception.
TracedCallback< Time, LrWpanPhyEnumeration, LrWpanPhyEnumeration > m_trxStateLogger
The trace source fired when the phy layer changes the transceiver state.
void CancelEd(LrWpanPhyEnumeration state)
Cancel an ongoing ED procedure.
void EndEd(void)
Called at the end of the ED procedure.
void SetAntenna(Ptr< AntennaModel > a)
Set the attached antenna.
double GetPhySymbolsPerOctet(void) const
Get the number of symbols per octet, depending on the currently selected channel.
void SetNoisePowerSpectralDensity(Ptr< const SpectrumValue > noisePsd)
Set the noise power spectral density.
void SetPlmeCcaConfirmCallback(PlmeCcaConfirmCallback c)
set the callback for the end of a CCA, as part of the interconnections betweenthe PHY and the MAC.
Ptr< NetDevice > GetDevice(void) const
Get the associated NetDevice instance.
void EndTx(void)
Finish the transmission of a frame.
Abstract base class for Spectrum-aware PHY layers.
Simulation virtual time values and global simulation resolution.
Forward calls to a chain of Callback.
a unique identifier for an interface.
Callback< void, LrWpanPhyEnumeration, LrWpanPibAttributeIdentifier, LrWpanPhyPibAttributes * > PlmeGetAttributeConfirmCallback
This method implements the PD SAP: PlmeGetAttributeConfirm.
Callback< void, LrWpanPhyEnumeration > PdDataConfirmCallback
This method implements the PD SAP: PdDataConfirm.
LrWpanPhyOption
This Phy option will be used to index various Tables in IEEE802.15.4-2006.
Callback< void, uint32_t, Ptr< Packet >, uint8_t > PdDataIndicationCallback
This method implements the PD SAP: PdDataIndication.
LrWpanPhyEnumeration
IEEE802.15.4-2006 PHY Emumerations Table 18 in section 6.2.3.
Callback< void, LrWpanPhyEnumeration > PlmeSetTRXStateConfirmCallback
This method implements the PD SAP: PlmeSetTRXStateConfirm.
Callback< void, LrWpanPhyEnumeration, LrWpanPibAttributeIdentifier > PlmeSetAttributeConfirmCallback
This method implements the PD SAP: PlmeSetAttributeConfirm.
Callback< void, LrWpanPhyEnumeration, uint8_t > PlmeEdConfirmCallback
This method implements the PD SAP: PlmeEdConfirm.
LrWpanPibAttributeIdentifier
IEEE802.15.4-2006 PHY PIB Attribute Identifiers Table 23 in section 6.4.2.
Callback< void, LrWpanPhyEnumeration > PlmeCcaConfirmCallback
This method implements the PD SAP: PlmeCcaConfirm.
@ IEEE_802_15_4_868MHZ_BPSK
@ IEEE_802_15_4_915MHZ_OQPSK
@ IEEE_802_15_4_868MHZ_ASK
@ IEEE_802_15_4_868MHZ_OQPSK
@ IEEE_802_15_4_2_4GHZ_OQPSK
@ IEEE_802_15_4_915MHZ_ASK
@ IEEE_802_15_4_915MHZ_BPSK
@ IEEE_802_15_4_INVALID_PHY_OPTION
@ IEEE_802_15_4_PHY_BUSY_RX
@ IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE
@ IEEE_802_15_4_PHY_SUCCESS
@ IEEE_802_15_4_PHY_UNSPECIFIED
@ IEEE_802_15_4_PHY_TRX_OFF
@ IEEE_802_15_4_PHY_FORCE_TRX_OFF
@ IEEE_802_15_4_PHY_BUSY_TX
@ IEEE_802_15_4_PHY_RX_ON
@ IEEE_802_15_4_PHY_TX_ON
@ IEEE_802_15_4_PHY_INVALID_PARAMETER
@ IEEE_802_15_4_PHY_READ_ONLY
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Helper structure to manage the power measurement during ED.
double averagePower
Average measured power.
Time lastUpdate
Last update time.
Time measurementLength
Total measurement period.
This data structure provides the Bit rate and Symbol rate for a given channel See IEEE802....
double symbolRate
symbol rate
IEEE802.15.4-2006 PHY PIB Attributes Table 23 in section 6.4.2.
uint8_t phyTransmitPower
2 MSB: tolerance on the transmit power, 6 LSB: Tx power in dBm relative to 1mW (signed int in 2-compl...
uint8_t phyCCAMode
CCA mode.
double phySymbolsPerOctet
The number of symbols per octet.
uint8_t phyCurrentChannel
The RF channel to use.
uint32_t phySHRDuration
The duration of the synchronization header (SHR) in symbols.
uint32_t phyCurrentPage
Current channel page.
uint32_t phyMaxFrameDuration
The maximum number of symbols in a frame.