22 #include "ns3/simulator.h"
23 #include "ns3/config.h"
41 std::ostringstream oss;
43 <<
"_" << std::setfill (
'0') << std::setw (3) << std::right << nodeid
44 <<
"_" << std::setfill (
'0') << std::setw (3) << std::right << deviceid;
45 athstats->Open (oss.str ());
48 oss <<
"/NodeList/" << nodeid <<
"/DeviceList/" << deviceid;
49 std::string devicepath = oss.str ();
68 EnableAthstats (filename, nd->GetNode ()->GetId (), nd->GetIfIndex ());
77 EnableAthstats (filename, dev->GetNode ()->GetId (), dev->GetIfIndex ());
101 static TypeId tid =
TypeId (
"ns3::AthstatsWifiTraceSink")
103 .SetGroupName (
"Wifi")
105 .AddAttribute (
"Interval",
106 "Time interval between reports",
117 m_shortRetryCount (0),
118 m_longRetryCount (0),
119 m_exceededRetryCount (0),
121 m_phyRxErrorCount (0),
211 NS_LOG_FUNCTION (
this << context << packet <<
" mode=" << mode <<
" snr=" << snr );
247 m_writer->open (name.c_str (), std::ios_base::binary | std::ios_base::out);
248 NS_ABORT_MSG_IF (
m_writer->fail (),
"AthstatsWifiTraceSink::Open (): m_writer->open (" << name.c_str () <<
") failed");
262 snprintf (str, 200,
"%8u %8u %7u %7u %7u %6u %6u %6u %7u %4u %3uM\n",
Iterator Begin(void) const
Get an iterator which refers to the first NetDevice in the container.
Simulation virtual time values and global simulation resolution.
void PhyRxErrorTrace(std::string context, Ptr< const Packet > packet, double snr)
Function to be called when a frame reception by the PHY layer of the considered device resulted in an...
Smart pointer class similar to boost::intrusive_ptr.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
void DevTxTrace(std::string context, Ptr< const Packet > p)
function to be called when the net device transmits a packet
uint32_t m_rxCount
receive count
void PhyStateTrace(std::string context, Time start, Time duration, enum WifiPhy::State state)
Function to be called when the PHY layer of the considered device changes state.
void TxFinalRtsFailedTrace(std::string context, Mac48Address address)
Function to be called when the transmission of a RTS frame has exceeded the retry limit...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
std::vector< Ptr< Node > >::const_iterator Iterator
Node container iterator.
uint32_t m_phyRxOkCount
phy receive ok count
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
virtual ~AthstatsWifiTraceSink()
Iterator End(void) const
Get an iterator which indicates past-the-last Node in the container.
void TxRtsFailedTrace(std::string context, Mac48Address address)
Function to be called when a RTS frame transmission by the considered device has failed.
uint32_t m_shortRetryCount
short retry count
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
trace sink for wifi device that mimics madwifi's athstats tool.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
std::ofstream * m_writer
output stream
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
AttributeValue implementation for Time.
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
uint32_t m_txCount
transmit count
holds a vector of ns3::NetDevice pointers
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void Connect(std::string path, const CallbackBase &cb)
uint32_t GetNDevices(void) const
void Open(std::string const &name)
Open a file for output.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
Iterator Begin(void) const
Get an iterator which refers to the first Node in the container.
uint32_t m_exceededRetryCount
exceeded retry count
void PhyTxTrace(std::string context, Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t txPower)
Function to be called when a frame is being transmitted by the PHY layer of the considered device...
uint32_t m_longRetryCount
long retry count
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
Schedule an event to expire Now.
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void EnableAthstats(std::string filename, uint32_t nodeid, uint32_t deviceid)
Enable athstats.
NS_LOG_LOGIC("Net device "<< nd<< " is not bridged")
uint32_t m_phyRxErrorCount
phy receive error count
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
uint32_t m_phyTxCount
phy transmit count
#define NS_ABORT_MSG_UNLESS(cond, msg)
Abnormal program termination if a condition is false, with a message.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
void WriteStats()
Write status function.
std::vector< Ptr< NetDevice > >::const_iterator Iterator
NetDevice container iterator.
Time Seconds(double value)
Construct a Time in the indicated unit.
void PhyRxOkTrace(std::string context, Ptr< const Packet > packet, double snr, WifiMode mode, enum WifiPreamble preamble)
Function to be called when the PHY layer of the considered device receives a frame.
void TxFinalDataFailedTrace(std::string context, Mac48Address address)
Function to be called when the transmission of a data frame has exceeded the retry limit...
A base class which provides memory management and object aggregation.
void TxDataFailedTrace(std::string context, Mac48Address address)
Function to be called when a data frame transmission by the considered device has failed...
void ResetCounters()
Reset counters function.
Iterator End(void) const
Get an iterator which indicates past-the-last NetDevice in the container.
State
The state of the PHY layer.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
void DevRxTrace(std::string context, Ptr< const Packet > p)
function to be called when the net device receives a packet
static TypeId GetTypeId(void)
Get the type ID.