A Discrete-Event Network Simulator
API
animation-interface.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 as
5  * published by the Free Software Foundation;
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  *
16  * Author: George F. Riley<riley@ece.gatech.edu>
17  * Author: John Abraham <john.abraham@gatech.edu>
18  * Contributions: Eugene Kalishenko <ydginster@gmail.com> (Open Source and Linux Laboratory http://dev.osll.ru/)
19  */
20 
21 // Interface between ns3 and the network animator
22 
23 #ifndef ANIMATION_INTERFACE__H
24 #define ANIMATION_INTERFACE__H
25 
26 #include <string>
27 #include <cstdio>
28 #include <map>
29 
30 #include "ns3/ptr.h"
31 #include "ns3/net-device.h"
32 #include "ns3/node-container.h"
33 #include "ns3/nstime.h"
34 #include "ns3/log.h"
35 #include "ns3/node-list.h"
36 #include "ns3/random-variable-stream.h"
37 #include "ns3/simulator.h"
38 #include "ns3/config.h"
39 #include "ns3/mac48-address.h"
40 #include "ns3/lte-ue-net-device.h"
41 #include "ns3/lte-enb-net-device.h"
42 #include "ns3/uan-phy-gen.h"
43 #include "ns3/wifi-phy.h"
44 #include "ns3/rectangle.h"
45 #include "ns3/ipv4.h"
46 #include "ns3/ipv4-l3-protocol.h"
47 
48 namespace ns3 {
49 
50 #define MAX_PKTS_PER_TRACE_FILE 100000
51 #define PURGE_INTERVAL 5
52 #define NETANIM_VERSION "netanim-3.108"
53 #define CHECK_STARTED_INTIMEWINDOW {if (!m_started || !IsInTimeWindow ()) return;}
54 #define CHECK_STARTED_INTIMEWINDOW_TRACKPACKETS {if (!m_started || !IsInTimeWindow () || !m_trackPackets) return;}
55 
56 
57 struct NodeSize;
58 
74 {
75 public:
76 
82  AnimationInterface (const std::string filename);
83 
87  typedef enum
88  {
91  } CounterType;
92 
98  typedef void (*AnimWriteCallback) (const char * str);
99 
105 
116 
126  void EnableQueueCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
127 
137  void EnableWifiMacCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
138 
148  void EnableWifiPhyCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
149 
161  AnimationInterface & EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval = Seconds (5));
162 
175  AnimationInterface & EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, NodeContainer nc, Time pollInterval = Seconds (5));
176 
183  static bool IsInitialized (void);
184 
192  void SetStartTime (Time t);
193 
201  void SetStopTime (Time t);
202 
212  void SetMaxPktsPerTraceFile (uint64_t maxPktsPerFile);
213 
223  void SetMobilityPollInterval (Time t);
224 
233 
239  void ResetAnimWriteCallback ();
240 
250  static void SetConstantPosition (Ptr <Node> n, double x, double y, double z=0);
251 
259  void UpdateNodeDescription (Ptr <Node> n, std::string descr);
260 
268  void UpdateNodeDescription (uint32_t nodeId, std::string descr);
269 
277  void UpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
278 
287  void UpdateNodeSize (uint32_t nodeId, double width, double height);
288 
298  void UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b);
299 
309  void UpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
310 
319  void UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter);
320 
333  void SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
334 
343  void UpdateLinkDescription (uint32_t fromNode, uint32_t toNode,
344  std::string linkDescription);
345 
354  void UpdateLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
355  std::string linkDescription);
356 
364  AnimationInterface & AddSourceDestination (uint32_t fromNodeId, std::string destinationIpv4Address);
365 
371  bool IsStarted (void);
372 
378  void SkipPacketTracing ();
379 
388  void EnablePacketMetadata (bool enable = true);
389 
396  uint64_t GetTracePktCount ();
397 
406  uint32_t AddNodeCounter (std::string counterName, CounterType counterType);
407 
415  uint32_t AddResource (std::string resourcePath);
416 
424  double GetNodeEnergyFraction (Ptr <const Node> node) const;
425 
426 private:
427 
432 
433  {
434  public:
435  AnimPacketInfo ();
441  AnimPacketInfo (const AnimPacketInfo & pInfo);
449  AnimPacketInfo(Ptr <const NetDevice> tx_nd, const Time fbTx, uint32_t txNodeId = 0);
451  uint32_t m_txNodeId;
452  double m_fbTx;
453  double m_lbTx;
454  double m_fbRx;
455  double m_lbRx;
457 
462  void ProcessRxBegin (Ptr <const NetDevice> nd, const double fbRx);
463  };
464 
466  typedef struct
467  {
468  uint8_t r;
469  uint8_t g;
470  uint8_t b;
471  } Rgb;
472 
474  typedef struct
475  {
476  uint32_t fromNode;
477  uint32_t toNode;
479 
481  typedef struct
482  {
483  std::string fromNodeDescription;
484  std::string toNodeDescription;
485  std::string linkDescription;
486  } LinkProperties;
487 
490  {
499  {
500  //Check if they are the same node pairs but flipped
501  if ( ((first.fromNode == second.fromNode) && (first.toNode == second.toNode)) ||
502  ((first.fromNode == second.toNode) && (first.toNode == second.fromNode)) )
503  {
504  return false;
505  }
506  std::ostringstream oss1;
507  oss1 << first.fromNode << first.toNode;
508  std::ostringstream oss2;
509  oss2 << second.fromNode << second.toNode;
510  return oss1.str () < oss2.str ();
511  }
512 
513  };
514 
516  typedef struct
517  {
518  std::string destination;
519  uint32_t fromNodeId;
521 
523  typedef struct
524  {
525  uint32_t nodeId;
526  std::string nextHop;
528 
530  typedef enum
531  {
539  } ProtocolType;
540 
542  typedef struct
543  {
544  double width;
545  double height;
546  } NodeSize;
547  typedef std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> LinkPropertiesMap;
548  typedef std::map <uint32_t, std::string> NodeDescriptionsMap;
549  typedef std::map <uint32_t, Rgb> NodeColorsMap;
550  typedef std::map<uint64_t, AnimPacketInfo> AnimUidPacketInfoMap;
551  typedef std::map <uint32_t, double> EnergyFractionMap;
552  typedef std::vector <Ipv4RoutePathElement> Ipv4RoutePathElements;
553  typedef std::multimap <uint32_t, std::string> NodeIdIpv4Map;
554  typedef std::multimap <uint32_t, std::string> NodeIdIpv6Map;
555  typedef std::pair <uint32_t, std::string> NodeIdIpv4Pair;
556  typedef std::pair <uint32_t, std::string> NodeIdIpv6Pair;
557 
558 
559  // Node Counters
560  typedef std::map <uint32_t, uint64_t> NodeCounterMap64;
561 
562 
565  {
566  public:
573  AnimXmlElement (std::string tagName, bool emptyElement=true);
574  template <typename T>
581  void AddAttribute (std::string attribute, T value, bool xmlEscape=false);
586  void SetText(std::string text);
591  void AppendChild(AnimXmlElement e);
597  std::string ToString(bool autoClose = true);
598 
599  private:
600  std::string m_tagName;
601  std::string m_text;
602  std::vector<std::string> m_attributes;
603  std::vector<std::string> m_children;
604 
605  };
606 
607 
608 
609  // ##### State #####
610 
611  FILE * m_f;
612  FILE * m_routingF;
614  std::string m_outputFileName;
615  uint64_t gAnimUid ;
617  bool m_started;
621  uint64_t m_maxPktsPerFile;
622  std::string m_originalFileName;
624  std::string m_routingFileName;
637 
638  // Counter ID
640 
644 
648 
653 
656 
664 
665  std::map <uint32_t, Vector> m_nodeLocation;
666  std::map <std::string, uint32_t> m_macToNodeIdMap;
667  std::map <std::string, uint32_t> m_ipv4ToNodeIdMap;
668  std::map <std::string, uint32_t> m_ipv6ToNodeIdMap;
671 
676  uint64_t m_currentPktCount;
677  std::vector <Ipv4RouteTrackElement> m_ipv4RouteTrackElements;
678  std::map <uint32_t, NodeSize> m_nodeSizes;
679  std::vector <std::string> m_resources;
680  std::vector <std::string> m_nodeCounters;
681 
682  /* Value-added custom counters */
699 
705  const std::vector<std::string> GetElementsFromContext (const std::string& context) const;
711  Ptr <Node> GetNodeFromContext (const std::string& context) const;
717  Ptr <NetDevice> GetNetDeviceFromContext (std::string context);
718 
719  // ##### General #####
725  void StartAnimation (bool restart = false);
732  void SetOutputFile (const std::string& fn, bool routing = false);
738  void StopAnimation (bool onlyAnimation = false);
744  std::string CounterTypeToString (CounterType counterType);
750  std::string GetPacketMetadata (Ptr<const Packet> p);
756  void AddByteTag (uint64_t animUid, Ptr<const Packet> p);
764  int WriteN (const char* data, uint32_t count, FILE * f);
771  int WriteN (const std::string& st, FILE * f);
777  std::string GetMacAddress (Ptr <NetDevice> nd);
783  std::string GetIpv4Address (Ptr <NetDevice> nd);
789  std::string GetIpv6Address(Ptr <NetDevice> nd);
795  std::vector<std::string> GetIpv4Addresses (Ptr <NetDevice> nd);
801  std::vector<std::string> GetIpv6Addresses (Ptr <NetDevice> nd);
802 
807  std::string GetNetAnimVersion ();
809  void MobilityAutoCheck ();
816  bool IsPacketPending (uint64_t animUid, ProtocolType protocolType);
821  void PurgePendingPackets (ProtocolType protocolType);
833  std::string ProtocolTypeToString (ProtocolType protocolType);
840  void AddPendingPacket (ProtocolType protocolType, uint64_t animUid, AnimPacketInfo pktInfo);
852  void AddToIpv4AddressNodeIdTable (std::string ipv4Address, uint32_t nodeId);
858  void AddToIpv4AddressNodeIdTable (std::vector<std::string> ipv4Addresses, uint32_t nodeId);
864  void AddToIpv6AddressNodeIdTable (std::string ipv6Address, uint32_t nodeId);
870  void AddToIpv6AddressNodeIdTable (std::vector<std::string> ipv6Addresses, uint32_t nodeId);
875  bool IsInTimeWindow ();
877  void CheckMaxPktsPerTraceFile ();
878 
880  void TrackWifiPhyCounters ();
882  void TrackWifiMacCounters ();
886  void TrackQueueCounters ();
887  // ##### Routing #####
889  void TrackIpv4Route ();
891  void TrackIpv4RoutePaths ();
897  std::string GetIpv4RoutingTable (Ptr <Node> n);
904  void RecursiveIpv4RoutePathSearch (std::string from, std::string to, Ipv4RoutePathElements &rpElements);
911  void WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
912 
913 
914  // ##### Trace #####
920  void EnqueueTrace (std::string context, Ptr<const Packet>);
926  void DequeueTrace (std::string context, Ptr<const Packet>);
932  void QueueDropTrace (std::string context, Ptr<const Packet>);
940  void Ipv4TxTrace (std::string context,
941  Ptr<const Packet> p, Ptr<Ipv4> ipv4,
942  uint32_t interfaceIndex);
950  void Ipv4RxTrace (std::string context,
952  uint32_t interfaceIndex);
962  void Ipv4DropTrace (std::string context,
963  const Ipv4Header & ipv4Header,
965  Ipv4L3Protocol::DropReason dropReason, Ptr<Ipv4> ipv4,
966  uint32_t interfaceIndex);
967 
973  void WifiMacTxTrace (std::string context, Ptr<const Packet> p);
979  void WifiMacTxDropTrace (std::string context, Ptr<const Packet> p);
985  void WifiMacRxTrace (std::string context, Ptr<const Packet> p);
991  void WifiMacRxDropTrace (std::string context, Ptr<const Packet> p);
997  void WifiPhyTxDropTrace (std::string context, Ptr<const Packet> p);
1004  void WifiPhyRxDropTrace (std::string context, Ptr<const Packet> p, WifiPhyRxfailureReason reason);
1010  void LrWpanMacTxTrace (std::string context,
1011  Ptr<const Packet> p);
1017  void LrWpanMacTxDropTrace (std::string context,
1018  Ptr<const Packet> p);
1024  void LrWpanMacRxTrace (std::string context,
1025  Ptr<const Packet> p);
1031  void LrWpanMacRxDropTrace (std::string context,
1032  Ptr<const Packet> p);
1042  void DevTxTrace (std::string context,
1044  Ptr<NetDevice> tx,
1045  Ptr<NetDevice> rx,
1046  Time txTime,
1047  Time rxTime);
1054  void WifiPhyTxBeginTrace (std::string context, Ptr<const Packet> p, double txPowerW);
1061  void WifiPhyRxBeginTrace (std::string context, Ptr<const Packet> p);
1067  void WavePhyTxBeginTrace (std::string context,
1068  Ptr<const Packet> p);
1075  void WavePhyRxBeginTrace (std::string context,
1076  Ptr<const Packet> p);
1083  void LrWpanPhyTxBeginTrace (std::string context,
1084  Ptr<const Packet> p);
1091  void LrWpanPhyRxBeginTrace (std::string context,
1092  Ptr<const Packet> p);
1099  void WimaxTxTrace (std::string context,
1101  const Mac48Address & m);
1108  void WimaxRxTrace (std::string context,
1110  const Mac48Address & m);
1116  void CsmaPhyTxBeginTrace (std::string context, Ptr<const Packet> p);
1123  void CsmaPhyTxEndTrace (std::string context, Ptr<const Packet> p);
1130  void CsmaPhyRxEndTrace (std::string context, Ptr<const Packet> p);
1137  void CsmaMacRxTrace (std::string context, Ptr<const Packet> p);
1144  void LteTxTrace (std::string context,
1146  const Mac48Address & m);
1153  void LteRxTrace (std::string context,
1155  const Mac48Address & m);
1161  void LteSpectrumPhyTxStart (std::string context, Ptr<const PacketBurst> pb);
1167  void LteSpectrumPhyRxStart (std::string context, Ptr<const PacketBurst> pb);
1173  void UanPhyGenTxTrace (std::string context, Ptr<const Packet>);
1179  void UanPhyGenRxTrace (std::string context, Ptr<const Packet>);
1186  void RemainingEnergyTrace (std::string context, double previousEnergy, double currentEnergy);
1193  void GenericWirelessTxTrace (std::string context, Ptr<const Packet> p, ProtocolType protocolType);
1200  void GenericWirelessRxTrace (std::string context, Ptr<const Packet> p, ProtocolType protocolType);
1201 
1202 
1204  void ConnectCallbacks ();
1206  void ConnectLte ();
1213  void ConnectLteUe (Ptr <Node> n, Ptr <LteUeNetDevice> nd, uint32_t devIndex);
1220  void ConnectLteEnb (Ptr <Node> n, Ptr <LteEnbNetDevice> nd, uint32_t devIndex);
1221 
1222 
1223  // ##### Mobility #####
1229  Vector GetPosition (Ptr <Node> n);
1235  Vector UpdatePosition (Ptr <Node> n);
1242  Vector UpdatePosition (Ptr <Node> n, Vector v);
1248  Vector UpdatePosition (Ptr <NetDevice> ndev);
1255  bool NodeHasMoved (Ptr <Node> n, Vector newLocation);
1260  std::vector < Ptr <Node> > GetMovedNodes ();
1266 
1267 
1268  // ##### XML Helpers #####
1269 
1276  void WriteNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType);
1281  void WriteNodeUpdate (uint32_t nodeId);
1288  void OutputWirelessPacketTxInfo (Ptr<const Packet> p, AnimPacketInfo& pktInfo, uint64_t animUid);
1295  void OutputWirelessPacketRxInfo (Ptr<const Packet> p, AnimPacketInfo& pktInfo, uint64_t animUid);
1303  void WriteLinkProperties ();
1305  void WriteIpv4Addresses ();
1307  void WriteIpv6Addresses ();
1309  void WriteNodes ();
1311  void WriteNodeColors ();
1313  void WriteNodeSizes ();
1315  void WriteNodeEnergies ();
1320  void WriteXmlAnim (bool routing = false);
1327  void WriteXmlUpdateNodePosition (uint32_t nodeId, double x, double y);
1335  void WriteXmlUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
1340  void WriteXmlUpdateNodeDescription (uint32_t nodeId);
1347  void WriteXmlUpdateNodeSize (uint32_t nodeId, double width, double height);
1353  void WriteXmlAddResource (uint32_t resourceId, std::string resourcePath);
1360  void WriteXmlAddNodeCounter (uint32_t counterId, std::string counterName, CounterType counterType);
1366  void WriteXmlUpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
1373  void WriteXmlUpdateNodeCounter (uint32_t counterId, uint32_t nodeId, double value);
1381  void WriteXmlNode (uint32_t id, uint32_t sysId, double locX, double locY);
1388  void WriteXmlLink (uint32_t fromId, uint32_t toLp, uint32_t toId);
1395  void WriteXmlUpdateLink (uint32_t fromId, uint32_t toId, std::string linkDescription);
1407  void WriteXmlP (std::string pktType,
1408  uint32_t fId,
1409  double fbTx,
1410  double lbTx,
1411  uint32_t tId,
1412  double fbRx,
1413  double lbRx,
1414  std::string metaInfo = "");
1423  void WriteXmlP (uint64_t animUid, std::string pktType, uint32_t fId, double fbTx, double lbTx);
1431  void WriteXmlPRef (uint64_t animUid, uint32_t fId, double fbTx, std::string metaInfo = "");
1437  void WriteXmlClose (std::string name, bool routing = false);
1444  void WriteXmlNonP2pLinkProperties (uint32_t id, std::string ipAddress, std::string channelType);
1450  void WriteXmlRouting (uint32_t id, std::string routingInfo);
1457  void WriteXmlRp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
1467  void WriteXmlUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
1473  void WriteXmlIpv4Addresses (uint32_t nodeId, std::vector<std::string> ipv4Addresses);
1479  void WriteXmlIpv6Addresses (uint32_t nodeId, std::vector<std::string> ipv6Addresses);
1480 
1481 };
1482 
1483 
1484 
1485 
1497 class AnimByteTag : public Tag
1498 {
1499 public:
1500 
1506  static TypeId GetTypeId (void);
1507 
1513  virtual TypeId GetInstanceTypeId (void) const;
1514 
1520  virtual uint32_t GetSerializedSize (void) const;
1521 
1527  virtual void Serialize (TagBuffer i) const;
1528 
1534  virtual void Deserialize (TagBuffer i);
1535 
1541  virtual void Print (std::ostream &os) const;
1542 
1548  void Set (uint64_t AnimUid);
1549 
1555  uint64_t Get (void) const;
1556 
1557 private:
1558  uint64_t m_AnimUid;
1559 };
1560 
1561 
1562 
1563 }
1564 #endif
1565 
void GenericWirelessTxTrace(std::string context, Ptr< const Packet > p, ProtocolType protocolType)
Generic wireless transmit trace function.
uint64_t GetAnimUidFromPacket(Ptr< const Packet >)
Get anim UID from packet function.
void Set(uint64_t AnimUid)
Set global Uid in tag.
uint64_t GetTracePktCount()
Get trace file packet count (This used only for testing)
void UpdateNodeImage(uint32_t nodeId, uint32_t resourceId)
Helper function to update the image of a node.
void WriteXmlRp(uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
Write XMLRP function.
void AddPendingPacket(ProtocolType protocolType, uint64_t animUid, AnimPacketInfo pktInfo)
Add pending packet function.
void CsmaMacRxTrace(std::string context, Ptr< const Packet > p)
CSMA MAC receive trace function.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
void MobilityAutoCheck()
Mobility auto check function.
void WriteXmlUpdateLink(uint32_t fromId, uint32_t toId, std::string linkDescription)
Write XML update link counter function.
NodeCounterMap64 m_nodeQueueDequeue
node queue dequeue
uint64_t Get(void) const
Get Uid in tag.
void LteTxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
LTE transmit trace function.
std::map< P2pLinkNodeIdPair, LinkProperties, LinkPairCompare > LinkPropertiesMap
LinkPropertiesMap typedef.
void LrWpanMacTxDropTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC transmit drop trace function.
Definition: second.py:1
std::vector< std::string > m_children
list of children
FILE * m_routingF
File handle for routing table output (0 if None);.
std::string GetIpv4Address(Ptr< NetDevice > nd)
Get IPv4 address.
std::string CounterTypeToString(CounterType counterType)
Counter type to string function.
AnimationInterface(const std::string filename)
Constructor.
std::map< uint32_t, std::string > NodeDescriptionsMap
NodeDescriptionsMap typedef.
AnimationInterface & AddSourceDestination(uint32_t fromNodeId, std::string destinationIpv4Address)
Helper function to print the routing path from a source node to destination IP.
void WriteXmlUpdateNodeImage(uint32_t nodeId, uint32_t resourceId)
Write XML update node image function.
std::string GetIpv6Address(Ptr< NetDevice > nd)
Get IPv6 address.
virtual void Serialize(TagBuffer i) const
Serialize function.
NodeCounterMap64 m_nodeLrWpanMacRxDrop
node LR-WPAN MAC receive drop
std::map< std::string, uint32_t > m_ipv6ToNodeIdMap
IPv6 to node ID map.
static TypeId GetTypeId(void)
Get Type Id.
void WriteXmlIpv6Addresses(uint32_t nodeId, std::vector< std::string > ipv6Addresses)
Write XML Ipv6 addresses function.
void WriteNodes()
Write nodes function.
void TrackIpv4L3ProtocolCounters()
Track IPv4 L3 protocol counters function.
void CsmaPhyTxBeginTrace(std::string context, Ptr< const Packet > p)
CSMA Phy transmit begin trace function.
AnimUidPacketInfoMap m_pendingWifiPackets
pending wifi packets
void WriteXmlUpdateNodePosition(uint32_t nodeId, double x, double y)
Write XML update node position function.
NodeDescriptionsMap m_nodeDescriptions
node description
std::string ToString(bool autoClose=true)
Get text for the element function.
static bool IsInitialized(void)
Check if AnimationInterface is initialized.
uint32_t m_ipv4L3ProtocolTxCounterId
IPv4 L3 protocol transmit counter ID.
void WifiMacTxDropTrace(std::string context, Ptr< const Packet > p)
wifi MAC transmit drop trace function
void PurgePendingPackets(ProtocolType protocolType)
Purge pending packets function.
uint32_t m_queueEnqueueCounterId
queue enqueue counter ID
uint64_t m_maxPktsPerFile
maximum pakets per file
void QueueDropTrace(std::string context, Ptr< const Packet >)
Queue trace function.
void WifiMacRxTrace(std::string context, Ptr< const Packet > p)
wifi MAC receive trace function
std::map< std::string, uint32_t > m_macToNodeIdMap
MAC to node ID map.
Time m_ipv4L3ProtocolCountersPollInterval
IPv4 L3 protocol counters poll interval.
void LteSpectrumPhyRxStart(std::string context, Ptr< const PacketBurst > pb)
LTE Spectrum Phy receive start function.
void TrackQueueCounters()
Track queue counters function.
void TrackWifiPhyCounters()
Track wifi phy counters function.
Ptr< NetDevice > GetNetDeviceFromContext(std::string context)
Get net device from context.
void EnableWifiPhyCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Wifi Phy Counters such as TxDrop, RxDrop.
void TrackIpv4RoutePaths()
Track IPv4 route paths function.
void WifiPhyRxDropTrace(std::string context, Ptr< const Packet > p, WifiPhyRxfailureReason reason)
wifi Phy receive drop trace function
NodeContainer m_routingNc
routing node container
Time m_ipv4L3ProtocolCountersStopTime
IPv4 L3 protocol counters stop time.
void WriteXmlAnim(bool routing=false)
Write XML anim function.
uint64_t m_currentPktCount
current packet count
std::pair< uint32_t, std::string > NodeIdIpv6Pair
NodeIdIpv6Pair typedef.
void WimaxRxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
WIMax receive trace function.
NodeCounterMap64 m_nodeWifiPhyTxDrop
node wifi Phy transmit drop
void LrWpanMacRxDropTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC receive drop trace function.
void Ipv4RxTrace(std::string context, Ptr< const Packet > p, Ptr< Ipv4 > ipv4, uint32_t interfaceIndex)
IPv4 receive trace function.
std::map< std::string, uint32_t > m_ipv4ToNodeIdMap
IPv4 to node ID map.
void WavePhyTxBeginTrace(std::string context, Ptr< const Packet > p)
WAVE Phy transmit begin trace function.
void UpdateNodeSize(uint32_t nodeId, double width, double height)
Helper function to update the size of a node.
virtual void Deserialize(TagBuffer i)
Deserialize function.
void WriteXmlAddNodeCounter(uint32_t counterId, std::string counterName, CounterType counterType)
Write XML add node counter function.
void ProcessRxBegin(Ptr< const NetDevice > nd, const double fbRx)
Process receive begin.
void ConnectLteEnb(Ptr< Node > n, Ptr< LteEnbNetDevice > nd, uint32_t devIndex)
Connect LTE ENB function.
std::string GetIpv4RoutingTable(Ptr< Node > n)
Get IPv4 routing table function.
void WriteXmlUpdateNodeSize(uint32_t nodeId, double width, double height)
Write XML update node size function.
void WriteXmlUpdateNodeColor(uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
Write XML update node color function.
void WriteIpv6Addresses()
Write IPv6 Addresses function.
void SetStartTime(Time t)
Specify the time at which capture should start.
void SetStopTime(Time t)
Specify the time at which capture should stop.
std::vector< Ptr< Node > > GetMovedNodes()
Get moved nodes function.
LinkPropertiesMap m_linkProperties
link properties
Time m_queueCountersPollInterval
queue counters poll interval
void WifiPhyRxBeginTrace(std::string context, Ptr< const Packet > p)
wifi Phy receive begin trace function
void UpdateNodeColor(Ptr< Node > n, uint8_t r, uint8_t g, uint8_t b)
Helper function to update the node color.
double stopTime
void WriteXmlAddResource(uint32_t resourceId, std::string resourcePath)
Write XML add resource function.
void ResetAnimWriteCallback()
Reset the write callback function.
NodeCounterMap64 m_nodeWifiMacTx
node wifi MAC transmit
AnimWriteCallback m_writeCallback
write callback
void UanPhyGenTxTrace(std::string context, Ptr< const Packet >)
UAN Phy gen transmit trace function.
static void SetConstantPosition(Ptr< Node > n, double x, double y, double z=0)
Helper function to set Constant Position for a given node.
std::map< uint32_t, uint64_t > NodeCounterMap64
NodeCounterMap64 typedef.
void CheckMaxPktsPerTraceFile()
Check maximum packets per trace file function.
void AddToIpv6AddressNodeIdTable(std::string ipv6Address, uint32_t nodeId)
Add to IPv6 address node ID table function.
DropReason
Reason why a packet has been dropped.
void ConnectLteUe(Ptr< Node > n, Ptr< LteUeNetDevice > nd, uint32_t devIndex)
Connect LTE ue function.
void WriteNodeColors()
Write node colors function.
std::map< uint32_t, Vector > m_nodeLocation
node location
Packet header for IPv4.
Definition: ipv4-header.h:33
std::multimap< uint32_t, std::string > NodeIdIpv6Map
NodeIdIpv6Map typedef.
void SetBackgroundImage(std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
Helper function to set the background image.
void LteRxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
LTE receive trace function.
uint32_t m_ipv4L3ProtocolRxCounterId
IPv4 L3 protocol receive counter ID.
void CsmaPhyRxEndTrace(std::string context, Ptr< const Packet > p)
CSMA Phy receive end trace function.
NodeIdIpv6Map m_nodeIdIpv6Map
node ID to IPv6 map
void RemainingEnergyTrace(std::string context, double previousEnergy, double currentEnergy)
Remaining energy trace function.
uint32_t m_wifiPhyTxDropCounterId
wifi Phy transmit drop counter ID
void WriteXmlClose(std::string name, bool routing=false)
Write XML close function.
void OutputWirelessPacketTxInfo(Ptr< const Packet > p, AnimPacketInfo &pktInfo, uint64_t animUid)
Output wireless packet transmit info.
int WriteN(const char *data, uint32_t count, FILE *f)
WriteN function.
void EnableWifiMacCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Wifi Mac Counters such as Tx, TxDrop, Rx, RxDrop.
void UpdateNodeCounter(uint32_t nodeCounterId, uint32_t nodeId, double counter)
Helper function to update a node&#39;s counter referenced by the nodeCounterId.
virtual TypeId GetInstanceTypeId(void) const
Get Instance Type Id.
uint32_t m_queueDropCounterId
queue drop counter ID
uint32_t AddNodeCounter(std::string counterName, CounterType counterType)
Setup a node counter.
~AnimationInterface()
Destructor for the animator interface.
AnimUidPacketInfoMap m_pendingWimaxPackets
pending wimax packets
std::vector< std::string > GetIpv4Addresses(Ptr< NetDevice > nd)
Get IPv4 addresses.
EnergyFractionMap m_nodeEnergyFraction
node energy fraction
bool m_trackPackets
track packets
void SkipPacketTracing()
Do not trace packets.
double startTime
uint8_t data[writeSize]
std::string GetNetAnimVersion()
Get netanim version function.
void WriteNodeUpdate(uint32_t nodeId)
Write node update function.
void RecursiveIpv4RoutePathSearch(std::string from, std::string to, Ipv4RoutePathElements &rpElements)
Recursive IPv4 route path search function.
void WriteXmlNonP2pLinkProperties(uint32_t id, std::string ipAddress, std::string channelType)
Write XML non P2P link properties function.
std::string m_outputFileName
output file name
FILE * m_f
File handle for output (0 if none)
void DequeueTrace(std::string context, Ptr< const Packet >)
Dequeue trace function.
NodeCounterMap64 m_nodeIpv4Drop
node IPv4 drop
void UanPhyGenRxTrace(std::string context, Ptr< const Packet >)
UAN Phy gen receive trace function.
std::pair< uint32_t, std::string > NodeIdIpv4Pair
NodeIdIpv4Pair typedef.
void WriteXmlP(std::string pktType, uint32_t fId, double fbTx, double lbTx, uint32_t tId, double fbRx, double lbRx, std::string metaInfo="")
Write XMLP function.
void StartAnimation(bool restart=false)
Start animation function.
void WriteXmlNode(uint32_t id, uint32_t sysId, double locX, double locY)
Write XML node function.
std::vector< Ipv4RoutePathElement > Ipv4RoutePathElements
Ipv4RoutePathElements typedef.
void Ipv4TxTrace(std::string context, Ptr< const Packet > p, Ptr< Ipv4 > ipv4, uint32_t interfaceIndex)
IPv4 transmit trace function.
AnimationInterface & EnableIpv4RouteTracking(std::string fileName, Time startTime, Time stopTime, Time pollInterval=Seconds(5))
Enable tracking of the Ipv4 routing table for all Nodes.
AnimXmlElement(std::string tagName, bool emptyElement=true)
Constructor.
AnimUidPacketInfoMap m_pendingLrWpanPackets
pending LR-WPAN packets
std::map< uint32_t, NodeSize > m_nodeSizes
node sizes
void WifiPhyTxDropTrace(std::string context, Ptr< const Packet > p)
wifi Phy transmit drop trace function
std::map< uint32_t, double > EnergyFractionMap
EnergyFractionMap typedef.
void WavePhyRxBeginTrace(std::string context, Ptr< const Packet > p)
WAVE Phy receive begin trace function.
void CsmaPhyTxEndTrace(std::string context, Ptr< const Packet > p)
CSMA Phy transmit end trace function.
std::string GetPacketMetadata(Ptr< const Packet > p)
Get packet metadata function.
Time m_wifiMacCountersPollInterval
wifi MAC counters poll interval
std::vector< std::string > m_resources
resources
void WriteXmlIpv4Addresses(uint32_t nodeId, std::vector< std::string > ipv4Addresses)
Write XML Ipv4 addresses function.
NodeIdIpv4Map m_nodeIdIpv4Map
node ID to IPv4 map
void DevTxTrace(std::string context, Ptr< const Packet > p, Ptr< NetDevice > tx, Ptr< NetDevice > rx, Time txTime, Time rxTime)
Device transmit trace function.
Time m_wifiPhyCountersPollInterval
wifi Phy counters poll interval
double f(double x, void *params)
Definition: 80211b.c:70
tag a set of bytes in a packet
Definition: tag.h:36
NodeColorsMap m_nodeColors
node colors
void WriteXmlRouting(uint32_t id, std::string routingInfo)
Write XML routing function.
NodeCounterMap64 m_nodeLrWpanMacTxDrop
node LR-WPAN MAC transmit drop
void WriteXmlPRef(uint64_t animUid, uint32_t fId, double fbTx, std::string metaInfo="")
Write XMLP Ref function.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint32_t m_wifiMacRxDropCounterId
wifi MAC receive drop counter ID
std::vector< std::string > m_attributes
list of attributes
keep track of a set of node pointers.
void UpdateLinkDescription(uint32_t fromNode, uint32_t toNode, std::string linkDescription)
Helper function to update the description for a link.
void(* AnimWriteCallback)(const char *str)
typedef for WriteCallBack used for listening to AnimationInterface write messages ...
uint32_t AddResource(std::string resourcePath)
Add a resource such as the path to an image file.
ProtocolType
ProtocolType enumeration.
uint64_t m_AnimUid
the UID
NodeCounterMap64 m_nodeLrWpanMacTx
node LR-WPAN MAC transmit
void ConnectCallbacks()
Connect callbacks function.
void SetMaxPktsPerTraceFile(uint64_t maxPktsPerFile)
Set Max packets per trace file.
bool NodeHasMoved(Ptr< Node > n, Vector newLocation)
Node has moved function.
void WriteNodeEnergies()
Write node energies function.
uint64_t gAnimUid
Packet unique identifier used by AnimationInterface.
std::vector< std::string > GetIpv6Addresses(Ptr< NetDevice > nd)
Get IPv6 addresses.
void AddToIpv4AddressNodeIdTable(std::string ipv4Address, uint32_t nodeId)
Add to IPv4 address node ID table function.
an EUI-48 address
Definition: mac48-address.h:43
Time m_routingPollInterval
routing poll interval
NodeCounterMap64 m_nodeQueueDrop
node queue drop
uint32_t m_wifiMacRxCounterId
wifi MAC receive counter ID
void LrWpanPhyRxBeginTrace(std::string context, Ptr< const Packet > p)
LR-WPAN Phy receive begin trace function.
AnimUidPacketInfoMap m_pendingLtePackets
pending LTE packets
void TrackWifiMacCounters()
Track wifi MAC counters function.
void EnablePacketMetadata(bool enable=true)
Enable Packet metadata.
std::map< uint64_t, AnimPacketInfo > AnimUidPacketInfoMap
AnimUidPacketInfoMap typedef.
void WriteXmlUpdateNodeDescription(uint32_t nodeId)
Write XML update node description function.
void AppendChild(AnimXmlElement e)
Append child function.
void EnqueueTrace(std::string context, Ptr< const Packet >)
Enqueue trace function.
Byte tag using by Anim to uniquely identify packets.
uint32_t m_wifiMacTxCounterId
wifi MAC transmit counter ID
void StopAnimation(bool onlyAnimation=false)
Stop animation function.
const std::vector< std::string > GetElementsFromContext(const std::string &context) const
Get elements from context.
void WriteXmlUpdateNodeCounter(uint32_t counterId, uint32_t nodeId, double value)
Write XML update node counter function.
AnimUidPacketInfoMap m_pendingWavePackets
pending WAVE packets
Vector UpdatePosition(Ptr< Node > n)
Update position function.
void LrWpanMacRxTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC receive trace function.
Ptr< const NetDevice > m_rxnd
receive device
void WifiPhyTxBeginTrace(std::string context, Ptr< const Packet > p, double txPowerW)
wifi Phy transmit begin trace function
virtual uint32_t GetSerializedSize(void) const
Get Serialized Size.
void WriteNodeSizes()
Write node sizes function.
double GetNodeEnergyFraction(Ptr< const Node > node) const
Get node&#39;s energy fraction (This used only for testing)
void GenericWirelessRxTrace(std::string context, Ptr< const Packet > p, ProtocolType protocolType)
Generic wireless receive trace function.
NodeCounterMap64 m_nodeIpv4Rx
node IPv4 receive
std::vector< Ipv4RouteTrackElement > m_ipv4RouteTrackElements
IPv route track elements.
NodeCounterMap64 m_nodeWifiMacRxDrop
node wifi MAC receive drop
void MobilityCourseChangeTrace(Ptr< const MobilityModel > mob)
Mobility course change trace function.
void WimaxTxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
WIMax transmit trace function.
read and write tag data
Definition: tag-buffer.h:51
NodeCounterMap64 m_nodeWifiPhyRxDrop
node wifi Phy receive drop
std::string m_routingFileName
routing file name
bool IsPacketPending(uint64_t animUid, ProtocolType protocolType)
Is packet pending function.
void SetText(std::string text)
Set text function.
std::multimap< uint32_t, std::string > NodeIdIpv4Map
NodeIdIpv4Map typedef.
uint32_t m_queueDequeueCounterId
queue dequeue counter ID
std::string GetMacAddress(Ptr< NetDevice > nd)
Get MAC address function.
NodeCounterMap64 m_nodeIpv4Tx
node IPv4 transmit
NodeCounterMap64 m_nodeWifiMacRx
node wifi MAC receive
AnimUidPacketInfoMap m_pendingUanPackets
pending UAN packets
static Rectangle * userBoundary
user boundary
std::string ProtocolTypeToString(ProtocolType protocolType)
Protocol type to string function.
void AddByteTag(uint64_t animUid, Ptr< const Packet > p)
Add byte tag function.
void ConnectLte()
Connect LTE function.
void WifiMacTxTrace(std::string context, Ptr< const Packet > p)
wifi MAC transmit trace function
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1062
WifiPhyRxfailureReason
Definition: wifi-phy.h:48
void WriteXmlUpdateBackground(std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
Write XML update background function.
Interface to network animator.
void WriteNonP2pLinkProperties(uint32_t id, std::string ipv4Address, std::string channelType)
Write non P2P link properties function.
bool m_enablePacketMetadata
enable packet metadata
Ptr< const NetDevice > m_txnd
transmit device
uint32_t m_wifiMacTxDropCounterId
wifi MAC transmit drop counter ID
NodeCounterMap64 m_nodeLrWpanMacRx
node LR-WPAN MAC receive
Time m_wifiPhyCountersStopTime
wifi Phy counters stop time
void OutputWirelessPacketRxInfo(Ptr< const Packet > p, AnimPacketInfo &pktInfo, uint64_t animUid)
Output wireless packet receive info.
void LrWpanMacTxTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC transmit trace function.
void Ipv4DropTrace(std::string context, const Ipv4Header &ipv4Header, Ptr< const Packet > p, Ipv4L3Protocol::DropReason dropReason, Ptr< Ipv4 > ipv4, uint32_t interfaceIndex)
IPv4 drop trace function.
void SetAnimWriteCallback(AnimWriteCallback cb)
Set a callback function to listen to AnimationInterface write events.
void SetMobilityPollInterval(Time t)
Set mobility poll interval:WARNING: setting a low interval can cause slowness.
std::map< uint32_t, Rgb > NodeColorsMap
NodeColorsMap typedef.
NodeCounterMap64 m_nodeQueueEnqueue
node queue enqueue
uint32_t m_wifiPhyRxDropCounterId
wifi Phy receive drop counter ID
Time m_wifiMacCountersStopTime
wifi MAC counters stop time
void LrWpanPhyTxBeginTrace(std::string context, Ptr< const Packet > p)
LR-WPAN Phy receive begin trace function.
virtual void Print(std::ostream &os) const
Print tag info.
void WriteRoutePath(uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
Write route path function.
void WriteLinkProperties()
Write link properties function.
Time m_mobilityPollInterval
mobility poll interval
Definition: first.py:1
bool IsStarted(void)
Is AnimationInterface started.
void EnableIpv4L3ProtocolCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Ipv4 L3 Protocol Counters such as Tx, Rx, Drop.
AnimUidPacketInfoMap * ProtocolTypeToPendingPackets(ProtocolType protocolType)
Protocol type to pending packets function.
void EnableQueueCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Queue Counters such as Enqueue, Dequeue, Queue Drops.
void AddAttribute(std::string attribute, T value, bool xmlEscape=false)
Add attribute function.
uint32_t m_remainingEnergyCounterId
remaining energy counter ID
void WriteIpv4Addresses()
Write IPv4 Addresses function.
Vector GetPosition(Ptr< Node > n)
Get position function.
bool IsInTimeWindow()
Is in time window function.
a unique identifier for an interface.
Definition: type-id.h:58
NodeCounterMap64 m_nodeWifiMacTxDrop
node wifi MAC transmit drop
a 2d rectangle
Definition: rectangle.h:34
std::vector< std::string > m_nodeCounters
node counters
void UpdateNodeDescription(Ptr< Node > n, std::string descr)
Helper function to update the description for a given node.
void OutputCsmaPacket(Ptr< const Packet > p, AnimPacketInfo &pktInfo)
Output CSMA packet function.
Time m_routingStopTime
routing stop time
uint32_t m_ipv4L3ProtocolDropCounterId
IPv4 protocol drop counter ID.
Ptr< Node > GetNodeFromContext(const std::string &context) const
Get node from context.
Time m_queueCountersStopTime
queue counters stop time
void SetOutputFile(const std::string &fn, bool routing=false)
Set output file function.
void LteSpectrumPhyTxStart(std::string context, Ptr< const PacketBurst > pb)
LTE Spectrum Phy transmit start function.
AnimUidPacketInfoMap m_pendingCsmaPackets
pending CSMA packets
void WifiMacRxDropTrace(std::string context, Ptr< const Packet > p)
wifi MAC receive drop trace function
void WriteXmlLink(uint32_t fromId, uint32_t toLp, uint32_t toId)
Write XML link counter function.
std::string m_originalFileName
original file name
void TrackIpv4Route()
Track IPv4 router function.