12#include "ns3/config.h"
13#include "ns3/csma-channel.h"
14#include "ns3/csma-net-device.h"
17#include "ns3/net-device-queue-interface.h"
18#include "ns3/object-factory.h"
19#include "ns3/packet.h"
20#include "ns3/simulator.h"
21#include "ns3/trace-helper.h"
70 NS_LOG_INFO(
"CsmaHelper::EnablePcapInternal(): Device "
71 << device <<
" not of type ns3::CsmaNetDevice");
113 NS_LOG_INFO(
"CsmaHelper::EnableAsciiInternal(): Device "
114 << device <<
" not of type ns3::CsmaNetDevice");
188 std::ostringstream
oss;
190 oss <<
"/NodeList/" <<
nd->GetNode()->GetId() <<
"/DeviceList/" <<
deviceid
191 <<
"/$ns3::CsmaNetDevice/MacRx";
197 <<
"/$ns3::CsmaNetDevice/TxQueue/Enqueue";
203 <<
"/$ns3::CsmaNetDevice/TxQueue/Dequeue";
209 <<
"/$ns3::CsmaNetDevice/TxQueue/Drop";
269 for (
auto i =
c.Begin();
i !=
c.End();
i++)
289 for (
auto i =
c.Begin();
i !=
c.End(); ++
i)
306 node->AddDevice(device);
308 device->SetQueue(queue);
309 device->Attach(channel);
314 ndqi->GetTxQueue(0)->ConnectQueueTraces(queue);
315 device->AggregateObject(
ndqi);
Manage ASCII trace files for device models.
std::string GetFilenameFromDevice(std::string prefix, Ptr< NetDevice > device, bool useObjectNames=true)
Let the ascii trace helper figure out a reasonable filename to use for an ascii trace file associated...
static void DefaultDropSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Drop default trace sink.
static void DefaultReceiveSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Receive default trace sink.
static void DefaultEnqueueSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Enqueue default trace sink.
static void DefaultDequeueSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Dequeue default trace sink.
Hold a value for an Attribute.
ObjectFactory m_channelFactory
factory for the channel
void SetDeviceAttribute(std::string n1, const AttributeValue &v1)
void EnableAsciiInternal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< NetDevice > nd, bool explicitFilename) override
Enable ascii trace output on the indicated net device.
bool m_enableFlowControl
whether to enable flow control
Ptr< NetDevice > InstallPriv(Ptr< Node > node, Ptr< CsmaChannel > channel) const
This method creates an ns3::CsmaNetDevice with the attributes configured by CsmaHelper::SetDeviceAttr...
void SetChannelAttribute(std::string n1, const AttributeValue &v1)
CsmaHelper()
Construct a CsmaHelper.
int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
NetDeviceContainer Install(Ptr< Node > node) const
This method creates an ns3::CsmaChannel with the attributes configured by CsmaHelper::SetChannelAttri...
void DisableFlowControl()
Disable flow control only if you know what you are doing.
ObjectFactory m_queueFactory
factory for the queues
void EnablePcapInternal(std::string prefix, Ptr< NetDevice > nd, bool promiscuous, bool explicitFilename) override
Enable pcap output on the indicated net device.
ObjectFactory m_deviceFactory
factory for the NetDevices
A Device for a Csma Network Link.
Ptr< Queue< Packet > > GetQueue() const
Get a copy of the attached Queue.
static Mac48Address Allocate()
Allocate a new Mac48Address.
holds a vector of ns3::NetDevice pointers
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
keep track of a set of node pointers.
Ptr< Object > Create() const
Create an Object instance of the configured TypeId.
void Set(const std::string &name, const AttributeValue &value, Args &&... args)
Set an attribute to be set during construction.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
static void EnablePrinting()
Enable printing packets metadata.
Manage pcap files for device models.
std::string GetFilenameFromDevice(std::string prefix, Ptr< NetDevice > device, bool useObjectNames=true)
Let the pcap helper figure out a reasonable filename to use for a pcap file associated with a device.
Smart pointer class similar to boost::intrusive_ptr.
Template class for packet Queues.
void Connect(std::string path, const CallbackBase &cb)
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
auto MakeBoundCallback(R(*fnPtr)(Args...), BArgs &&... bargs)
Make Callbacks with varying number of bound arguments.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.