helps to manage and create IEEE 802.15.4 NetDevice objects More...
#include "lr-wpan-helper.h"
Public Member Functions | |
LrWpanHelper () | |
Create a LrWpan helper in an empty state. | |
LrWpanHelper (bool useMultiModelSpectrumChannel) | |
Create a LrWpan helper in an empty state. | |
LrWpanHelper (const LrWpanHelper &)=delete | |
~LrWpanHelper () override | |
void | AddMobility (Ptr< lrwpan::LrWpanPhy > phy, Ptr< MobilityModel > m) |
Add mobility model to a physical device. | |
template<typename... Ts> | |
void | AddPropagationLossModel (std::string name, Ts &&... args) |
int64_t | AssignStreams (NetDeviceContainer c, int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. | |
void | CreateAssociatedPan (NetDeviceContainer c, uint16_t panId) |
Creates an PAN with associated nodes and assigned addresses(16 and 64) from the nodes in the node container. | |
void | EnableLogComponents () |
Helper to enable all LrWpan log components with one statement. | |
Ptr< SpectrumChannel > | GetChannel () |
Get the channel associated to this helper. | |
NetDeviceContainer | Install (NodeContainer c) |
Install a LrWpanNetDevice and the associated structures (e.g., channel) in the nodes. | |
LrWpanHelper & | operator= (const LrWpanHelper &)=delete |
void | SetChannel (Ptr< SpectrumChannel > channel) |
Set the channel associated to this helper. | |
void | SetChannel (std::string channelName) |
Set the channel associated to this helper. | |
void | SetExtendedAddresses (NetDeviceContainer c) |
Set the extended 64 bit addresses (EUI-64) for a group of LrWpanNetDevices. | |
template<typename... Ts> | |
void | SetPropagationDelayModel (std::string name, Ts &&... args) |
Public Member Functions inherited from ns3::PcapHelperForDevice | |
PcapHelperForDevice () | |
Construct a PcapHelperForDevice. | |
virtual | ~PcapHelperForDevice () |
Destroy a PcapHelperForDevice. | |
void | EnablePcap (std::string prefix, NetDeviceContainer d, bool promiscuous=false) |
Enable pcap output on each device in the container which is of the appropriate type. | |
void | EnablePcap (std::string prefix, NodeContainer n, bool promiscuous=false) |
Enable pcap output on each device (which is of the appropriate type) in the nodes provided in the container. | |
void | EnablePcap (std::string prefix, Ptr< NetDevice > nd, bool promiscuous=false, bool explicitFilename=false) |
Enable pcap output the indicated net device. | |
void | EnablePcap (std::string prefix, std::string ndName, bool promiscuous=false, bool explicitFilename=false) |
Enable pcap output the indicated net device using a device previously named using the ns-3 object name service. | |
void | EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous=false) |
Enable pcap output on the device specified by a global node-id (of a previously created node) and associated device-id. | |
void | EnablePcapAll (std::string prefix, bool promiscuous=false) |
Enable pcap output on each device (which is of the appropriate type) in the set of all nodes created in the simulation. | |
Public Member Functions inherited from ns3::AsciiTraceHelperForDevice | |
AsciiTraceHelperForDevice () | |
Construct an AsciiTraceHelperForDevice. | |
virtual | ~AsciiTraceHelperForDevice () |
Destroy an AsciiTraceHelperForDevice. | |
void | EnableAscii (Ptr< OutputStreamWrapper > stream, NetDeviceContainer d) |
Enable ascii trace output on each device in the container which is of the appropriate type. | |
void | EnableAscii (Ptr< OutputStreamWrapper > stream, NodeContainer n) |
Enable ascii trace output on each device (which is of the appropriate type) in the nodes provided in the container. | |
void | EnableAscii (Ptr< OutputStreamWrapper > stream, Ptr< NetDevice > nd) |
Enable ascii trace output on the indicated net device. | |
void | EnableAscii (Ptr< OutputStreamWrapper > stream, std::string ndName) |
Enable ascii trace output the indicated net device using a device previously named using the ns-3 object name service. | |
void | EnableAscii (Ptr< OutputStreamWrapper > stream, uint32_t nodeid, uint32_t deviceid) |
Enable ascii trace output on the device specified by a global node-id (of a previously created node) and associated device-id. | |
void | EnableAscii (std::string prefix, NetDeviceContainer d) |
Enable ascii trace output on each device in the container which is of the appropriate type. | |
void | EnableAscii (std::string prefix, NodeContainer n) |
Enable ascii trace output on each device (which is of the appropriate type) in the nodes provided in the container. | |
void | EnableAscii (std::string prefix, Ptr< NetDevice > nd, bool explicitFilename=false) |
Enable ascii trace output on the indicated net device. | |
void | EnableAscii (std::string prefix, std::string ndName, bool explicitFilename=false) |
Enable ascii trace output the indicated net device using a device previously named using the ns-3 object name service. | |
void | EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename) |
Enable ascii trace output on the device specified by a global node-id (of a previously created node) and associated device-id. | |
void | EnableAsciiAll (Ptr< OutputStreamWrapper > stream) |
Enable ascii trace output on each device (which is of the appropriate type) in the set of all nodes created in the simulation. | |
void | EnableAsciiAll (std::string prefix) |
Enable ascii trace output on each device (which is of the appropriate type) in the set of all nodes created in the simulation. | |
Static Public Member Functions | |
static std::string | LrWpanMacStatePrinter (lrwpan::MacState e) |
Transform the LrWpanMacState enumeration into a printable string. | |
static std::string | LrWpanPhyEnumerationPrinter (lrwpan::PhyEnumeration e) |
Transform the LrWpanPhyEnumeration enumeration into a printable string. | |
Private Member Functions | |
void | EnableAsciiInternal (Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< NetDevice > nd, bool explicitFilename) override |
Enable ascii trace output on the indicated net device. | |
void | EnablePcapInternal (std::string prefix, Ptr< NetDevice > nd, bool promiscuous, bool explicitFilename) override |
Enable pcap output on the indicated net device. | |
Private Attributes | |
Ptr< SpectrumChannel > | m_channel |
channel to be used for the devices | |
ObjectFactory | m_propagationDelay |
propagation delay model | |
std::vector< ObjectFactory > | m_propagationLoss |
vector of propagation loss models | |
bool | m_useMultiModelSpectrumChannel |
indicates whether a MultiModelSpectrumChannel is used | |
helps to manage and create IEEE 802.15.4 NetDevice objects
This class can help to create IEEE 802.15.4 NetDevice objects and to configure their attributes during creation. It also contains additional helper functions used by client code.
Only one channel is created, and all devices attached to it. If multiple channels are needed, multiple helper objects must be used, or else the channel object must be replaced.
Definition at line 38 of file lr-wpan-helper.h.
ns3::LrWpanHelper::LrWpanHelper | ( | ) |
Create a LrWpan helper in an empty state.
Definition at line 52 of file lr-wpan-helper.cc.
References m_useMultiModelSpectrumChannel.
ns3::LrWpanHelper::LrWpanHelper | ( | bool | useMultiModelSpectrumChannel | ) |
Create a LrWpan helper in an empty state.
useMultiModelSpectrumChannel | use a MultiModelSpectrumChannel if true, a SingleModelSpectrumChannel otherwise |
Definition at line 57 of file lr-wpan-helper.cc.
References m_useMultiModelSpectrumChannel.
|
override |
Definition at line 62 of file lr-wpan-helper.cc.
References m_channel.
|
delete |
void ns3::LrWpanHelper::AddMobility | ( | Ptr< lrwpan::LrWpanPhy > | phy, |
Ptr< MobilityModel > | m ) |
Add mobility model to a physical device.
phy | the physical device |
m | the mobility model |
Definition at line 138 of file lr-wpan-helper.cc.
void ns3::LrWpanHelper::AddPropagationLossModel | ( | std::string | name, |
Ts &&... | args ) |
Ts | [deduced] Argument types |
name | the name of the model to set | |
[in] | args | Name and AttributeValue pairs to set. |
Add a propagation loss model to the set of currently-configured loss models.
Definition at line 218 of file lr-wpan-helper.h.
References m_propagationLoss.
Referenced by LrWpanAckTestCase::DoRun(), and Install().
int64_t ns3::LrWpanHelper::AssignStreams | ( | NetDeviceContainer | c, |
int64_t | stream ) |
Assign a fixed random variable stream number to the random variables used by this model.
Return the number of streams that have been assigned. The Install() method should have previously been called by the user.
c | NetDeviceContainer of the set of net devices for which the CsmaNetDevice should be modified to use a fixed stream |
stream | first stream index to use |
Definition at line 221 of file lr-wpan-helper.cc.
References ns3::NetDeviceContainer::Begin(), ns3::DynamicCast(), and ns3::NetDeviceContainer::End().
void ns3::LrWpanHelper::CreateAssociatedPan | ( | NetDeviceContainer | c, |
uint16_t | panId ) |
Creates an PAN with associated nodes and assigned addresses(16 and 64) from the nodes in the node container.
The first node in the container becomes the PAN coordinator.
c | a The node container with the nodes that will form the PAN. |
panId | The PAN identifier. |
Definition at line 238 of file lr-wpan-helper.cc.
References ns3::NetDeviceContainer::Begin(), ns3::Mac16Address::CopyFrom(), ns3::Mac64Address::CopyFrom(), ns3::DynamicCast(), ns3::NetDeviceContainer::End(), and NS_ABORT_MSG.
|
overrideprivatevirtual |
Enable ascii trace output on the indicated net device.
NetDevice-specific implementation mechanism for hooking the trace and writing to the trace file.
stream | The output stream object to use when logging ascii traces. |
prefix | Filename prefix to use for ascii trace files. |
nd | Net device for which you want to enable tracing. |
explicitFilename | Treat the prefix as an explicit filename if true |
Implements ns3::AsciiTraceHelperForDevice.
Definition at line 381 of file lr-wpan-helper.cc.
References ns3::AsciiLrWpanMacTransmitSinkWithContext(), ns3::AsciiLrWpanMacTransmitSinkWithoutContext(), ns3::AsciiTraceHelper::CreateFileStream(), ns3::AsciiTraceHelper::DefaultDequeueSinkWithContext(), ns3::AsciiTraceHelper::DefaultDropSinkWithContext(), ns3::AsciiTraceHelper::DefaultEnqueueSinkWithContext(), ns3::AsciiTraceHelper::DefaultReceiveSinkWithContext(), ns3::Packet::EnablePrinting(), ns3::AsciiTraceHelper::GetFilenameFromDevice(), ns3::AsciiTraceHelper::HookDefaultDequeueSinkWithoutContext(), ns3::AsciiTraceHelper::HookDefaultDropSinkWithoutContext(), ns3::AsciiTraceHelper::HookDefaultEnqueueSinkWithoutContext(), ns3::AsciiTraceHelper::HookDefaultReceiveSinkWithoutContext(), ns3::MakeBoundCallback(), and NS_LOG_INFO.
void ns3::LrWpanHelper::EnableLogComponents | ( | ) |
Helper to enable all LrWpan log components with one statement.
Definition at line 69 of file lr-wpan-helper.cc.
References ns3::LOG_LEVEL_ALL, ns3::LOG_PREFIX_FUNC, ns3::LOG_PREFIX_TIME, ns3::LogComponentEnable(), and ns3::LogComponentEnableAll().
|
overrideprivatevirtual |
Enable pcap output on the indicated net device.
NetDevice-specific implementation mechanism for hooking the trace and writing to the trace file.
prefix | Filename prefix to use for pcap files. |
nd | Net device for which you want to enable tracing. |
promiscuous | If true capture all possible packets available at the device. |
explicitFilename | Treat the prefix as an explicit filename if true |
Implements ns3::PcapHelperForDevice.
Definition at line 329 of file lr-wpan-helper.cc.
References ns3::PcapHelper::CreateFile(), ns3::PcapHelper::DLT_IEEE802_15_4, ns3::PcapHelper::GetFilenameFromDevice(), ns3::MakeBoundCallback(), NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::PcapSniffLrWpan().
Ptr< SpectrumChannel > ns3::LrWpanHelper::GetChannel | ( | ) |
Get the channel associated to this helper.
Definition at line 202 of file lr-wpan-helper.cc.
References m_channel.
NetDeviceContainer ns3::LrWpanHelper::Install | ( | NodeContainer | c | ) |
Install a LrWpanNetDevice and the associated structures (e.g., channel) in the nodes.
If the channel is not already initialized, it will be created as either a SingleModelSpectrumChannel or a MultiModelSpectrumChannel, depending on the useMultiModelSpectrumChannel flag. Additionally, a ConstantSpeedPropagationDelayModel will be set as the default delay model if no delay model is specified, and a LogDistancePropagationLossModel will be added to the channel if no propagation loss models are defined.
If the channel is already initialized but lacks either a PropagationDelayModel or a PropagationLossModel, an error will be raised.
c | a set of nodes |
Definition at line 144 of file lr-wpan-helper.cc.
References AddPropagationLossModel(), ns3::NodeContainer::Begin(), ns3::ObjectFactory::Create(), ns3::CreateObject(), ns3::NodeContainer::End(), ns3::ObjectFactory::IsTypeIdSet(), m_channel, m_propagationDelay, m_propagationLoss, m_useMultiModelSpectrumChannel, NS_FATAL_ERROR, and SetPropagationDelayModel().
Referenced by LrWpanAckTestCase::DoRun(), and ZigbeeRreqRetryTestCase::DoRun().
|
static |
Transform the LrWpanMacState enumeration into a printable string.
e | the LrWpanMacState |
Definition at line 120 of file lr-wpan-helper.cc.
References ns3::lrwpan::CHANNEL_ACCESS_FAILURE, ns3::lrwpan::CHANNEL_IDLE, ns3::lrwpan::MAC_IDLE, and ns3::lrwpan::SET_PHY_TX_ON.
|
static |
Transform the LrWpanPhyEnumeration enumeration into a printable string.
e | the LrWpanPhyEnumeration |
Definition at line 84 of file lr-wpan-helper.cc.
References ns3::lrwpan::IEEE_802_15_4_PHY_BUSY, ns3::lrwpan::IEEE_802_15_4_PHY_BUSY_RX, ns3::lrwpan::IEEE_802_15_4_PHY_BUSY_TX, ns3::lrwpan::IEEE_802_15_4_PHY_FORCE_TRX_OFF, ns3::lrwpan::IEEE_802_15_4_PHY_IDLE, ns3::lrwpan::IEEE_802_15_4_PHY_INVALID_PARAMETER, ns3::lrwpan::IEEE_802_15_4_PHY_READ_ONLY, ns3::lrwpan::IEEE_802_15_4_PHY_RX_ON, ns3::lrwpan::IEEE_802_15_4_PHY_SUCCESS, ns3::lrwpan::IEEE_802_15_4_PHY_TRX_OFF, ns3::lrwpan::IEEE_802_15_4_PHY_TX_ON, ns3::lrwpan::IEEE_802_15_4_PHY_UNSPECIFIED, and ns3::lrwpan::IEEE_802_15_4_PHY_UNSUPPORTED_ATTRIBUTE.
Referenced by LrWpanCcaTestCase::PlmeCcaConfirm(), LrWpanEdTestCase::PlmeEdConfirm(), StateChangeNotification(), TestRxOffWhenIdleAfterCsmaFailure::StateChangeNotificationDev0(), and TestRxOffWhenIdleAfterCsmaFailure::StateChangeNotificationDev2().
|
delete |
void ns3::LrWpanHelper::SetChannel | ( | Ptr< SpectrumChannel > | channel | ) |
Set the channel associated to this helper.
channel | the channel |
Definition at line 208 of file lr-wpan-helper.cc.
References m_channel.
void ns3::LrWpanHelper::SetChannel | ( | std::string | channelName | ) |
Set the channel associated to this helper.
channelName | the channel name |
Definition at line 214 of file lr-wpan-helper.cc.
References ns3::Names::Find(), and m_channel.
void ns3::LrWpanHelper::SetExtendedAddresses | ( | NetDeviceContainer | c | ) |
Set the extended 64 bit addresses (EUI-64) for a group of LrWpanNetDevices.
c | The NetDevice container. |
Definition at line 285 of file lr-wpan-helper.cc.
References ns3::NetDeviceContainer::Begin(), ns3::Mac64Address::CopyFrom(), ns3::DynamicCast(), and ns3::NetDeviceContainer::End().
void ns3::LrWpanHelper::SetPropagationDelayModel | ( | std::string | name, |
Ts &&... | args ) |
Ts | [deduced] Argument types |
name | the name of the model to set | |
[in] | args | Name and AttributeValue pairs to set. |
Configure a propagation delay for this channel.
Definition at line 225 of file lr-wpan-helper.h.
References m_propagationDelay.
Referenced by LrWpanAckTestCase::DoRun(), and Install().
|
private |
channel to be used for the devices
Definition at line 206 of file lr-wpan-helper.h.
Referenced by ~LrWpanHelper(), GetChannel(), Install(), SetChannel(), and SetChannel().
|
private |
propagation delay model
Definition at line 209 of file lr-wpan-helper.h.
Referenced by Install(), and SetPropagationDelayModel().
|
private |
vector of propagation loss models
Definition at line 208 of file lr-wpan-helper.h.
Referenced by AddPropagationLossModel(), and Install().
|
private |
indicates whether a MultiModelSpectrumChannel is used
Definition at line 207 of file lr-wpan-helper.h.
Referenced by LrWpanHelper(), LrWpanHelper(), and Install().