22 #include "ns3/assert.h"
23 #include "ns3/abort.h"
24 #include "ns3/simulator.h"
25 #include "ns3/nstime.h"
26 #include "ns3/config.h"
39 : m_interval (Seconds (1.0))
47 std::ostringstream oss;
49 <<
"_" << std::setfill (
'0') << std::setw (3) << std::right << nodeid
50 <<
"_" << std::setfill (
'0') << std::setw (3) << std::right << deviceid;
51 athstats->Open (oss.str ());
54 oss <<
"/NodeList/" << nodeid <<
"/DeviceList/" << deviceid;
55 std::string devicepath = oss.str ();
74 EnableAthstats (filename, nd->GetNode ()->GetId (), nd->GetIfIndex ());
84 EnableAthstats (filename, dev->GetNode ()->GetId (), dev->GetIfIndex ());
114 static TypeId tid =
TypeId (
"ns3::AthstatsWifiTraceSink")
116 .AddConstructor<AthstatsWifiTraceSink> ()
117 .AddAttribute (
"Interval",
118 "Time interval between reports",
129 m_shortRetryCount (0),
130 m_longRetryCount (0),
131 m_exceededRetryCount (0),
133 m_phyRxErrorCount (0),
226 NS_LOG_FUNCTION (
this << context << packet <<
" mode=" << mode <<
" snr=" << snr );
265 m_writer->open (name.c_str (), std::ios_base::binary | std::ios_base::out);
266 NS_ABORT_MSG_IF (
m_writer->fail (),
"AthstatsWifiTraceSink::Open (): m_writer->open (" << name.c_str () <<
") failed");
281 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.
keep track of time values and allow control of 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)
void DevTxTrace(std::string context, Ptr< const Packet > p)
function to be called when the net device transmits a packet
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...
std::vector< Ptr< Node > >::const_iterator Iterator
State
The state of the PHY layer.
NS_OBJECT_ENSURE_REGISTERED(NullMessageSimulatorImpl)
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.
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
void Connect(std::string path, const CallbackBase &cb)
uint32_t m_shortRetryCount
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
#define NS_ABORT_MSG_UNLESS(cond, msg)
Abnormal program termination if cond is false.
trace sink for wifi device that mimics madwifi's athstats tool.
NS_LOG_COMPONENT_DEFINE("Athstats")
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
hold objects of type ns3::Time
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
holds a vector of ns3::NetDevice pointers
Ptr< NetDevice > GetDevice(uint32_t index) const
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
#define NS_LOG_LOGIC(msg)
uint32_t GetNDevices(void) const
void Open(std::string const &name)
Open a file for output.
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
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
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
Schedule an event to expire Now.
void EnableAthstats(std::string filename, uint32_t nodeid, uint32_t deviceid)
uint32_t m_phyRxErrorCount
#define NS_ASSERT_MSG(condition, message)
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
std::vector< Ptr< NetDevice > >::const_iterator Iterator
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
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...
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if cond is true.
Iterator End(void) const
Get an iterator which indicates past-the-last NetDevice in the container.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
void DevRxTrace(std::string context, Ptr< const Packet > p)
function to be called when the net device receives a packet
static TypeId GetTypeId(void)