src/netanim/model/animation-interface.cc
author Evgeny Kalishenko <ydginster@gmail.com>
Tue, 10 Dec 2013 09:12:38 +0400
changeset 10491 c2bdcb44ccb2
parent 10490 c7db6722e980
child 10492 1d330df83f70
permissions -rw-r--r--
Whitespaces added according to the coding standard after review
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     2
/*
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     5
 * published by the Free Software Foundation;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     6
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    10
 * GNU General Public License for more details.
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    11
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    12
 * You should have received a copy of the GNU General Public License
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    13
 * along with this program; if not, write to the Free Software
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    15
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    16
 * Author: George F. Riley<riley@ece.gatech.edu>
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    17
 * Modified by: John Abraham <john.abraham@gatech.edu>
10490
c7db6722e980 "Contribution" tags added
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10488
diff changeset
    18
 * Contributions: Eugene Kalishenko <ydginster@gmail.com> (Open Source and Linux Laboratory http://dev.osll.ru/)
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    19
 */
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    20
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    21
// Interface between ns3 and the network animator
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    22
7368
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    23
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    24
// ns3 includes
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    25
#include "ns3/animation-interface.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    26
#include "ns3/channel.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    27
#include "ns3/config.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    28
#include "ns3/node.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    29
#include "ns3/mobility-model.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    30
#include "ns3/packet.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    31
#include "ns3/simulator.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    32
#include "ns3/animation-interface-helper.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    33
#include "ns3/wifi-mac-header.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    34
#include "ns3/wimax-mac-header.h"
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
    35
#include "ns3/wifi-net-device.h"
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
    36
#include "ns3/wifi-mac.h"
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
    37
#include "ns3/constant-position-mobility-model.h"
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
    38
#include "ns3/lte-ue-phy.h"
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
    39
#include "ns3/lte-enb-phy.h"
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
    40
#include "ns3/uan-net-device.h"
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
    41
#include "ns3/uan-mac.h"
8955
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
    42
#include "ns3/ipv4.h"
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
    43
#include "ns3/ipv4-routing-protocol.h"
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
    44
#include "ns3/energy-source-container.h"
7368
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    45
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents: 9012
diff changeset
    46
#include <cstdio>
7756
a3a5f9215aae Explicitly including the unistd.h header file is needed on some systems where POSIX system calls are used
Tom Goff <tgoff@tgoff.net>
parents: 7754
diff changeset
    47
#include <unistd.h>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    48
#include <sstream>
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    49
#include <fstream>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    50
#include <string>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    51
#include <iomanip>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    52
#include <map>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    53
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    54
NS_LOG_COMPONENT_DEFINE ("AnimationInterface");
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    55
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
    56
namespace ns3 {
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
    57
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
    58
#define PURGE_INTERVAL 5
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
    59
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
    60
static bool initialized = false;
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
    61
std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions;
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
    62
std::map <uint32_t, Rgb> AnimationInterface::nodeColors;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
    63
std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> AnimationInterface::linkProperties;
10196
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
    64
Rectangle * AnimationInterface::userBoundary = 0;
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
    65
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    66
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    67
AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML)
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
    68
  : m_routingF (0), m_xml (usingXML), m_mobilityPollInterval (Seconds (0.25)), 
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
    69
    m_outputFileName (fn),
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
    70
    m_outputFileSet (false), gAnimUid (0), m_randomPosition (true),
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
    71
    m_writeCallback (0), m_started (false), 
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
    72
    m_enablePacketMetadata (false), m_startTime (Seconds (0)), m_stopTime (Seconds (3600 * 1000)),
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    73
    m_maxPktsPerFile (maxPktsPerFile), m_originalFileName (fn),
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    74
    m_routingStopTime (Seconds (0)), m_routingFileName (""),
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    75
    m_routingPollInterval (Seconds (5))
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    76
{
8978
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
    77
  m_uniformRandomVariable = CreateObject<UniformRandomVariable> ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
    78
  initialized = true;
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
    79
  StartAnimation ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    80
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    81
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    82
AnimationInterface::~AnimationInterface ()
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    83
{
10196
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
    84
  if (userBoundary)
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
    85
    {
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
    86
      delete userBoundary;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
    87
    }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    88
  StopAnimation ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    89
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    90
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
    91
AnimationInterface & AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval)
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    92
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    93
  m_routingFileName = fileName;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    94
  SetRoutingOutputFile (m_routingFileName);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    95
  m_routingStopTime = stopTime;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    96
  m_routingPollInterval = pollInterval;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    97
  WriteN (GetXMLOpen_anim (0), m_routingF); 
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    98
  Simulator::Schedule (startTime, &AnimationInterface::TrackIpv4Route, this);
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
    99
  return *this;
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   100
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   101
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   102
AnimationInterface & AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, NodeContainer nc, Time pollInterval)
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   103
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   104
  m_routingNc = nc;
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   105
  return EnableIpv4RouteTracking (fileName, startTime, stopTime, pollInterval);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   106
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   107
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   108
std::string AnimationInterface::GetIpv4RoutingTable (Ptr <Node> n)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   109
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   110
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   111
  NS_ASSERT (n);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   112
  Ptr <ns3::Ipv4> ipv4 = n->GetObject <ns3::Ipv4> ();
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   113
  if (!ipv4)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   114
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   115
      NS_LOG_WARN ("Node " << n->GetId () << " Does not have an Ipv4 object");
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   116
      return "";
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   117
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   118
  std::stringstream stream;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   119
  Ptr<OutputStreamWrapper> routingstream = Create<OutputStreamWrapper> (&stream);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   120
  ipv4->GetRoutingProtocol ()->PrintRoutingTable (routingstream);
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
   121
  return stream.str ();
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   122
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   123
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   124
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   125
void AnimationInterface::RecursiveIpv4RoutePathSearch (std::string from, std::string to, Ipv4RoutePathElements & rpElements)
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   126
{
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   127
  NS_LOG_INFO ("RecursiveIpv4RoutePathSearch from:" << from.c_str () << " to:" << to.c_str ());
9248
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   128
  if ((from == "0.0.0.0") || (from == "127.0.0.1"))
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   129
    {
9248
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   130
      NS_LOG_INFO ("Got " << from.c_str () << " End recursion");
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   131
      return;
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   132
    }
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   133
  Ptr <Node> fromNode = NodeList::GetNode (m_ipv4ToNodeIdMap[from]);
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   134
  Ptr <Node> toNode = NodeList::GetNode (m_ipv4ToNodeIdMap[to]);
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   135
  if (fromNode->GetId () == toNode->GetId ())
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   136
    {
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   137
      Ipv4RoutePathElement elem = { fromNode->GetId (), "L" };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   138
      rpElements.push_back (elem);
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   139
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   140
    }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   141
  if (!fromNode)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   142
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   143
      NS_FATAL_ERROR ("Node: " << m_ipv4ToNodeIdMap[from] << " Not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   144
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   145
    }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   146
  if (!toNode)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   147
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   148
      NS_FATAL_ERROR ("Node: " << m_ipv4ToNodeIdMap[to] << " Not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   149
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   150
    }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   151
  Ptr <ns3::Ipv4> ipv4 = fromNode->GetObject <ns3::Ipv4> ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   152
  if (!ipv4)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   153
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   154
      NS_LOG_WARN ("ipv4 object not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   155
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   156
    }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   157
  Ptr <Ipv4RoutingProtocol> rp = ipv4->GetRoutingProtocol ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   158
  if (!rp)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   159
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   160
      NS_LOG_WARN ("Routing protocol object not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   161
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   162
    }
9810
07a5fd13f3f8 NetAnim:Some RPs need non-null packets for RouteOutput
John Abraham <john.abraham.in@gmail.com>
parents: 9248
diff changeset
   163
  Ptr<Packet> pkt = Create<Packet> ();
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   164
  Ipv4Header header;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   165
  header.SetDestination (Ipv4Address (to.c_str ()));
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   166
  Socket::SocketErrno sockerr;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   167
  Ptr <Ipv4Route> rt = rp->RouteOutput (pkt, header, 0, sockerr);
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   168
  if (!rt)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   169
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   170
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   171
    }
9977
f93b5fce24b1 NetAnim: Typo in rp tag
John Abraham <john.abraham.in@gmail.com>
parents: 9961
diff changeset
   172
  NS_LOG_DEBUG ("Node: " << fromNode->GetId () << " G:" << rt->GetGateway ());
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   173
  std::ostringstream oss;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   174
  oss << rt->GetGateway ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   175
  if (oss.str () == "0.0.0.0" && (sockerr != Socket::ERROR_NOROUTETOHOST))
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   176
    {
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   177
      NS_LOG_INFO ("Null gw");
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   178
      Ipv4RoutePathElement elem = { fromNode->GetId (), "C" };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   179
      rpElements.push_back (elem);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   180
      if ( m_ipv4ToNodeIdMap.find (to) != m_ipv4ToNodeIdMap.end ())
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   181
        {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   182
          Ipv4RoutePathElement elem2 = { m_ipv4ToNodeIdMap[to], "L" };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   183
          rpElements.push_back (elem2);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   184
        }
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   185
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   186
    }
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   187
  NS_LOG_INFO ("Node:" << fromNode->GetId () << "-->" << rt->GetGateway ()); 
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   188
  Ipv4RoutePathElement elem = { fromNode->GetId (), oss.str () };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   189
  rpElements.push_back (elem);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   190
  RecursiveIpv4RoutePathSearch (oss.str (), to, rpElements);
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   191
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   192
}
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   193
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   194
void AnimationInterface::TrackIpv4RoutePaths ()
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   195
{
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   196
  if (m_ipv4RouteTrackElements.empty ())
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   197
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   198
      return;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   199
    }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   200
  for (std::vector <Ipv4RouteTrackElement>::const_iterator i = m_ipv4RouteTrackElements.begin ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   201
       i != m_ipv4RouteTrackElements.end ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   202
       ++i)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   203
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   204
      Ipv4RouteTrackElement trackElement = *i;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   205
      Ptr <Node> fromNode = NodeList::GetNode (trackElement.fromNodeId);
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   206
      if (!fromNode)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   207
        {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   208
          NS_FATAL_ERROR ("Node: " << trackElement.fromNodeId << " Not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   209
          continue;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   210
        }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   211
      Ptr <ns3::Ipv4> ipv4 = fromNode->GetObject <ns3::Ipv4> ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   212
      if (!ipv4)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   213
        {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   214
          NS_LOG_WARN ("ipv4 object not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   215
          continue;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   216
        }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   217
      Ptr <Ipv4RoutingProtocol> rp = ipv4->GetRoutingProtocol ();
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   218
      if (!rp)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   219
        {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   220
          NS_LOG_WARN ("Routing protocol object not found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   221
          continue;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   222
        }
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   223
      NS_LOG_INFO ("Begin Track Route for: " << trackElement.destination.c_str () << " From:" << trackElement.fromNodeId);
9951
992672356bc3 NetAnim: Some RPs want a non-zero Packet for RouteOutput
John Abraham <john.abraham.in@gmail.com>
parents: 9870
diff changeset
   224
      Ptr<Packet> pkt = Create<Packet> ();
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   225
      Ipv4Header header;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   226
      header.SetDestination (Ipv4Address (trackElement.destination.c_str ()));
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   227
      Socket::SocketErrno sockerr;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   228
      Ptr <Ipv4Route> rt = rp->RouteOutput (pkt, header, 0, sockerr);
9961
b47c973edcbb NetAnim: Missing continue statement when Gateway is missing
John Abraham <john.abraham.in@gmail.com>
parents: 9951
diff changeset
   229
      Ipv4RoutePathElements rpElements;
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   230
      if (!rt)
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   231
        {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   232
          NS_LOG_INFO ("No route to :" << trackElement.destination.c_str ());
9961
b47c973edcbb NetAnim: Missing continue statement when Gateway is missing
John Abraham <john.abraham.in@gmail.com>
parents: 9951
diff changeset
   233
          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "-1" };
b47c973edcbb NetAnim: Missing continue statement when Gateway is missing
John Abraham <john.abraham.in@gmail.com>
parents: 9951
diff changeset
   234
          rpElements.push_back (elem);
b47c973edcbb NetAnim: Missing continue statement when Gateway is missing
John Abraham <john.abraham.in@gmail.com>
parents: 9951
diff changeset
   235
          WriteRoutePath (trackElement.fromNodeId, trackElement.destination, rpElements);
b47c973edcbb NetAnim: Missing continue statement when Gateway is missing
John Abraham <john.abraham.in@gmail.com>
parents: 9951
diff changeset
   236
          continue;
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   237
        }
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   238
      std::ostringstream oss;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   239
      oss << rt->GetGateway ();
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   240
      NS_LOG_INFO ("Node:" << trackElement.fromNodeId << "-->" << rt->GetGateway ()); 
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   241
      if (rt->GetGateway () == "0.0.0.0")
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   242
        {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   243
          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "C" };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   244
          rpElements.push_back (elem);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   245
          if ( m_ipv4ToNodeIdMap.find (trackElement.destination) != m_ipv4ToNodeIdMap.end ())
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   246
            {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   247
              Ipv4RoutePathElement elem2 = { m_ipv4ToNodeIdMap[trackElement.destination], "L" };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   248
              rpElements.push_back (elem2);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   249
            }
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   250
        }
9248
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   251
      else if (rt->GetGateway () == "127.0.0.1")
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   252
        {
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   253
          Ipv4RoutePathElement elem = { trackElement.fromNodeId, "-1" };
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   254
          rpElements.push_back (elem);
31e5a4b0f1b2 NetAnim: Handle special case for deferred routes
John Abraham <john.abraham.in@gmail.com>
parents: 9247
diff changeset
   255
        }
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   256
      else
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   257
        {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   258
          Ipv4RoutePathElement elem = { trackElement.fromNodeId, oss.str () };
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   259
          rpElements.push_back (elem);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   260
        }
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   261
      RecursiveIpv4RoutePathSearch (oss.str (), trackElement.destination, rpElements);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   262
      WriteRoutePath (trackElement.fromNodeId, trackElement.destination, rpElements);
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   263
    }
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   264
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   265
}
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   266
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   267
void AnimationInterface::TrackIpv4Route ()
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   268
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   269
  if (Simulator::Now () > m_routingStopTime)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   270
  {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   271
    NS_LOG_INFO ("TrackIpv4Route completed");
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   272
    return;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   273
  }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   274
  if (m_routingNc.GetN ())
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   275
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   276
      for (NodeContainer::Iterator i = m_routingNc.Begin (); i != m_routingNc.End (); ++i)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   277
        {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   278
          Ptr <Node> n = *i;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   279
          WriteN (GetXMLOpenClose_routing (n->GetId (), GetIpv4RoutingTable (n)), m_routingF);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   280
        }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   281
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   282
  else
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   283
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   284
      for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   285
        {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   286
          Ptr <Node> n = *i;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   287
          WriteN (GetXMLOpenClose_routing (n->GetId (), GetIpv4RoutingTable (n)), m_routingF);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   288
        }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   289
    }
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   290
  TrackIpv4RoutePaths ();
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   291
  Simulator::Schedule (m_routingPollInterval, &AnimationInterface::TrackIpv4Route, this);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   292
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   293
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   294
void AnimationInterface::SetXMLOutput ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   295
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   296
  NS_LOG_INFO ("XML output set");
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   297
  m_xml = true;
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   298
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   299
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   300
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   301
void AnimationInterface::StartNewTraceFile ()
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   302
{
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   303
  static int i = 0;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   304
  std::ostringstream oss;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   305
  oss << i;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   306
  ++m_currentPktCount;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   307
  if (m_currentPktCount <= m_maxPktsPerFile)
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   308
    {
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   309
      return;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   310
    }
9228
5fb8a7e8db69 NetAnim: Prevent closing the routing trace when splitting files
John Abraham<john.abraham.in@gmail.com>
parents: 9204
diff changeset
   311
  StopAnimation (true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   312
  m_outputFileName = m_originalFileName + "-" + oss.str ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   313
  StartAnimation (true);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   314
  ++i;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   315
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   316
}
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   317
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   318
std::string AnimationInterface::GetNetAnimVersion ()
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   319
{
9171
60b05583315c NetAnim: Bump version, update doc
John Abraham <john.abraham.in@gmail.com>
parents: 9161
diff changeset
   320
  return "netanim-3.103";
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   321
}
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   322
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   323
void AnimationInterface::SetStartTime (Time t)
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   324
{
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   325
  m_startTime = t;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   326
}
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   327
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   328
void AnimationInterface::SetStopTime (Time t)
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   329
{
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   330
  m_stopTime = t;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   331
}
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   332
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   333
bool AnimationInterface::SetOutputFile (const std::string& fn)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   334
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   335
  if (m_outputFileSet)
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   336
    {
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   337
      return true;
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   338
    }
8778
bf37816b37ad NetAnim: provide unlink for test artifact
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
   339
  NS_LOG_INFO ("Creating new trace file:" << fn.c_str ());
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents: 9012
diff changeset
   340
  m_f = std::fopen (fn.c_str (), "w");
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   341
  if (!m_f)
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   342
    {
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   343
      NS_FATAL_ERROR ("Unable to open Animation output file");
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   344
      return false; // Can't open
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   345
    }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   346
  m_outputFileName = fn;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   347
  m_outputFileSet = true;
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   348
  return true;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   349
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   350
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   351
bool AnimationInterface::SetRoutingOutputFile (const std::string& fn)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   352
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   353
  if (m_routingF)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   354
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   355
      NS_FATAL_ERROR ("SetRoutingOutputFile already used once");
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   356
      return false;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   357
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   358
  m_routingF = std::fopen (fn.c_str (), "w");
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   359
  if (!m_routingF)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   360
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   361
      NS_FATAL_ERROR ("Unable to open Animation Routing output file");
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   362
      return false;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   363
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   364
  return true;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   365
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   366
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   367
void AnimationInterface::EnablePacketMetadata (bool enable)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   368
{
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   369
   m_enablePacketMetadata = enable;
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   370
   if (enable)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   371
     Packet::EnablePrinting ();
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   372
}
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   373
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   374
bool AnimationInterface::IsInitialized ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   375
{
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   376
  return initialized;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   377
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   378
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   379
bool AnimationInterface::IsStarted ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   380
{
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   381
  return m_started;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   382
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   383
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   384
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   385
void AnimationInterface::SetAnimWriteCallback (AnimWriteCallback cb)
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   386
{
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   387
  m_writeCallback = cb;
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   388
}
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   389
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   390
void AnimationInterface::ResetAnimWriteCallback ()
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   391
{
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   392
  m_writeCallback = 0;
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   393
}
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   394
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   395
bool AnimationInterface::IsInTimeWindow ()
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   396
{
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   397
  if ((Simulator::Now () >= m_startTime) && 
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   398
      (Simulator::Now () <= m_stopTime))
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   399
    return true;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   400
  else
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   401
    return false;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   402
}
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   403
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   404
bool AnimationInterface::UanPacketIsPending (uint64_t AnimUid)
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   405
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   406
  return (m_pendingUanPackets.find (AnimUid) != m_pendingUanPackets.end ());
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   407
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   408
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   409
bool AnimationInterface::WifiPacketIsPending (uint64_t AnimUid)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   410
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   411
  return (m_pendingWifiPackets.find (AnimUid) != m_pendingWifiPackets.end ());
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   412
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   413
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   414
bool AnimationInterface::CsmaPacketIsPending (uint64_t AnimUid)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   415
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   416
  return (m_pendingCsmaPackets.find (AnimUid) != m_pendingCsmaPackets.end ());
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   417
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   418
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   419
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   420
bool AnimationInterface::WimaxPacketIsPending (uint64_t AnimUid)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   421
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   422
  return (m_pendingWimaxPackets.find (AnimUid) != m_pendingWimaxPackets.end ());
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   423
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   424
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   425
bool AnimationInterface::LtePacketIsPending (uint64_t AnimUid)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   426
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   427
  return (m_pendingLtePackets.find (AnimUid) != m_pendingLtePackets.end ());
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   428
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   429
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   430
void AnimationInterface::SetMobilityPollInterval (Time t)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   431
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   432
  m_mobilityPollInterval = t;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   433
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   434
7476
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   435
void AnimationInterface::SetRandomPosition (bool setRandPos)
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   436
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   437
  m_randomPosition = setRandPos;
7476
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   438
}
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   439
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   440
Vector AnimationInterface::UpdatePosition (Ptr <Node> n)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   441
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   442
  Ptr<MobilityModel> loc = n->GetObject<MobilityModel> ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   443
  if (loc)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   444
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   445
      m_nodeLocation[n->GetId ()] = loc->GetPosition ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   446
    }
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   447
  else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   448
   {
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
   449
     NS_LOG_UNCOND ( "AnimationInterface WARNING:Node:" << n->GetId () << " Does not have a mobility model. Use SetConstantPosition if it is stationary");
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   450
     Vector deterministicVector (100,100,0);
8978
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
   451
     Vector randomVector (m_uniformRandomVariable->GetValue (0, m_topoMaxX - m_topoMinX), m_uniformRandomVariable->GetValue (0, m_topoMaxY - m_topoMinY), 0);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   452
     if (m_randomPosition)
7476
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   453
       {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   454
         m_nodeLocation[n->GetId ()] = randomVector;
7476
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   455
       }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   456
     else
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   457
       {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   458
         m_nodeLocation[n->GetId ()] = deterministicVector;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   459
       }
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   460
   }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   461
  return m_nodeLocation[n->GetId ()];
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   462
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   463
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   464
Vector AnimationInterface::UpdatePosition (Ptr <Node> n, Vector v)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   465
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   466
  m_nodeLocation[n->GetId ()] = v;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   467
  return v;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   468
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   469
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   470
Vector AnimationInterface::GetPosition (Ptr <Node> n)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   471
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   472
  #ifdef NS_LOG
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
   473
  if (m_nodeLocation.find (n->GetId ()) == m_nodeLocation.end ())
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   474
    {
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
   475
      NS_FATAL_ERROR ("Node:" <<n->GetId () << " not found in Location table");
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   476
    }  
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   477
  #endif
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   478
  return m_nodeLocation[n->GetId ()];
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   479
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   480
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   481
void AnimationInterface::PurgePendingWifi ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   482
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   483
  if (m_pendingWifiPackets.empty ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   484
    return;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   485
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   486
  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWifiPackets.begin ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   487
       i != m_pendingWifiPackets.end ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   488
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   489
    {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   490
     
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   491
      AnimPacketInfo pktInfo = i->second; 
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   492
      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   493
      if (delta > PURGE_INTERVAL)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   494
        {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   495
          purgeList.push_back (i->first);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   496
        }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   497
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   498
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   499
  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   500
       i != purgeList.end ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   501
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   502
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   503
      m_pendingWifiPackets.erase (*i);
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   504
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   505
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   506
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   507
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   508
void AnimationInterface::PurgePendingWimax ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   509
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   510
  if (m_pendingWimaxPackets.empty ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   511
    return;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   512
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   513
  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWimaxPackets.begin ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   514
       i != m_pendingWimaxPackets.end ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   515
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   516
    {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   517
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   518
      AnimPacketInfo pktInfo = i->second;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   519
      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   520
      if (delta > PURGE_INTERVAL)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   521
        {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   522
          purgeList.push_back (i->first);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   523
        }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   524
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   525
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   526
  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   527
       i != purgeList.end ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   528
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   529
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   530
      m_pendingWimaxPackets.erase (*i);
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   531
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   532
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   533
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   534
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   535
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   536
void AnimationInterface::PurgePendingLte ()
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   537
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   538
  if (m_pendingLtePackets.empty ())
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   539
    return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   540
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   541
  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingLtePackets.begin ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   542
       i != m_pendingLtePackets.end ();
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   543
       ++i)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   544
    {
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   545
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   546
      AnimPacketInfo pktInfo = i->second;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   547
      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   548
      if (delta > PURGE_INTERVAL)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   549
        {
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   550
          purgeList.push_back (i->first);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   551
        }
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   552
    }
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   553
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   554
  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   555
       i != purgeList.end ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   556
       ++i)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   557
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   558
      m_pendingLtePackets.erase (*i);
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   559
    }
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   560
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   561
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   562
void AnimationInterface::PurgePendingCsma ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   563
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   564
  if (m_pendingCsmaPackets.empty ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   565
    return;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   566
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   567
  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingCsmaPackets.begin ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   568
       i != m_pendingCsmaPackets.end ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   569
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   570
    {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   571
    
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   572
      AnimPacketInfo pktInfo = i->second;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   573
      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   574
      if (delta > PURGE_INTERVAL)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   575
        { 
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   576
          purgeList.push_back (i->first);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   577
        }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   578
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   579
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   580
  for (std::vector <uint64_t>::iterator i = purgeList.begin ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   581
       i != purgeList.end ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   582
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   583
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   584
      m_pendingCsmaPackets.erase (*i);
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   585
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   586
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   587
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   588
9158
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   589
std::string AnimationInterface::GetMacAddress (Ptr <NetDevice> nd)
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   590
{
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
   591
  Address nodeAddr = nd->GetAddress ();
9158
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   592
  std::ostringstream oss;
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   593
  oss << nodeAddr;
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   594
  return oss.str ().substr (6); // Skip the first 6 chars to get the Mac
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   595
}
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   596
8955
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   597
std::string AnimationInterface::GetIpv4Address (Ptr <NetDevice> nd)
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   598
{
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   599
  Ptr<Ipv4> ipv4 = NodeList::GetNode (nd->GetNode ()->GetId ())->GetObject <Ipv4> ();
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   600
  if (!ipv4)
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   601
    {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   602
      NS_LOG_WARN ("Node: " << nd->GetNode ()->GetId () << " No ipv4 object found");
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   603
      return "0.0.0.0";
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   604
    }
9115
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   605
  int32_t ifIndex = ipv4->GetInterfaceForDevice (nd);
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   606
  if (ifIndex == -1)
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   607
    {
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   608
      NS_LOG_WARN ("Node :" << nd->GetNode ()->GetId () << " Could not find index of NetDevice");
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   609
      return "0.0.0.0";
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   610
    }
8955
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   611
  Ipv4InterfaceAddress addr = ipv4->GetAddress (ifIndex, 0);
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   612
  std::ostringstream oss;
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   613
  oss << addr.GetLocal ();
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   614
  return oss.str ();
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   615
}
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   616
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   617
void AnimationInterface::StartAnimation (bool restart)
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   618
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   619
  m_currentPktCount = 0;
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   620
  m_started = true;
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   621
  SetOutputFile (m_outputFileName);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   622
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   623
  // Find the min/max x/y for the xml topology element
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   624
  m_topoMinX = -2;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   625
  m_topoMinY = -2;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   626
  m_topoMaxX = 2;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   627
  m_topoMaxY = 2;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   628
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   629
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   630
      Ptr<Node> n = *i;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   631
      NS_LOG_INFO ("Update Position for Node: " << n->GetId ());
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   632
      Vector v = UpdatePosition (n); 
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   633
      m_topoMinX = std::min (m_topoMinX, v.x);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   634
      m_topoMinY = std::min (m_topoMinY, v.y);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   635
      m_topoMaxX = std::max (m_topoMaxX, v.x);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   636
      m_topoMaxY = std::max (m_topoMaxY, v.y);
8898
d6a565e7973d NetAnim: Change default RGB to red
John Abraham <john.abraham.in@gmail.com>
parents: 8897
diff changeset
   637
      struct Rgb rgb = {255, 0, 0};
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
   638
      if (nodeColors.find (n->GetId ()) == nodeColors.end ())
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
   639
      {
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
   640
        nodeColors[n->GetId ()] = rgb;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
   641
      }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   642
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   643
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   644
  
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   645
  std::ostringstream oss;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   646
  oss << GetXMLOpen_anim (0);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   647
  oss << GetPreamble ();
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   648
  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   649
  WriteN (oss.str (), m_f);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   650
  NS_LOG_INFO ("Setting topology for "<<NodeList::GetNNodes ()<<" Nodes");
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   651
  // Dump the topology
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   652
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   653
    {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   654
      Ptr<Node> n = *i;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   655
      std::ostringstream oss;
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   656
      Vector v = GetPosition (n);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   657
      struct Rgb rgb = nodeColors[n->GetId ()];
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   658
      oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, rgb);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   659
      WriteN (oss.str (), m_f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   660
    }
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   661
  NS_LOG_INFO ("Setting p2p links");
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   662
  // Now dump the p2p links
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   663
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   664
    {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   665
      Ptr<Node> n = *i;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   666
      uint32_t n1Id = n->GetId ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   667
      uint32_t nDev = n->GetNDevices ();  // Number of devices
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   668
      for (uint32_t i = 0; i < nDev; ++i)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   669
        {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   670
          Ptr<NetDevice> dev = n->GetDevice (i);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   671
 	  NS_ASSERT (dev);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   672
          Ptr<Channel>   ch = dev->GetChannel ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   673
          if (!ch) 
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   674
            {
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   675
	      NS_LOG_DEBUG ("No channel can't be a p2p device");
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   676
              // Try to see if it is an LTE NetDevice, which does not return a channel
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   677
              if ((dev->GetInstanceTypeId ().GetName () == "ns3::LteUeNetDevice") || 
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   678
                  (dev->GetInstanceTypeId ().GetName () == "ns3::LteEnbNetDevice")||
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   679
                  (dev->GetInstanceTypeId ().GetName () == "ns3::VirtualNetDevice"))
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   680
                {
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   681
                  WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), dev->GetInstanceTypeId ().GetName ());
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   682
                  AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n->GetId ());
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   683
                }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   684
              continue;
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   685
            }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   686
          std::string channelType = ch->GetInstanceTypeId ().GetName ();
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   687
          NS_LOG_DEBUG ("Got ChannelType" << channelType);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   688
          if (channelType == std::string ("ns3::PointToPointChannel"))
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   689
            { // Since these are duplex links, we only need to dump
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   690
              // if srcid < dstid
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   691
              uint32_t nChDev = ch->GetNDevices ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   692
              for (uint32_t j = 0; j < nChDev; ++j)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   693
                {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   694
                  Ptr<NetDevice> chDev = ch->GetDevice (j);
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   695
                  uint32_t n2Id = chDev->GetNode ()->GetId ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   696
                  if (n1Id < n2Id)
8955
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   697
                    { 
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   698
                      // ouptut the p2p link
9158
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   699
                      NS_LOG_INFO ("Link:" << GetIpv4Address (dev) << ":" << GetMacAddress (dev) << "----" << GetIpv4Address (chDev) << ":" << GetMacAddress (chDev) );
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   700
                      SetLinkDescription (n1Id, n2Id, "", GetIpv4Address (dev) + "~" + GetMacAddress (dev), GetIpv4Address (chDev) + "~" + GetMacAddress (chDev));
9245
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   701
                      AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n1Id);
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   702
                      AddToIpv4AddressNodeIdTable (GetIpv4Address (chDev), n2Id);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   703
                      std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   704
                      if (m_xml)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   705
                        {
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
   706
                          oss << GetXMLOpenClose_link (0, n1Id, 0, n2Id);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   707
                        }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   708
                      else
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   709
                        {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   710
                          oss << "0.0 L "  << n1Id << " " << n2Id << std::endl;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   711
                        }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   712
                      WriteN (oss.str (), m_f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   713
                    }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   714
                }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   715
            }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   716
          else
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   717
            {
9158
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   718
              NS_LOG_INFO ("Link:" << GetIpv4Address (dev) << " Channel Type:" << channelType << " Mac: " << GetMacAddress (dev));
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   719
              WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), channelType); 
9245
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   720
              AddToIpv4AddressNodeIdTable (GetIpv4Address (dev), n->GetId ());
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   721
            }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   722
        }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   723
    }
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
   724
  linkProperties.clear ();
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   725
  if (m_xml && !restart)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   726
    {
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   727
      WriteN (GetXMLClose ("topology"), m_f);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   728
      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   729
    }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   730
  if (!restart)
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   731
    ConnectCallbacks ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   732
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   733
9245
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   734
void AnimationInterface::AddToIpv4AddressNodeIdTable (std::string ipv4Address, uint32_t nodeId)
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   735
{
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   736
  m_ipv4ToNodeIdMap[ipv4Address] = nodeId;
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   737
}
8bc488ac6cdc NetAnim: Add an ipv4 address to node Id table
John Abraham <john.abraham.in@gmail.com>
parents: 9228
diff changeset
   738
9246
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   739
AnimationInterface & AnimationInterface::AddSourceDestination (uint32_t fromNodeId, std::string ipv4Address)
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   740
{
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   741
  Ipv4RouteTrackElement element = { ipv4Address, fromNodeId };
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   742
  m_ipv4RouteTrackElements.push_back (element);
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   743
  return *this;
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   744
}
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   745
77b5a7129d59 NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable
John Abraham <john.abraham.in@gmail.com>
parents: 9245
diff changeset
   746
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   747
void AnimationInterface::ConnectLteEnb (Ptr <Node> n, Ptr <LteEnbNetDevice> nd, uint32_t devIndex)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   748
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   749
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   750
  Ptr<LteEnbPhy> lteEnbPhy = nd->GetPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   751
  Ptr<LteSpectrumPhy> dlPhy = lteEnbPhy->GetDownlinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   752
  Ptr<LteSpectrumPhy> ulPhy = lteEnbPhy->GetUplinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   753
  std::ostringstream oss;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   754
  //NodeList/*/DeviceList/*/
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   755
  oss << "NodeList/" << n->GetId () << "/DeviceList/" << devIndex << "/";
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   756
  if (dlPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   757
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   758
      dlPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   759
      dlPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   760
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   761
  if (ulPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   762
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   763
      ulPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   764
      ulPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   765
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   766
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   767
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   768
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   769
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   770
void AnimationInterface::ConnectLteUe (Ptr <Node> n, Ptr <LteUeNetDevice> nd, uint32_t devIndex)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   771
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   772
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   773
  Ptr<LteUePhy> lteUePhy = nd->GetPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   774
  Ptr<LteSpectrumPhy> dlPhy = lteUePhy->GetDownlinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   775
  Ptr<LteSpectrumPhy> ulPhy = lteUePhy->GetUplinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   776
  std::ostringstream oss;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   777
  //NodeList/*/DeviceList/*/
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   778
  oss << "NodeList/" << n->GetId () << "/DeviceList/" << devIndex << "/";
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   779
  if (dlPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   780
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   781
      dlPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   782
      dlPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   783
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   784
  if (ulPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   785
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   786
       ulPhy->TraceConnect ("TxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyTxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   787
       ulPhy->TraceConnect ("RxStart",oss.str (), MakeCallback (&AnimationInterface::LteSpectrumPhyRxStart, this));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   788
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   789
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   790
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   791
void AnimationInterface::ConnectLte ()
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   792
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   793
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   794
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   795
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   796
      Ptr<Node> n = *i;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   797
      NS_ASSERT (n);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   798
      uint32_t nDevices = n->GetNDevices ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   799
      for (uint32_t devIndex = 0; devIndex < nDevices; ++devIndex)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   800
        {
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
   801
          Ptr <NetDevice> nd = n->GetDevice (devIndex);
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   802
          if (!nd)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   803
            continue;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   804
          Ptr<LteUeNetDevice> lteUeNetDevice = DynamicCast<LteUeNetDevice> (nd);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   805
          if (lteUeNetDevice)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   806
            {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   807
              ConnectLteUe (n, lteUeNetDevice, devIndex);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   808
              continue;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   809
            }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   810
          Ptr<LteEnbNetDevice> lteEnbNetDevice = DynamicCast<LteEnbNetDevice> (nd);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   811
          if (lteEnbNetDevice)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   812
            ConnectLteEnb (n, lteEnbNetDevice, devIndex);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   813
        }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   814
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   815
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   816
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   817
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   818
void AnimationInterface::ConnectCallbacks ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   819
{
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   820
  // Connect the callbacks
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   821
  Config::Connect ("/ChannelList/*/TxRxPointToPoint",
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   822
                   MakeCallback (&AnimationInterface::DevTxTrace, this));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   823
  Config::Connect ("NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyTxBegin",
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   824
                   MakeCallback (&AnimationInterface::WifiPhyTxBeginTrace, this));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   825
  Config::Connect ("NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Phy/PhyRxBegin",
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   826
                   MakeCallback (&AnimationInterface::WifiPhyRxBeginTrace, this));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   827
  Config::ConnectWithoutContext ("/NodeList/*/$ns3::MobilityModel/CourseChange",
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   828
                   MakeCallback (&AnimationInterface::MobilityCourseChangeTrace, this));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   829
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WimaxNetDevice/Tx",
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   830
                   MakeCallback (&AnimationInterface::WimaxTxTrace, this));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   831
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::WimaxNetDevice/Rx",
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   832
                   MakeCallback (&AnimationInterface::WimaxRxTrace, this));
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   833
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Tx",
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   834
                   MakeCallback (&AnimationInterface::LteTxTrace, this));
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   835
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Rx",
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   836
                   MakeCallback (&AnimationInterface::LteRxTrace, this));
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   837
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxBegin",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   838
                   MakeCallback (&AnimationInterface::CsmaPhyTxBeginTrace, this));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   839
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxEnd",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   840
                   MakeCallback (&AnimationInterface::CsmaPhyTxEndTrace, this));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   841
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyRxEnd",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   842
                   MakeCallback (&AnimationInterface::CsmaPhyRxEndTrace, this));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   843
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/MacRx",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   844
                   MakeCallback (&AnimationInterface::CsmaMacRxTrace, this));
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
   845
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::UanNetDevice/Phy/PhyTxBegin",
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   846
                   MakeCallback (&AnimationInterface::UanPhyGenTxTrace, this));
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
   847
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::UanNetDevice/Phy/PhyRxBegin",
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   848
                   MakeCallback (&AnimationInterface::UanPhyGenRxTrace, this));
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
   849
  Config::Connect ("/NodeList/*/$ns3::BasicEnergySource/RemainingEnergy",
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
   850
                   MakeCallback (&AnimationInterface::RemainingEnergyTrace, this));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   851
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   852
  ConnectLte ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   853
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   854
}
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   855
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   856
9228
5fb8a7e8db69 NetAnim: Prevent closing the routing trace when splitting files
John Abraham<john.abraham.in@gmail.com>
parents: 9204
diff changeset
   857
void AnimationInterface::StopAnimation (bool onlyAnimation)
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   858
{
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   859
  m_started = false;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   860
  NS_LOG_INFO ("Stopping Animation");
7595
0f5dc03da4b1 StopAnimation should reset write callback
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   861
  ResetAnimWriteCallback ();
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   862
  if (m_f) 
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   863
    {
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   864
      if (m_xml)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   865
        { // Terminate the anim element
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   866
          WriteN (GetXMLClose ("anim"), m_f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   867
        }
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents: 9012
diff changeset
   868
      std::fclose (m_f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   869
    }
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   870
    m_outputFileSet = false;
9228
5fb8a7e8db69 NetAnim: Prevent closing the routing trace when splitting files
John Abraham<john.abraham.in@gmail.com>
parents: 9204
diff changeset
   871
  if (onlyAnimation)
5fb8a7e8db69 NetAnim: Prevent closing the routing trace when splitting files
John Abraham<john.abraham.in@gmail.com>
parents: 9204
diff changeset
   872
    {
5fb8a7e8db69 NetAnim: Prevent closing the routing trace when splitting files
John Abraham<john.abraham.in@gmail.com>
parents: 9204
diff changeset
   873
      return;
5fb8a7e8db69 NetAnim: Prevent closing the routing trace when splitting files
John Abraham<john.abraham.in@gmail.com>
parents: 9204
diff changeset
   874
    }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   875
  if (m_routingF)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   876
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   877
      WriteN (GetXMLClose ("anim"), m_routingF);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   878
      std::fclose (m_routingF);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   879
    }
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   880
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   881
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   882
int AnimationInterface::WriteN (const std::string& st, FILE * f)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   883
{
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   884
  if (m_writeCallback)
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   885
    {
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   886
      m_writeCallback (st.c_str ());
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   887
    }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   888
  return WriteN (st.c_str (), st.length (), f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   889
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   890
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   891
std::vector <Ptr <Node> >  AnimationInterface::RecalcTopoBounds ()
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   892
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   893
  std::vector < Ptr <Node> > MovedNodes;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   894
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   895
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   896
      Ptr<Node> n = *i;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   897
      NS_ASSERT (n);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   898
      Ptr <MobilityModel> mobility = n->GetObject <MobilityModel> ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   899
      Vector newLocation;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   900
      if (!mobility)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   901
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   902
          newLocation = GetPosition (n);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   903
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   904
      else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   905
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   906
          newLocation = mobility->GetPosition ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   907
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   908
      if (!NodeHasMoved (n, newLocation))
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   909
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   910
          continue; //Location has not changed
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   911
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   912
      else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   913
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   914
          UpdatePosition (n, newLocation);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   915
          RecalcTopoBounds (newLocation);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   916
          MovedNodes.push_back (n);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   917
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   918
    }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   919
  return MovedNodes;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   920
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   921
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   922
void AnimationInterface::RecalcTopoBounds (Vector v)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   923
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   924
  m_topoMinX = std::min (m_topoMinX, v.x);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   925
  m_topoMinY = std::min (m_topoMinY, v.y);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   926
  m_topoMaxX = std::max (m_topoMaxX, v.x);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   927
  m_topoMaxY = std::max (m_topoMaxY, v.y);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   928
  
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   929
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   930
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   931
int AnimationInterface::WriteN (const char* data, uint32_t count, FILE * f)
7475
1e4738d69222 NetAnim: Support Pause & Resume Animation
John Abraham <john.abraham@gatech.edu>
parents: 7461
diff changeset
   932
{ 
1e4738d69222 NetAnim: Support Pause & Resume Animation
John Abraham <john.abraham@gatech.edu>
parents: 7461
diff changeset
   933
  // Write count bytes to h from data
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   934
  uint32_t    nLeft   = count;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   935
  const char* p       = data;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   936
  uint32_t    written = 0;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   937
  while (nLeft)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   938
    {
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   939
      int n = std::fwrite (p, 1,  nLeft, f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   940
      if (n <= 0) 
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   941
        {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   942
          return written;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   943
        }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   944
      written += n;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   945
      nLeft -= n;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   946
      p += n;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   947
    }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   948
  return written;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   949
}
7181
7ff8011cf487 net-anim coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 7089
diff changeset
   950
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   951
void AnimationInterface::WriteDummyPacket ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   952
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   953
  Time now = Simulator::Now ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   954
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   955
  double fbTx = now.GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   956
  double lbTx = now.GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   957
  double fbRx = now.GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   958
  double lbRx = now.GetSeconds ();
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   959
  oss << GetXMLOpenClose_p ("p", 0, fbTx, lbTx, 0, fbRx, lbRx, "", "DummyPktIgnoreThis");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   960
  WriteN (oss.str (), m_f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   961
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   962
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   963
}
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   964
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   965
void AnimationInterface::WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   966
{
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   967
  NS_LOG_INFO ("Writing Route Path From :" << nodeId << " To: " << destination.c_str ());
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   968
  WriteN (GetXMLOpenClose_rp (nodeId, destination, rpElements), m_routingF);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   969
  /*for (Ipv4RoutePathElements::const_iterator i = rpElements.begin ();
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   970
       i != rpElements.end ();
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   971
       ++i)
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   972
    {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   973
      Ipv4RoutePathElement rpElement = *i;
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   974
      NS_LOG_INFO ("Node:" << rpElement.nodeId << "-->" << rpElement.nextHop.c_str ());
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   975
      WriteN (GetXMLOpenClose_rp (rpElement.node, GetIpv4RoutingTable (n)), m_routingF);
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   976
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   977
    }
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   978
  */
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
   979
}
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   980
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   981
void AnimationInterface::WriteNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   982
{
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   983
  std::ostringstream oss;
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   984
  oss << GetXMLOpenClose_NonP2pLinkProperties (id, ipv4Address, channelType);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   985
  WriteN (oss.str (), m_f);
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   986
}
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   987
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   988
void AnimationInterface::DevTxTrace (std::string context, Ptr<const Packet> p,
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   989
                                     Ptr<NetDevice> tx, Ptr<NetDevice> rx,
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   990
                                     Time txTime, Time rxTime)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   991
{
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   992
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   993
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   994
  NS_ASSERT (tx);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   995
  NS_ASSERT (rx);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   996
  Time now = Simulator::Now ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   997
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   998
  double fbTx = now.GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   999
  double lbTx = (now + txTime).GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1000
  double fbRx = (now + rxTime - txTime).GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1001
  double lbRx = (now + rxTime).GetSeconds ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1002
  if (m_xml)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1003
    {
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1004
      oss << GetXMLOpenClose_p ("p", tx->GetNode ()->GetId (), fbTx, lbTx, rx->GetNode ()->GetId (), 
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1005
                                fbRx, lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1006
      StartNewTraceFile ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1007
      ++m_currentPktCount;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1008
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1009
  else
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1010
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1011
      oss << std::setprecision (10);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1012
      oss << now.GetSeconds () << " P "
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1013
          << tx->GetNode ()->GetId () << " "
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1014
          << rx->GetNode ()->GetId () << " "
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1015
          << (now + txTime).GetSeconds () << " " // last bit tx time
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1016
          << (now + rxTime - txTime).GetSeconds () << " " // first bit rx time
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1017
          << (now + rxTime).GetSeconds () << std::endl;         // last bit rx time
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1018
    }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1019
  WriteN (oss.str (), m_f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1020
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1021
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1022
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1023
Ptr <Node>
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1024
AnimationInterface::GetNodeFromContext (const std::string& context) const
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1025
{
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1026
  // Use "NodeList/*/ as reference
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1027
  // where element [1] is the Node Id
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1028
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1029
  std::vector <std::string> elements = GetElementsFromContext (context);
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1030
  Ptr <Node> n = NodeList::GetNode (atoi (elements.at (1).c_str ()));
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1031
  NS_ASSERT (n);
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1032
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1033
  return n;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1034
}
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1035
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1036
Ptr <NetDevice>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1037
AnimationInterface::GetNetDeviceFromContext (std::string context)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1038
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1039
  // Use "NodeList/*/DeviceList/*/ as reference
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1040
  // where element [1] is the Node Id
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1041
  // element [2] is the NetDevice Id
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1042
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1043
  std::vector <std::string> elements = GetElementsFromContext (context);
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1044
  Ptr <Node> n = GetNodeFromContext (context);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1045
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1046
  return n->GetDevice (atoi (elements.at (3).c_str ()));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1047
}
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1048
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1049
void AnimationInterface::AddPendingUanPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1050
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1051
  m_pendingUanPackets[AnimUid] = pktinfo;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1052
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1053
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1054
                                  
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1055
void AnimationInterface::AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1056
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1057
  m_pendingWifiPackets[AnimUid] = pktinfo;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1058
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1059
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1060
void AnimationInterface::AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1061
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1062
  NS_ASSERT (pktinfo.m_txnd);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1063
  m_pendingWimaxPackets[AnimUid] = pktinfo;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1064
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1065
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1066
void AnimationInterface::AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1067
{
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1068
  NS_ASSERT (pktinfo.m_txnd);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1069
  m_pendingLtePackets[AnimUid] = pktinfo;
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1070
}
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1071
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1072
void AnimationInterface::AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1073
{
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1074
  NS_ASSERT (pktinfo.m_txnd);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1075
  m_pendingCsmaPackets[AnimUid] = pktinfo;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1076
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1077
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1078
uint64_t AnimationInterface::GetAnimUidFromPacket (Ptr <const Packet> p)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1079
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1080
  AnimByteTag tag;
7808
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1081
  TypeId tid = tag.GetInstanceTypeId ();
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1082
  ByteTagIterator i = p->GetByteTagIterator ();
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1083
  bool found = false;
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1084
  while (i.HasNext ())
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1085
    {
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1086
      ByteTagIterator::Item item = i.Next ();
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1087
      if (tid == item.GetTypeId ())
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1088
        {
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1089
          item.GetTag (tag);
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1090
          found = true;
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1091
        }
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1092
    }
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1093
  if (found)
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1094
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1095
      return tag.Get ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1096
    }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1097
  else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1098
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1099
      return 0;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1100
    }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1101
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1102
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
  1103
void AnimationInterface::UanPhyGenTxTrace (std::string context, Ptr<const Packet> p)
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1104
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1105
  if (!m_started || !IsInTimeWindow ())
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1106
    return;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1107
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1108
  NS_ASSERT (ndev);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1109
  Ptr <Node> n = ndev->GetNode ();
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1110
  NS_ASSERT (n);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1111
  gAnimUid++;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1112
  NS_LOG_INFO ("Uan TxBeginTrace for packet:" << gAnimUid);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1113
  AnimByteTag tag;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1114
  tag.Set (gAnimUid);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1115
  p->AddByteTag (tag);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1116
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1117
  AddPendingUanPacket (gAnimUid, pktinfo);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1118
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1119
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1120
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1121
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
  1122
void AnimationInterface::UanPhyGenRxTrace (std::string context, Ptr<const Packet> p)
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1123
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1124
  if (!m_started || !IsInTimeWindow ())
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1125
    return;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1126
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1127
  NS_ASSERT (ndev);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1128
  Ptr <Node> n = ndev->GetNode ();
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1129
  NS_ASSERT (n);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1130
  uint64_t AnimUid = GetAnimUidFromPacket (p);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1131
  NS_LOG_INFO ("UanPhyGenRxTrace for packet:" << AnimUid);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1132
  if (!UanPacketIsPending (AnimUid))
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1133
    {
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1134
      NS_LOG_WARN ("UanPhyGenRxBeginTrace: unknown Uid");
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1135
      return;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1136
    }
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1137
  m_pendingUanPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1138
  m_pendingUanPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1139
  OutputWirelessPacket (p, m_pendingUanPackets[AnimUid], m_pendingUanPackets[AnimUid].GetRxInfo (ndev));
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1140
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1141
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1142
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1143
void AnimationInterface::RemainingEnergyTrace (std::string context, double previousEnergy, double currentEnergy)
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1144
{
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1145
  if (!m_started || !IsInTimeWindow ())
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1146
    return;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1147
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1148
  const Ptr <const Node> node = GetNodeFromContext (context);
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1149
  const uint32_t nodeId = node->GetId ();
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1150
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1151
  NS_LOG_INFO ("Remaining energy on one of sources on node " << nodeId << ": " << currentEnergy);
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1152
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1153
  const Ptr<EnergySource> energySource = node->GetObject<EnergySource> ();
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1154
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1155
  NS_ASSERT (energySource);
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1156
  // Don't call GetEnergyFraction () because of recursion
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1157
  const double energyFraction = currentEnergy / energySource->GetInitialEnergy ();
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1158
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1159
  NS_LOG_INFO ("Total energy fraction on node " << nodeId << ": " << energyFraction);
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1160
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1161
  m_nodeEnergyFraction[nodeId] = energyFraction;
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1162
  WriteNodeUpdate (nodeId);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1163
}
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1164
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1165
void AnimationInterface::WifiPhyTxBeginTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1166
                                          Ptr<const Packet> p)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1167
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1168
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1169
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1170
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context); 
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1171
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1172
  Ptr <Node> n = ndev->GetNode ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1173
  NS_ASSERT (n);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1174
  // Add a new pending wireless
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1175
  gAnimUid++;
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1176
  NS_LOG_INFO ("Wifi TxBeginTrace for packet:" << gAnimUid);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1177
  AnimByteTag tag;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1178
  tag.Set (gAnimUid);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1179
  p->AddByteTag (tag);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1180
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1181
  AddPendingWifiPacket (gAnimUid, pktinfo);
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1182
  Ptr<WifiNetDevice> netDevice = DynamicCast<WifiNetDevice> (ndev);
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1183
  Mac48Address nodeAddr = netDevice->GetMac ()->GetAddress ();
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1184
  std::ostringstream oss; 
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1185
  oss << nodeAddr;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1186
  m_macToNodeIdMap[oss.str ()] = n->GetId ();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1187
  NS_LOG_INFO ("Added Mac" << oss.str () << " node:" <<m_macToNodeIdMap[oss.str ()]);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1188
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1189
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1190
void AnimationInterface::WifiPhyTxEndTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1191
                                            Ptr<const Packet> p)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1192
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1193
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1194
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1195
void AnimationInterface::WifiPhyTxDropTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1196
                                             Ptr<const Packet> p)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1197
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1198
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1199
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1200
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1201
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1202
  // Erase pending wifi
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1203
  uint64_t AnimUid = GetAnimUidFromPacket (p);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1204
  NS_LOG_INFO ("TxDropTrace for packet:" << AnimUid);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1205
  NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1206
  m_pendingWifiPackets.erase (m_pendingWifiPackets.find (AnimUid));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1207
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1208
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1209
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1210
void AnimationInterface::WifiPhyRxBeginTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1211
                                              Ptr<const Packet> p)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1212
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1213
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1214
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1215
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1216
  NS_ASSERT (ndev);
7765
1caa57dd8f67 NetAnim: Use PhyRxBegin rather than MacRx
John Abraham <john.abraham@gatech.edu>
parents: 7756
diff changeset
  1217
  Ptr <Node> n = ndev->GetNode ();
1caa57dd8f67 NetAnim: Use PhyRxBegin rather than MacRx
John Abraham <john.abraham@gatech.edu>
parents: 7756
diff changeset
  1218
  NS_ASSERT (n);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1219
  uint64_t AnimUid = GetAnimUidFromPacket (p);
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
  1220
  NS_LOG_INFO ("Wifi RxBeginTrace for packet:" << AnimUid);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1221
  if (!WifiPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1222
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1223
      NS_LOG_WARN ("WifiPhyRxBeginTrace: unknown Uid");
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1224
      std::ostringstream oss;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1225
      WifiMacHeader hdr;
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1226
      if (!p->PeekHeader (hdr))
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1227
      { 
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1228
        NS_LOG_WARN ("WifiMacHeader not present");
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1229
        return;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1230
      }
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1231
      oss << hdr.GetAddr2 ();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1232
      if (m_macToNodeIdMap.find (oss.str ()) == m_macToNodeIdMap.end ()) 
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1233
      {
8804
John Abraham <john.abraham@gatech.edu>
parents: 8803
diff changeset
  1234
        //NS_LOG_UNCOND (oss.str ());
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1235
        return;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1236
      }
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1237
      Ptr <Node> txNode = NodeList::GetNode (m_macToNodeIdMap[oss.str ()]);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1238
      AnimPacketInfo pktinfo (0, Simulator::Now (), Simulator::Now (), UpdatePosition (txNode), m_macToNodeIdMap[oss.str ()]);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1239
      AddPendingWifiPacket (AnimUid, pktinfo);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1240
      NS_LOG_WARN ("WifiPhyRxBegin: unknown Uid, but we are adding a wifi packet");
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1241
    }
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1242
  /// \todo NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1243
  m_pendingWifiPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1244
  m_pendingWifiPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1245
  OutputWirelessPacket (p, m_pendingWifiPackets[AnimUid], m_pendingWifiPackets[AnimUid].GetRxInfo (ndev));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1246
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1247
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1248
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1249
void AnimationInterface::WifiPhyRxEndTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1250
                                            Ptr<const Packet> p)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1251
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1252
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1253
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1254
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1255
  NS_ASSERT (ndev);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1256
  Ptr <Node> n = ndev->GetNode ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1257
  NS_ASSERT (n);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1258
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1259
  if (!WifiPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1260
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1261
      NS_LOG_WARN ("WifiPhyRxEndTrace: unknown Uid");
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1262
      AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1263
      AddPendingWifiPacket (AnimUid, pktinfo);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1264
    }
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1265
  /// \todo NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1266
  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1267
  pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1268
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1269
  if (pktrxInfo.IsPhyRxComplete ())
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1270
    {
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1271
      NS_LOG_INFO ("MacRxTrace for packet:" << AnimUid << " complete");
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1272
      OutputWirelessPacket (p, pktInfo, pktrxInfo);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1273
    }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1274
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1275
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1276
void AnimationInterface::WifiMacRxTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1277
                                         Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1278
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1279
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1280
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1281
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1282
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1283
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1284
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1285
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1286
  if (!WifiPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1287
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1288
      NS_LOG_WARN ("WifiMacRxTrace: unknown Uid");
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1289
      return;
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1290
    }
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1291
  /// \todo NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1292
  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1293
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1294
  if (pktrxInfo.IsPhyRxComplete ())
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1295
    {
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1296
      NS_LOG_INFO ("MacRxTrace for packet:" << AnimUid << " complete");
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1297
      OutputWirelessPacket (p, pktInfo, pktrxInfo);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1298
    }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1299
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1300
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1301
void AnimationInterface::WifiPhyRxDropTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1302
                                             Ptr<const Packet> p)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1303
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1304
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1305
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1306
void AnimationInterface::WimaxTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1307
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1308
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1309
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1310
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1311
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1312
  Ptr <Node> n = ndev->GetNode ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1313
  NS_ASSERT (n);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1314
  gAnimUid++;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1315
  NS_LOG_INFO ("WimaxTxTrace for packet:" << gAnimUid);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1316
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1317
  /// \todo 0.0001 is used until Wimax implements TxBegin and TxEnd traces
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1318
  AnimByteTag tag;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1319
  tag.Set (gAnimUid);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1320
  p->AddByteTag (tag);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1321
  AddPendingWimaxPacket (gAnimUid, pktinfo);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1322
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1323
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1324
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1325
void AnimationInterface::WimaxRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1326
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1327
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1328
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1329
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1330
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1331
  Ptr <Node> n = ndev->GetNode ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1332
  NS_ASSERT (n);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1333
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7808
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1334
  NS_LOG_INFO ("WimaxRxTrace for packet:" << AnimUid);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1335
  NS_ASSERT (WimaxPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1336
  AnimPacketInfo& pktInfo = m_pendingWimaxPackets[AnimUid];
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1337
  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1338
  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1339
  /// \todo 0.001 is used until Wimax implements RxBegin and RxEnd traces
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1340
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1341
  OutputWirelessPacket (p, pktInfo, pktrxInfo);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1342
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1343
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1344
void AnimationInterface::LteTxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1345
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1346
  if (!m_started || !IsInTimeWindow ())
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1347
    return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1348
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1349
  NS_ASSERT (ndev);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1350
  Ptr <Node> n = ndev->GetNode ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1351
  NS_ASSERT (n);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1352
  gAnimUid++;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1353
  NS_LOG_INFO ("LteTxTrace for packet:" << gAnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1354
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1355
  /// \todo 0.0001 is used until Lte implements TxBegin and TxEnd traces
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1356
  AnimByteTag tag;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1357
  tag.Set (gAnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1358
  p->AddByteTag (tag);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1359
  AddPendingLtePacket (gAnimUid, pktinfo);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1360
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1361
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1362
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1363
void AnimationInterface::LteRxTrace (std::string context, Ptr<const Packet> p, const Mac48Address & m)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1364
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1365
  if (!m_started || !IsInTimeWindow ())
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1366
    return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1367
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1368
  NS_ASSERT (ndev);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1369
  Ptr <Node> n = ndev->GetNode ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1370
  NS_ASSERT (n);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1371
  uint64_t AnimUid = GetAnimUidFromPacket (p);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1372
  NS_LOG_INFO ("LteRxTrace for packet:" << gAnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1373
  if (!LtePacketIsPending (AnimUid))
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1374
    {
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1375
      NS_LOG_WARN ("LteRxTrace: unknown Uid");
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1376
      return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1377
    }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1378
  AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1379
  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1380
  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1381
  /// \todo 0.001 is used until Lte implements RxBegin and RxEnd traces
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1382
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1383
  OutputWirelessPacket (p, pktInfo, pktrxInfo);
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1384
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1385
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1386
void AnimationInterface::LteSpectrumPhyTxStart (std::string context, Ptr<const PacketBurst> pb)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1387
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1388
  if (!m_started || !IsInTimeWindow ())
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1389
    return;
9204
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1390
  if (!pb) 
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1391
    {
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1392
      NS_LOG_WARN ("pb == 0. Not yet supported");
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1393
      return;
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1394
    }
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1395
  context = "/" + context;
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1396
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1397
  NS_ASSERT (ndev);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1398
  Ptr <Node> n = ndev->GetNode ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1399
  NS_ASSERT (n);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1400
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1401
  std::list <Ptr <Packet> > pbList = pb->GetPackets ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1402
  for (std::list <Ptr <Packet> >::iterator i  = pbList.begin ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1403
       i != pbList.end ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1404
       ++i)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1405
  {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1406
    Ptr <Packet> p = *i;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1407
    gAnimUid++;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1408
    NS_LOG_INFO ("LteSpectrumPhyTxTrace for packet:" << gAnimUid);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1409
    AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1410
    /// \todo 0.0001 is used until Lte implements TxBegin and TxEnd traces
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1411
    AnimByteTag tag;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1412
    tag.Set (gAnimUid);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1413
    p->AddByteTag (tag);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1414
    AddPendingLtePacket (gAnimUid, pktinfo);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1415
  }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1416
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1417
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1418
void AnimationInterface::LteSpectrumPhyRxStart (std::string context, Ptr<const PacketBurst> pb)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1419
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1420
  if (!m_started || !IsInTimeWindow ())
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1421
    return;
9204
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1422
  if (!pb) 
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1423
    {
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1424
      NS_LOG_WARN ("pb == 0. Not yet supported");
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1425
      return;
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1426
    }
dfcc276e4459 NetAnim: Lte trace sources changed since ns-3.15
John Abraham <john.abraham.in@gmail.com>
parents: 9171
diff changeset
  1427
  context = "/" + context;
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1428
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1429
  NS_ASSERT (ndev);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1430
  Ptr <Node> n = ndev->GetNode ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1431
  NS_ASSERT (n);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1432
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1433
  std::list <Ptr <Packet> > pbList = pb->GetPackets ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1434
  for (std::list <Ptr <Packet> >::iterator i  = pbList.begin ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1435
       i != pbList.end ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1436
       ++i)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1437
  {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1438
    Ptr <Packet> p = *i;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1439
    uint64_t AnimUid = GetAnimUidFromPacket (p);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1440
    NS_LOG_INFO ("LteSpectrumPhyRxTrace for packet:" << gAnimUid);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1441
    if (!LtePacketIsPending (AnimUid))
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1442
      {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1443
        NS_LOG_WARN ("LteSpectrumPhyRxTrace: unknown Uid");
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1444
        return;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1445
      }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1446
    AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1447
    pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1448
    pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1449
    /// \todo 0.001 is used until Lte implements RxBegin and RxEnd traces
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1450
    AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1451
    OutputWirelessPacket (p, pktInfo, pktrxInfo);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1452
  }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1453
}
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1454
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1455
void AnimationInterface::CsmaPhyTxBeginTrace (std::string context, Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1456
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1457
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1458
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1459
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1460
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1461
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1462
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1463
  gAnimUid++;
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1464
  NS_LOG_INFO ("CsmaPhyTxBeginTrace for packet:" << gAnimUid);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1465
  AnimByteTag tag;
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1466
  tag.Set (gAnimUid);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1467
  p->AddByteTag (tag);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1468
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1469
  AddPendingCsmaPacket (gAnimUid, pktinfo);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1470
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1471
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1472
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1473
void AnimationInterface::CsmaPhyTxEndTrace (std::string context, Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1474
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1475
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1476
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1477
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1478
  NS_ASSERT (ndev);
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1479
  Ptr <Node> n = ndev->GetNode ();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1480
  NS_ASSERT (n);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1481
  uint64_t AnimUid = GetAnimUidFromPacket (p);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1482
  NS_LOG_INFO ("CsmaPhyTxEndTrace for packet:" << AnimUid);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1483
  if (!CsmaPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1484
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1485
      NS_LOG_WARN ("CsmaPhyTxEndTrace: unknown Uid"); 
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1486
      AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1487
      AddPendingCsmaPacket (AnimUid, pktinfo);
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1488
      NS_LOG_WARN ("Unknown Uid, but adding Csma Packet anyway");
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1489
    }
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1490
  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1491
  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1492
  pktInfo.m_lbTx = Simulator::Now ().GetSeconds ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1493
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1494
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1495
void AnimationInterface::CsmaPhyRxEndTrace (std::string context, Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1496
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1497
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1498
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1499
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1500
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1501
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1502
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1503
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1504
  if (!CsmaPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1505
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1506
      NS_LOG_WARN ("CsmaPhyRxEndTrace: unknown Uid"); 
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1507
      return;
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1508
    }
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1509
  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1510
  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1511
  m_pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1512
  pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1513
  NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid);
10117
9d731ea9c62e Bug 1747 - Openflow traces not triggering on some occasions
John Abraham <john.abraham.in@gmail.com>
parents: 9977
diff changeset
  1514
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
9d731ea9c62e Bug 1747 - Openflow traces not triggering on some occasions
John Abraham <john.abraham.in@gmail.com>
parents: 9977
diff changeset
  1515
  if (pktrxInfo.IsPhyRxComplete ())
9d731ea9c62e Bug 1747 - Openflow traces not triggering on some occasions
John Abraham <john.abraham.in@gmail.com>
parents: 9977
diff changeset
  1516
    {
9d731ea9c62e Bug 1747 - Openflow traces not triggering on some occasions
John Abraham <john.abraham.in@gmail.com>
parents: 9977
diff changeset
  1517
      NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid << " complete");
9d731ea9c62e Bug 1747 - Openflow traces not triggering on some occasions
John Abraham <john.abraham.in@gmail.com>
parents: 9977
diff changeset
  1518
      OutputCsmaPacket (p, pktInfo, pktrxInfo);
9d731ea9c62e Bug 1747 - Openflow traces not triggering on some occasions
John Abraham <john.abraham.in@gmail.com>
parents: 9977
diff changeset
  1519
    }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1520
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1521
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1522
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1523
void AnimationInterface::CsmaMacRxTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1524
                                         Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1525
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1526
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1527
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1528
  NS_LOG_FUNCTION (this);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1529
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1530
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1531
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1532
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1533
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1534
  if (!CsmaPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1535
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1536
      NS_LOG_WARN ("CsmaMacRxTrace: unknown Uid"); 
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1537
      return;
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1538
    }
9870
6543f3876ff5 [Doxygen] use \todo
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 9810
diff changeset
  1539
  /// \todo NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1540
  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1541
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1542
  if (pktrxInfo.IsPhyRxComplete ())
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1543
    {
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1544
      NS_LOG_INFO ("MacRxTrace for packet:" << AnimUid << " complete");
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1545
      OutputCsmaPacket (p, pktInfo, pktrxInfo);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1546
    }
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1547
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1548
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1549
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1550
void AnimationInterface::MobilityCourseChangeTrace (Ptr <const MobilityModel> mobility)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1551
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1552
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1553
  if (!m_started || !IsInTimeWindow ())
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1554
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1555
  Ptr <Node> n = mobility->GetObject <Node> ();
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1556
  NS_ASSERT (n);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1557
  Vector v ;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1558
  if (!mobility)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1559
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1560
      v = GetPosition (n);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1561
    } 
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1562
  else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1563
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1564
      v = mobility->GetPosition ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1565
    }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1566
  UpdatePosition (n,v);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1567
  RecalcTopoBounds (v);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1568
  std::ostringstream oss; 
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1569
  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1570
  oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y, nodeColors[n->GetId ()]);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1571
  oss << GetXMLClose ("topology");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1572
  WriteN (oss.str (), m_f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1573
  WriteDummyPacket ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1574
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1575
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1576
bool AnimationInterface::NodeHasMoved (Ptr <Node> n, Vector newLocation)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1577
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1578
  Vector oldLocation = GetPosition (n);
7607
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
  1579
  if ((ceil (oldLocation.x) == ceil (newLocation.x)) &&
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
  1580
    (ceil (oldLocation.y) == ceil (newLocation.y)))
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1581
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1582
     
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1583
      return false;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1584
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1585
  else
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1586
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1587
      return true;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1588
    }
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
  1589
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
  1590
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1591
void AnimationInterface::MobilityAutoCheck ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1592
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1593
  if (!m_started || !IsInTimeWindow ())
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1594
    return;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1595
  std::vector <Ptr <Node> > MovedNodes = RecalcTopoBounds ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1596
  std::ostringstream oss;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1597
  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1598
  for (uint32_t i = 0; i < MovedNodes.size (); i++)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1599
    {
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1600
      Ptr <Node> n = MovedNodes [i];
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1601
      NS_ASSERT (n);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1602
      Vector v = GetPosition (n);
7607
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
  1603
      oss << GetXMLOpenClose_node (0, n->GetId (), v.x, v.y);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1604
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1605
  oss << GetXMLClose ("topology");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1606
  WriteN (oss.str (), m_f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1607
  WriteDummyPacket ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1608
  if (!Simulator::IsFinished ())
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1609
    {
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1610
      PurgePendingWifi ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1611
      PurgePendingWimax ();
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1612
      PurgePendingLte ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1613
      PurgePendingCsma ();
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1614
      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1615
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1616
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1617
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1618
std::string AnimationInterface::GetPacketMetadata (Ptr<const Packet> p)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1619
{
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1620
  std::ostringstream oss;
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1621
  p->Print (oss);
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1622
  return oss.str ();
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1623
}
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1624
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1625
uint64_t AnimationInterface::GetTracePktCount ()
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1626
{
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1627
  return m_currentPktCount;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1628
}
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1629
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1630
double AnimationInterface::GetNodeEnergyFraction (Ptr <const Node> node) const
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1631
{
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1632
  const EnergyFractionMap::const_iterator fractionIter = m_nodeEnergyFraction.find (node->GetId ());
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1633
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1634
  NS_ASSERT (fractionIter != m_nodeEnergyFraction.end ());
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1635
  return fractionIter->second;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1636
}
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1637
8978
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1638
int64_t
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1639
AnimationInterface::AssignStreams (int64_t stream)
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1640
{
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1641
  NS_LOG_FUNCTION (this << stream);
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1642
  m_uniformRandomVariable->SetStream (stream);
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1643
  return 1;
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1644
}
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1645
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1646
// Helper to output a wireless packet.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1647
// For now, only the XML interface is supported
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1648
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1649
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1650
std::string AnimationInterface::GetPreamble ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1651
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1652
  std::string s = 
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1653
    "<information><!-- \n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1654
    Description of attributes:\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1655
    =========================\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1656
    anim\n\
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
  1657
    * ver = Current version\n\
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1658
    topology\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1659
    * minX = minimum X coordinate of the canvas\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1660
    * minY = minimum Y coordinate of the canvas\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1661
    * maxX = maximum X coordinate of the canvas\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1662
    * maxY = maximum Y coordinate of the canvas\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1663
    node\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1664
    * id = Node Id\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1665
    * locX = X coordinate\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1666
    * locY = Y coordinate\n\
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1667
    * r = Red component\n\
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1668
    * g = Green component\n\
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1669
    * b = Blue component\n\
7443
32635b529440 NetAnim minor comments
John Abraham <john.abraham@gatech.edu>
parents: 7368
diff changeset
  1670
    link\n\
32635b529440 NetAnim minor comments
John Abraham <john.abraham@gatech.edu>
parents: 7368
diff changeset
  1671
    * fromId = From Node Id\n\
32635b529440 NetAnim minor comments
John Abraham <john.abraham@gatech.edu>
parents: 7368
diff changeset
  1672
    * toId   = To Node Id\n\
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1673
    * fd = From Node description (for IP Address)\n\
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1674
    * td = To Node description (for IP Address)\n\
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1675
    * ld = Link description (for Bandwidth, delay etc)\n\
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1676
    linkupdate\n\
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1677
    * t = Simulation time\n\
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1678
    * ld = Link description (for Bandwidth, delay etc)\n\
8948
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1679
    nodeupdate\n\
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1680
    * t = Simulation time\n\
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1681
    * descr = Node description\n\
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1682
    * r = Red component\n\
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1683
    * g = Green component\n\
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1684
    * b = Blue component\n\
8b2e2024ead7 [Bug 1478] New: Support run-time changes to node visibility, color, and description
John Abraham <john.abraham.in@gmail.com>
parents: 8934
diff changeset
  1685
    * visible = Node visibility\n\
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1686
    * rc = Residual energy (between 0 and 1)\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1687
    p\n\
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1688
    * fId = From Node Id\n\
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1689
    * fbTx = First bit transmit time\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1690
    * lbTx = Last bit transmit time\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1691
    * tId = To Node Id\n\
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1692
    * fbRx = First bit Rx Time\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1693
    * lbRx = Last bit Rx\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1694
    * meta-info = Packet meta data\n\
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1695
    wp\n\
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1696
    * fId = From Node Id\n\
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1697
    * fbTx = First bit transmit time\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1698
    * lbTx = Last bit transmit time\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1699
    * range = Reception range\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1700
    * tId = To Node Id\n\
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1701
    * fbRx = First bit Rx time\n\
9067
750c8f38497d NetAnim: typo
John Abraham <john.abraham.in@gmail.com>
parents: 9066
diff changeset
  1702
    * meta-info = Packet meta data\n\
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1703
    * lbRx = Last bit Rx time-->\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1704
    </information>\n";
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1705
return s;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1706
}
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1707
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1708
void AnimationInterface::OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1709
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1710
  StartNewTraceFile ();
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1711
  NS_ASSERT (m_xml);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1712
  std::ostringstream oss;
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1713
  uint32_t nodeId =  0;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1714
  if (pktInfo.m_txnd)
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1715
    nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1716
  else
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1717
    nodeId = pktInfo.m_txNodeId;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1718
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1719
  double lbTx = pktInfo.firstlastbitDelta + pktInfo.m_fbTx;
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1720
  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1721
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1722
  oss << GetXMLOpenClose_p ("wp", nodeId, pktInfo.m_fbTx, lbTx, rxId,
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1723
                            pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1724
  WriteN (oss.str (), m_f);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1725
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1726
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1727
void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1728
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1729
  StartNewTraceFile ();
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1730
  NS_ASSERT (m_xml);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1731
  std::ostringstream oss;
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1732
  NS_ASSERT (pktInfo.m_txnd);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1733
  uint32_t nodeId = pktInfo.m_txnd->GetNode ()->GetId ();
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1734
  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1735
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1736
  oss << GetXMLOpenClose_p ("p", nodeId, pktInfo.m_fbTx, pktInfo.m_lbTx, rxId,
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1737
                            pktrxInfo.m_fbRx, pktrxInfo.m_lbRx, m_enablePacketMetadata? GetPacketMetadata (p):"");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1738
  WriteN (oss.str (), m_f);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1739
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1740
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1741
void AnimationInterface::SetConstantPosition (Ptr <Node> n, double x, double y, double z)
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1742
{
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1743
  NS_ASSERT (n);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1744
  Ptr<ConstantPositionMobilityModel> hubLoc =  n->GetObject<ConstantPositionMobilityModel> ();
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1745
  if (hubLoc == 0)
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1746
    {
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1747
      hubLoc = CreateObject<ConstantPositionMobilityModel> ();
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1748
      n->AggregateObject (hubLoc);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1749
    }
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1750
  Vector hubVec (x, y, z);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1751
  hubLoc->SetPosition (hubVec);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1752
  NS_LOG_INFO ("Node:" << n->GetId () << " Position set to:(" << x << "," << y << "," << z << ")");
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1753
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1754
}
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1755
10196
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1756
void AnimationInterface::SetBoundary (double minX, double minY, double maxX, double maxY)
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1757
{
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1758
  if (initialized)
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1759
    NS_FATAL_ERROR ("SetBoundary must be used prior to creating the AnimationInterface object");
10197
0cb30dac6408 NetAnim: ASSERT minX, minY conditions in SetBoundary
John Abraham
parents: 10196
diff changeset
  1760
  NS_ASSERT (minX < maxX);
0cb30dac6408 NetAnim: ASSERT minX, minY conditions in SetBoundary
John Abraham
parents: 10196
diff changeset
  1761
  NS_ASSERT (minY < maxY);
10196
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1762
  if (!userBoundary)
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1763
    {
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1764
      userBoundary = new Rectangle;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1765
    }
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1766
  userBoundary->xMax = maxX;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1767
  userBoundary->yMax = maxY;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1768
  userBoundary->xMin = minX;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1769
  userBoundary->yMin = minY;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1770
}
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1771
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1772
void AnimationInterface::SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1773
{
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1774
  if (initialized)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1775
    NS_FATAL_ERROR ("SetNodeColor must be used prior to creating the AnimationInterface object");
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1776
  NS_ASSERT (n);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1777
  NS_LOG_INFO ("Setting node color for Node Id:" << n->GetId ());
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1778
  struct Rgb rgb = {r, g, b};
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1779
  nodeColors[n->GetId ()] = rgb;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1780
}
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1781
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1782
void AnimationInterface::ShowNode (uint32_t nodeId, bool show)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1783
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1784
  NS_ASSERT (NodeList::GetNode (nodeId));
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1785
  NS_LOG_INFO ("Setting node visibility for Node Id:" << nodeId); 
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1786
  WriteNodeUpdate (nodeId);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1787
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1788
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1789
void AnimationInterface::ShowNode (Ptr <Node> n, bool show)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1790
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1791
  ShowNode (n, show);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1792
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1793
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1794
void AnimationInterface::WriteNodeUpdate (uint32_t nodeId)
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1795
{
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1796
  std::ostringstream oss;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1797
  oss << GetXMLOpenClose_nodeupdate (nodeId);
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1798
  WriteN (oss.str (), m_f);
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1799
}
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1800
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1801
void AnimationInterface::UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1802
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1803
  UpdateNodeColor (n->GetId (), r, g, b);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1804
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1805
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1806
void AnimationInterface::UpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1807
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1808
  NS_ASSERT (NodeList::GetNode (nodeId));
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1809
  NS_LOG_INFO ("Setting node color for Node Id:" << nodeId); 
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1810
  struct Rgb rgb = {r, g, b};
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1811
  nodeColors[nodeId] = rgb;
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1812
  WriteNodeUpdate (nodeId);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1813
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1814
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1815
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1816
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1817
void AnimationInterface::SetNodeColor (NodeContainer nc, uint8_t r, uint8_t g, uint8_t b)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1818
{
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1819
  for (uint32_t i = 0; i < nc.GetN (); ++i)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1820
    {
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1821
      Ptr <Node> n = nc.Get (i);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1822
      NS_ASSERT (n);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1823
      SetNodeColor (n, r, g, b);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1824
    }
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1825
}
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1826
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1827
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1828
void AnimationInterface::UpdateLinkDescription (uint32_t fromNode, uint32_t toNode,
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1829
                                                std::string linkDescription)
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1830
{
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1831
  std::ostringstream oss;
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1832
  oss << GetXMLOpenClose_linkupdate (fromNode, toNode, linkDescription);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1833
  WriteN (oss.str (), m_f);
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1834
}
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1835
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1836
void AnimationInterface::UpdateLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1837
                                                std::string linkDescription)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1838
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1839
  NS_ASSERT (fromNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1840
  NS_ASSERT (toNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1841
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1842
  oss << GetXMLOpenClose_linkupdate (fromNode->GetId (), toNode->GetId (), linkDescription);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1843
  WriteN (oss.str (), m_f);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1844
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1845
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1846
void AnimationInterface::SetLinkDescription (uint32_t fromNode, uint32_t toNode, 
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1847
                                             std::string linkDescription,
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1848
                                             std::string fromNodeDescription,
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1849
                                             std::string toNodeDescription)
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1850
{
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1851
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1852
  P2pLinkNodeIdPair p2pPair;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1853
  p2pPair.fromNode = fromNode;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1854
  p2pPair.toNode = toNode;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1855
  LinkProperties lp = { fromNodeDescription, toNodeDescription, linkDescription };
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1856
  linkProperties[p2pPair] = lp;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1857
  /* DEBUG */
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1858
  /*
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1859
  for (std::map <P2pLinkNodeIdPair, LinkProperties>::const_iterator i = linkProperties.begin ();
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1860
	i != linkProperties.end (); ++i)
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1861
   {
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1862
    P2pLinkNodeIdPair ppair = i->first;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1863
    LinkProperties l = i->second;
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1864
    NS_LOG_UNCOND ("A:" << ppair.fromNode << " B:" << ppair.toNode << " ad:" << l.fromNodeDescription << " bd:" << l.toNodeDescription << " ld:" << l.linkDescription);
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1865
     
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1866
   }
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1867
   */
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1868
}
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1869
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1870
void AnimationInterface::SetLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1871
                                             std::string linkDescription,
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1872
                                             std::string fromNodeDescription,
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1873
                                             std::string toNodeDescription)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1874
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1875
  NS_ASSERT (fromNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1876
  NS_ASSERT (toNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1877
  SetLinkDescription (fromNode->GetId (), toNode->GetId (), linkDescription, fromNodeDescription, toNodeDescription);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1878
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1879
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1880
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1881
void AnimationInterface::SetNodeDescription (Ptr <Node> n, std::string descr) 
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1882
{
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1883
  if (initialized)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1884
    NS_FATAL_ERROR ("SetNodeDescription must be used prior to creating the AnimationInterface object");
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1885
  NS_ASSERT (n);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1886
  nodeDescriptions[n->GetId ()] = descr;
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1887
}
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1888
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1889
void AnimationInterface::UpdateNodeDescription (Ptr <Node> n, std::string descr)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1890
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1891
  UpdateNodeDescription (n->GetId (), descr);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1892
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1893
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1894
void AnimationInterface::UpdateNodeDescription (uint32_t nodeId, std::string descr)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1895
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1896
  NS_ASSERT (NodeList::GetNode (nodeId));
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1897
  nodeDescriptions[nodeId] = descr;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1898
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1899
  oss << GetXMLOpenClose_nodeupdate (nodeId);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1900
  WriteN (oss.str (), m_f);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1901
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1902
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1903
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1904
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1905
void AnimationInterface::SetNodeDescription (NodeContainer nc, std::string descr)
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1906
{
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1907
  if (initialized)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1908
    NS_FATAL_ERROR ("SetNodeDescription must be used prior to creating the AnimationInterface object");
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1909
  for (uint32_t i = 0; i < nc.GetN (); ++i)
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1910
    {
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1911
      Ptr <Node> n = nc.Get (i);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1912
      NS_ASSERT (n);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1913
      nodeDescriptions[n->GetId ()] = descr;
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1914
    }
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1915
}
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1916
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1917
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1918
// XML Private Helpers
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1919
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1920
std::string AnimationInterface::GetXMLOpen_anim (uint32_t lp)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1921
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1922
  std::ostringstream oss;
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
  1923
  oss <<"<anim ver=\"" << GetNetAnimVersion () << "\">\n";
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1924
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1925
}
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1926
std::string AnimationInterface::GetXMLOpen_topology (double minX, double minY, double maxX, double maxY)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1927
{
10196
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1928
  if (userBoundary)
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1929
    {
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1930
      minX = userBoundary->xMin;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1931
      minY = userBoundary->yMin;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1932
      maxX = userBoundary->xMax;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1933
      maxY = userBoundary->yMax;
4d23b48380a7 NetAnim: Allow the user to set the boundary
John Abraham
parents: 10117
diff changeset
  1934
    }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1935
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1936
  oss << "<topology minX = \"" << minX << "\" minY = \"" << minY
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1937
      << "\" maxX = \"" << maxX << "\" maxY = \"" << maxY
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1938
      << "\">" << std::endl;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1939
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1940
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1941
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1942
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1943
std::string AnimationInterface::GetXMLOpenClose_nodeupdate (uint32_t id, bool visible)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1944
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1945
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1946
  oss << "<nodeupdate id=\"" << id << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1947
  oss << " t=\"" << Simulator::Now ().GetSeconds () << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1948
  if (visible)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1949
    oss << " visible=\"" << 1 << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1950
  else
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1951
    oss << " visible=\"" << 0 << "\"";
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1952
  AppendXMLNodeDescription (oss, id);
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1953
  AppendXMLNodeColor (oss, nodeColors[id]);
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1954
  AppendXMLRemainingEnergy (oss, id);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1955
10488
72386c711369 Debug: correct string end in case of battery charge serialization
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10485
diff changeset
  1956
  oss  <<"/>\n";
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1957
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1958
  return oss.str ();
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1959
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1960
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1961
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1962
std::string AnimationInterface::GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1963
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1964
  std::ostringstream oss;
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1965
  oss <<"<node id=\"" << id << "\""; 
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1966
  AppendXMLNodeDescription (oss, id);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1967
  oss << " locX = \"" << locX << "\" " << "locY = \"" << locY << "\"";
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1968
  AppendXMLRemainingEnergy (oss, id);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1969
10488
72386c711369 Debug: correct string end in case of battery charge serialization
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10485
diff changeset
  1970
  oss  <<"/>\n";
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1971
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1972
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1973
}
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1974
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1975
std::string AnimationInterface::GetXMLOpenClose_node (uint32_t lp, uint32_t id, double locX, double locY, struct Rgb rgb)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1976
{
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1977
  std::ostringstream oss;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1978
  oss <<"<node id = \"" << id << "\"";
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1979
  AppendXMLNodeDescription (oss, id);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1980
  oss << " locX=\"" << locX << "\" " << "locY=\"" << locY << "\"";
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1981
  AppendXMLNodeColor (oss, rgb);
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  1982
  AppendXMLRemainingEnergy (oss, id);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1983
10488
72386c711369 Debug: correct string end in case of battery charge serialization
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10485
diff changeset
  1984
  oss  <<"/>\n";
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  1985
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1986
  return oss.str ();
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1987
}
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1988
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1989
std::string AnimationInterface::GetXMLOpenClose_linkupdate (uint32_t fromId, uint32_t toId, std::string linkDescription)
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1990
{
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1991
  std::ostringstream oss;
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1992
  oss << "<linkupdate t=\"" << Simulator::Now ().GetSeconds () << "\""
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1993
      << " fromId=\"" << fromId
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1994
      << "\" toId=\"" << toId
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1995
      << "\" ";
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1996
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1997
  oss << " ld=\"" << linkDescription << "\""
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1998
      << " />\n";
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1999
  return oss.str ();
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  2000
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  2001
}
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  2002
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2003
std::string AnimationInterface::GetXMLOpenClose_link (uint32_t fromLp, uint32_t fromId, uint32_t toLp, uint32_t toId)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2004
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2005
  std::ostringstream oss;
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  2006
  oss << "<link fromId=\"" << fromId
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2007
      << "\" toId=\"" << toId
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2008
      << "\" ";
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2009
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2010
  LinkProperties lprop ;
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2011
  lprop.fromNodeDescription = "";
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2012
  lprop.toNodeDescription = "";
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2013
  lprop.linkDescription = "";
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2014
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2015
  P2pLinkNodeIdPair p1 = { fromId, toId };
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2016
  P2pLinkNodeIdPair p2 = { toId, fromId };
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2017
  if (linkProperties.find (p1) != linkProperties.end ())
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2018
    {
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2019
      lprop = linkProperties[p1];
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2020
    }
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2021
  else if (linkProperties.find (p2) != linkProperties.end ())
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2022
    {
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2023
      lprop = linkProperties[p2];
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2024
    }
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2025
   
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2026
  oss << " fd=\"" << lprop.fromNodeDescription << "\""
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2027
      << " td=\"" << lprop.toNodeDescription << "\""
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  2028
      << " ld=\"" << lprop.linkDescription << "\""
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2029
      << " />\n";
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2030
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2031
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2032
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2033
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2034
std::string AnimationInterface::GetXMLOpen_packet (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, std::string auxInfo)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2035
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2036
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2037
  oss << std::setprecision (10);
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2038
  oss << "<p fId=\"" << fromId
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2039
      << "\" fbTx=\"" << fbTx
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2040
      << "\" lbTx=\"" << lbTx
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2041
      << (auxInfo.empty ()?"":"\" aux=\"") << auxInfo.c_str () << "\">";
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2042
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2043
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2044
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2045
std::string AnimationInterface::GetXMLOpenClose_routing (uint32_t nodeId, std::string routingInfo)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2046
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2047
  std::ostringstream oss;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2048
  oss << "<" << "rt" << " t=\"" << Simulator::Now ().GetSeconds () << "\"" 
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2049
      << " id=\"" << nodeId << "\""
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2050
      << " info=\"" << routingInfo.c_str () << "\""
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2051
      << "/>" << std::endl;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2052
  return oss.str ();
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  2053
}
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2054
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2055
std::string AnimationInterface::GetXMLOpenClose_rp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2056
{
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2057
  std::ostringstream oss;
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2058
  oss << "<" << "rp" << " t =\"" << Simulator::Now ().GetSeconds () << "\""
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2059
      << " id=\"" << nodeId << "\"" << " d=\"" << destination.c_str () << "\""
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2060
      << " c=\""  << rpElements.size () << "\"" << ">" << std::endl;
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2061
  for (Ipv4RoutePathElements::const_iterator i = rpElements.begin ();
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2062
       i != rpElements.end ();
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2063
       ++i)
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2064
    {
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2065
      Ipv4RoutePathElement rpElement = *i;
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2066
      oss << "<rpe" << " n=\"" << rpElement.nodeId << "\"" << " nH=\"" << rpElement.nextHop.c_str () << "\"" << "/>" << std::endl;
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2067
    }
9977
f93b5fce24b1 NetAnim: Typo in rp tag
John Abraham <john.abraham.in@gmail.com>
parents: 9961
diff changeset
  2068
  oss << "</rp>" << std::endl;
9247
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2069
  return oss.str ();
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2070
}
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2071
740c45821021 NetAnim: Implement route path element XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 9246
diff changeset
  2072
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2073
std::string AnimationInterface::GetXMLOpenClose_p (std::string pktType, uint32_t fId, double fbTx, double lbTx, 
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2074
                                                   uint32_t tId, double fbRx, double lbRx, std::string metaInfo, 
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2075
                                                   std::string auxInfo)
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2076
{
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2077
  std::ostringstream oss;
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2078
  oss << std::setprecision (10);
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2079
  oss << "<" << pktType << " fId=\"" << fId
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2080
      << "\" fbTx=\"" << fbTx
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2081
      << "\" lbTx=\"" << lbTx << "\"";
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2082
  if (!auxInfo.empty ())
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2083
    {
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2084
      oss << " aux=\"" << auxInfo.c_str () << "\"";
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2085
    }
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2086
  if (!metaInfo.empty ())
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2087
    {
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2088
      oss << " meta-info=\"" << metaInfo.c_str () << "\"";
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2089
    }
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2090
  oss << " tId=\"" << tId << "\" fbRx=\"" << fbRx << "\" lbRx=\"" << lbRx << "\">" << std::endl;
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2091
  return oss.str ();
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2092
}
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2093
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2094
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  2095
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  2096
std::string AnimationInterface::GetXMLOpen_wpacket (uint32_t fromLp, uint32_t fromId, double fbTx, double lbTx, double range)
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2097
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2098
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2099
  oss << std::setprecision (10);
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  2100
  oss << "<wpacket fromId=\"" << fromId
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  2101
      << "\" fbTx=\"" << fbTx
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  2102
      << "\" lbTx=\"" << lbTx
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  2103
      << "\" range=\"" << range << "\">" << std::endl;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2104
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2105
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2106
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2107
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2108
std::string AnimationInterface::GetXMLOpenClose_rx (uint32_t toLp, uint32_t toId, double fbRx, double lbRx)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2109
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2110
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2111
  oss << std::setprecision (10);
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  2112
  oss << "<rx toId=\"" << toId
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2113
      << "\" fbRx=\"" << fbRx
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2114
      << "\" lbRx=\"" << lbRx
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2115
      << "\"/>" << std::endl;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2116
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2117
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2118
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2119
std::string AnimationInterface::GetXMLOpenClose_meta (std::string metaInfo)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2120
{
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2121
  std::ostringstream oss;
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2122
  oss << "<meta info=\""
7770
a192064b0af6 NetAnim: missing quotes
John Abraham <john.abraham@gatech.edu>
parents: 7769
diff changeset
  2123
      << metaInfo << "\" />" << std::endl;
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2124
  return oss.str ();      
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2125
}
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  2126
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2127
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2128
std::string AnimationInterface::GetXMLOpenClose_NonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType)
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2129
{
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2130
  std::ostringstream oss;
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2131
  oss << "<nonp2plinkproperties id=\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2132
      << id << "\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2133
      << " ipv4Address=\"" << ipv4Address << "\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2134
      << " channelType=\"" << channelType << "\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2135
      << "/>" << std::endl;
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2136
  return oss.str ();
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2137
}
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2138
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  2139
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2140
const std::vector<std::string> AnimationInterface::GetElementsFromContext (const std::string& context) const
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2141
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2142
  std::vector <std::string> elements;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2143
  size_t pos1=0, pos2;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2144
  while (pos1 != context.npos)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2145
  {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2146
    pos1 = context.find ("/",pos1);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2147
    pos2 = context.find ("/",pos1+1);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2148
    elements.push_back (context.substr (pos1+1,pos2-(pos1+1)));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2149
    pos1 = pos2; 
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2150
    pos2 = context.npos;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2151
  }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2152
  return elements;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2153
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2154
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2155
void AnimationInterface::AppendXMLNodeDescription (std::ostream& ostream, uint32_t id) const
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2156
{
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2157
  if (nodeDescriptions.find (id) != nodeDescriptions.end ())
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2158
    {
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2159
      ostream << " descr=\""<< nodeDescriptions[id] << "\"";
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2160
    }
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2161
  else
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2162
    {
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2163
      ostream << " descr=\"\"";
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2164
    }
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2165
}
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2166
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2167
void AnimationInterface::AppendXMLNodeColor (std::ostream& ostream, const Rgb& color) const
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2168
{
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2169
  const uint8_t r = color.r;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2170
  const uint8_t g = color.g;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2171
  const uint8_t b = color.b;
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2172
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2173
  ostream << " r=\"" << (uint32_t)r << "\" "
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2174
          << " g=\"" << (uint32_t)g << "\" "
10488
72386c711369 Debug: correct string end in case of battery charge serialization
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10485
diff changeset
  2175
          << " b=\"" << (uint32_t)b <<"\" ";
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2176
}
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2177
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2178
void AnimationInterface::AppendXMLRemainingEnergy (std::ostream& ostream, uint32_t id) const
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2179
{
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2180
  const EnergyFractionMap::const_iterator fractionIter = m_nodeEnergyFraction.find (id);
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2181
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2182
  if (fractionIter != m_nodeEnergyFraction.end ())
10488
72386c711369 Debug: correct string end in case of battery charge serialization
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10485
diff changeset
  2183
    ostream << "rc = \"" << fractionIter->second <<"\" ";
10491
c2bdcb44ccb2 Whitespaces added according to the coding standard after review
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10490
diff changeset
  2184
  else if (NodeList::GetNode (id)->GetObject<EnergySource>())
10488
72386c711369 Debug: correct string end in case of battery charge serialization
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10485
diff changeset
  2185
    ostream << "rc = \"1\" ";
10485
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2186
}
83fc28889371 Added remaining energy tracing (Task #4593)
Evgeny Kalishenko <ydginster@gmail.com>
parents: 10197
diff changeset
  2187
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2188
TypeId
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2189
AnimByteTag::GetTypeId (void)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2190
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2191
  static TypeId tid = TypeId ("ns3::AnimByteTag")
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2192
    .SetParent<Tag> ()
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2193
    .AddConstructor<AnimByteTag> ()
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2194
  ;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2195
  return tid;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2196
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2197
TypeId
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2198
AnimByteTag::GetInstanceTypeId (void) const
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2199
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2200
  return GetTypeId ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2201
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2202
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2203
uint32_t
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2204
AnimByteTag::GetSerializedSize (void) const
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2205
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2206
  return sizeof (uint64_t);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2207
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2208
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2209
AnimByteTag::Serialize (TagBuffer i) const
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2210
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2211
  i.WriteU64 (m_AnimUid);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2212
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2213
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2214
AnimByteTag::Deserialize (TagBuffer i)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2215
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2216
  m_AnimUid = i.ReadU64 ();
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2217
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2218
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2219
AnimByteTag::Print (std::ostream &os) const
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2220
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2221
  os << "AnimUid=" << m_AnimUid;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2222
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2223
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2224
AnimByteTag::Set (uint64_t AnimUid)
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2225
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2226
  m_AnimUid = AnimUid;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2227
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2228
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2229
uint64_t
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2230
AnimByteTag::Get (void) const
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2231
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2232
  return m_AnimUid;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2233
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  2234
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  2235
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
  2236
} // namespace ns3