src/netanim/model/animation-interface.cc
author John Abraham <john.abraham.in@gmail.com>
Mon, 03 Dec 2012 13:30:17 -0800
changeset 9161 9c62cfdc7946
parent 9158 d493cb1bc11a
child 9171 60b05583315c
permissions -rw-r--r--
NetAnim: Add support for tracking routing table
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>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    18
 */
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
// Interface between ns3 and the network animator
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    21
7368
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    22
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    23
// ns3 includes
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    24
#include "ns3/animation-interface.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    25
#include "ns3/channel.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    26
#include "ns3/config.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    27
#include "ns3/node.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    28
#include "ns3/mobility-model.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    29
#include "ns3/packet.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    30
#include "ns3/simulator.h"
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    31
#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
    32
#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
    33
#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
    34
#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
    35
#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
    36
#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
    37
#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
    38
#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
    39
#include "ns3/uan-net-device.h"
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
    40
#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
    41
#include "ns3/ipv4.h"
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    42
#include "ns3/ipv4-routing-protocol.h" 
7368
eaf06b48cb5c Missing header files since modularization for socket cases
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
    43
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents: 9012
diff changeset
    44
#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
    45
#include <unistd.h>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    46
#include <sstream>
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    47
#include <fstream>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    48
#include <string>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    49
#include <iomanip>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    50
#include <map>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    51
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    52
NS_LOG_COMPONENT_DEFINE ("AnimationInterface");
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    53
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
    54
namespace ns3 {
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
    55
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
    56
#define PURGE_INTERVAL 5
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
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
static bool initialized = false;
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
    59
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
    60
std::map <uint32_t, Rgb> AnimationInterface::nodeColors;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
    61
std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> AnimationInterface::linkProperties;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
    62
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    63
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    64
AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML)
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    65
  : 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
    66
    m_outputFileName (fn),
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
    67
    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
    68
    m_writeCallback (0), m_started (false), 
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    69
    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
    70
    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
    71
    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
    72
    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
    73
{
8978
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
    74
  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
    75
  initialized = true;
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
    76
  StartAnimation ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    77
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    78
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    79
AnimationInterface::~AnimationInterface ()
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    80
{
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    81
  StopAnimation ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    82
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
    83
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    84
void AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    85
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    86
  m_routingFileName = fileName;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    87
  SetRoutingOutputFile (m_routingFileName);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    88
  m_routingStopTime = stopTime;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    89
  m_routingPollInterval = pollInterval;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    90
  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
    91
  Simulator::Schedule (startTime, &AnimationInterface::TrackIpv4Route, this);
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
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    94
void AnimationInterface::EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, NodeContainer nc, Time pollInterval)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    95
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    96
  m_routingNc = nc;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    97
  EnableIpv4RouteTracking (fileName, startTime, stopTime, pollInterval);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    98
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
    99
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   100
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
   101
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   102
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   103
  NS_ASSERT (n);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   104
  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
   105
  if (!ipv4)
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
      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
   108
      return "";
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
  std::stringstream stream;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   111
  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
   112
  ipv4->GetRoutingProtocol ()->PrintRoutingTable (routingstream);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   113
  return stream.str();
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
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   116
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   117
void AnimationInterface::TrackIpv4Route ()
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   118
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   119
  if (Simulator::Now () > m_routingStopTime)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   120
  {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   121
    NS_LOG_INFO ("TrackIpv4Route completed");
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   122
    return;
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
  if (m_routingNc.GetN ())
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   125
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   126
      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
   127
        {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   128
          Ptr <Node> n = *i;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   129
          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
   130
        }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   131
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   132
  else
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   133
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   134
      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
   135
        {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   136
          Ptr <Node> n = *i;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   137
          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
   138
        }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   139
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   140
  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
   141
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   142
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   143
void AnimationInterface::SetXMLOutput ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   144
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   145
  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
   146
  m_xml = true;
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   147
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   148
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   149
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   150
void AnimationInterface::StartNewTraceFile ()
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   151
{
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   152
  static int i = 0;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   153
  std::ostringstream oss;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   154
  oss << i;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   155
  ++m_currentPktCount;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   156
  if (m_currentPktCount <= m_maxPktsPerFile)
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   157
    {
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   158
      return;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   159
    }
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   160
  StopAnimation ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   161
  m_outputFileName = m_originalFileName + "-" + oss.str ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   162
  StartAnimation (true);
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   163
  ++i;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   164
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   165
}
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   166
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   167
std::string AnimationInterface::GetNetAnimVersion ()
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   168
{
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
   169
  return "netanim-3.102";
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   170
}
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
   171
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   172
void AnimationInterface::SetStartTime (Time t)
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   173
{
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   174
  m_startTime = t;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   175
}
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   176
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   177
void AnimationInterface::SetStopTime (Time t)
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   178
{
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   179
  m_stopTime = t;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   180
}
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   181
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   182
bool AnimationInterface::SetOutputFile (const std::string& fn)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   183
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   184
  if (m_outputFileSet)
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   185
    {
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   186
      return true;
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   187
    }
8778
bf37816b37ad NetAnim: provide unlink for test artifact
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
   188
  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
   189
  m_f = std::fopen (fn.c_str (), "w");
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   190
  if (!m_f)
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   191
    {
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   192
      NS_FATAL_ERROR ("Unable to open Animation output file");
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   193
      return false; // Can't open
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   194
    }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   195
  m_outputFileName = fn;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   196
  m_outputFileSet = true;
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   197
  return true;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   198
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   199
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   200
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
   201
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   202
  if (m_routingF)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   203
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   204
      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
   205
      return false;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   206
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   207
  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
   208
  if (!m_routingF)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   209
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   210
      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
   211
      return false;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   212
    }
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   213
  return true;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   214
}
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   215
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   216
void AnimationInterface::EnablePacketMetadata (bool enable)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   217
{
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   218
   m_enablePacketMetadata = enable;
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   219
   if (enable)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   220
     Packet::EnablePrinting ();
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   221
}
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   222
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   223
bool AnimationInterface::IsInitialized ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   224
{
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   225
  return initialized;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   226
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   227
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   228
bool AnimationInterface::IsStarted ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   229
{
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   230
  return m_started;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   231
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   232
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   233
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   234
void AnimationInterface::SetAnimWriteCallback (AnimWriteCallback cb)
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   235
{
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   236
  m_writeCallback = cb;
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   237
}
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   238
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   239
void AnimationInterface::ResetAnimWriteCallback ()
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   240
{
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   241
  m_writeCallback = 0;
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   242
}
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   243
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   244
bool AnimationInterface::IsInTimeWindow ()
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   245
{
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   246
  if ((Simulator::Now () >= m_startTime) && 
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   247
      (Simulator::Now () <= m_stopTime))
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   248
    return true;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   249
  else
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   250
    return false;
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   251
}
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   252
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   253
bool AnimationInterface::UanPacketIsPending (uint64_t AnimUid)
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   254
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   255
  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
   256
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   257
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   258
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
   259
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   260
  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
   261
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   262
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   263
bool AnimationInterface::CsmaPacketIsPending (uint64_t AnimUid)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   264
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   265
  return (m_pendingCsmaPackets.find (AnimUid) != m_pendingCsmaPackets.end ());
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   266
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   267
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   268
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   269
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
   270
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   271
  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
   272
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   273
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   274
bool AnimationInterface::LtePacketIsPending (uint64_t AnimUid)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   275
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   276
  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
   277
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   278
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   279
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
   280
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   281
  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
   282
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   283
7476
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   284
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
   285
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   286
  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
   287
}
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7475
diff changeset
   288
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   289
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
   290
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   291
  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
   292
  if (loc)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   293
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   294
      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
   295
    }
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   296
  else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   297
   {
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
   298
     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
   299
     Vector deterministicVector (100,100,0);
8978
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
   300
     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
   301
     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
   302
       {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   303
         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
   304
       }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   305
     else
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   306
       {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   307
         m_nodeLocation[n->GetId ()] = deterministicVector;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   308
       }
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   309
   }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   310
  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
   311
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   312
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   313
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
   314
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   315
  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
   316
  return v;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   317
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   318
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   319
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
   320
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   321
  #ifdef NS_LOG
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   322
  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
   323
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   324
      NS_FATAL_ERROR ("Node:" <<n->GetId() << " not found in Location table");
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   325
    }  
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   326
  #endif
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   327
  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
   328
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   329
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   330
void AnimationInterface::PurgePendingWifi ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   331
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   332
  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
   333
    return;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   334
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   335
  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
   336
       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
   337
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   338
    {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   339
     
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   340
      AnimPacketInfo pktInfo = i->second; 
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   341
      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
   342
      if (delta > PURGE_INTERVAL)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   343
        {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   344
          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
   345
        }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   346
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   347
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   348
  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
   349
       i != purgeList.end ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   350
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   351
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   352
      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
   353
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   354
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   355
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   356
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   357
void AnimationInterface::PurgePendingWimax ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   358
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   359
  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
   360
    return;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   361
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   362
  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
   363
       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
   364
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   365
    {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   366
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   367
      AnimPacketInfo pktInfo = i->second;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   368
      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
   369
      if (delta > PURGE_INTERVAL)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   370
        {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   371
          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
   372
        }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   373
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   374
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   375
  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
   376
       i != purgeList.end ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   377
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   378
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   379
      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
   380
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   381
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
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   384
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   385
void AnimationInterface::PurgePendingLte ()
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   386
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   387
  if (m_pendingLtePackets.empty ())
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   388
    return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   389
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   390
  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
   391
       i != m_pendingLtePackets.end ();
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   392
       ++i)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   393
    {
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   394
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   395
      AnimPacketInfo pktInfo = i->second;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   396
      double delta = (Simulator::Now ().GetSeconds () - pktInfo.m_fbTx);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   397
      if (delta > PURGE_INTERVAL)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   398
        {
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   399
          purgeList.push_back (i->first);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   400
        }
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   401
    }
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   402
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   403
  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
   404
       i != purgeList.end ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   405
       ++i)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   406
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   407
      m_pendingLtePackets.erase (*i);
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   408
    }
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   409
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   410
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   411
void AnimationInterface::PurgePendingCsma ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   412
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   413
  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
   414
    return;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   415
  std::vector <uint64_t> purgeList;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   416
  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
   417
       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
   418
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   419
    {
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   420
    
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   421
      AnimPacketInfo pktInfo = i->second;
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   422
      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
   423
      if (delta > PURGE_INTERVAL)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   424
        { 
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   425
          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
   426
        }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   427
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   428
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   429
  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
   430
       i != purgeList.end ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   431
       ++i)
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   432
    {
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   433
      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
   434
    }
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   435
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   436
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   437
9158
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   438
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
   439
{
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   440
  Address nodeAddr = nd->GetAddress();
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   441
  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
   442
  oss << nodeAddr;
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   443
  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
   444
}
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   445
8955
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   446
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
   447
{
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   448
  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
   449
  if (!ipv4)
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   450
    return "0.0.0.0";
9115
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   451
  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
   452
  if (ifIndex == -1)
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   453
    {
c9b19f516c5f NetAnim: Skip ipaddress check if index cannot be found
John Abraham <john.abraham.in@gmail.com>
parents: 9109
diff changeset
   454
      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
   455
      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
   456
    }
8955
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   457
  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
   458
  std::ostringstream oss;
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   459
  oss << addr.GetLocal ();
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   460
  return oss.str ();
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   461
}
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   462
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   463
void AnimationInterface::StartAnimation (bool restart)
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   464
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   465
  m_currentPktCount = 0;
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   466
  m_started = true;
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   467
  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
   468
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   469
  // 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
   470
  m_topoMinX = -2;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   471
  m_topoMinY = -2;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   472
  m_topoMaxX = 2;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   473
  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
   474
  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
   475
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   476
      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
   477
      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
   478
      Vector v = UpdatePosition (n); 
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   479
      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
   480
      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
   481
      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
   482
      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
   483
      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
   484
      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
   485
      {
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
   486
        nodeColors[n->GetId ()] = rgb;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
   487
      }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   488
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   489
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   490
  
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   491
  std::ostringstream oss;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   492
  oss << GetXMLOpen_anim (0);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   493
  oss << GetPreamble ();
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   494
  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
   495
  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
   496
  NS_LOG_INFO ("Setting topology for "<<NodeList::GetNNodes ()<<" Nodes");
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   497
  // Dump the topology
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   498
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   499
    {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   500
      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
   501
      std::ostringstream oss;
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   502
      Vector v = GetPosition (n);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   503
      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
   504
      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
   505
      WriteN (oss.str (), m_f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   506
    }
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   507
  NS_LOG_INFO ("Setting p2p links");
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   508
  // Now dump the p2p links
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   509
  for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   510
    {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   511
      Ptr<Node> n = *i;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   512
      uint32_t n1Id = n->GetId ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   513
      uint32_t nDev = n->GetNDevices ();  // Number of devices
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   514
      for (uint32_t i = 0; i < nDev; ++i)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   515
        {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   516
          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
   517
 	  NS_ASSERT (dev);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   518
          Ptr<Channel>   ch = dev->GetChannel ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   519
          if (!ch) 
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   520
            {
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   521
	      NS_LOG_DEBUG ("No channel can't be a p2p device");
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   522
              continue;
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   523
            }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   524
          std::string channelType = ch->GetInstanceTypeId ().GetName ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   525
          if (channelType == std::string ("ns3::PointToPointChannel"))
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   526
            { // Since these are duplex links, we only need to dump
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   527
              // if srcid < dstid
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   528
              uint32_t nChDev = ch->GetNDevices ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   529
              for (uint32_t j = 0; j < nChDev; ++j)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   530
                {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   531
                  Ptr<NetDevice> chDev = ch->GetDevice (j);
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   532
                  uint32_t n2Id = chDev->GetNode ()->GetId ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   533
                  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
   534
                    { 
eab99e446e8c NetAnim: Support End-point Ipv4 address on link display
John Abraham <john.abraham.in@gmail.com>
parents: 8948
diff changeset
   535
                      // 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
   536
                      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
   537
                      SetLinkDescription (n1Id, n2Id, "", GetIpv4Address (dev) + "~" + GetMacAddress (dev), GetIpv4Address (chDev) + "~" + GetMacAddress (chDev));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   538
                      std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   539
                      if (m_xml)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   540
                        {
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
   541
                          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
   542
                        }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   543
                      else
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   544
                        {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   545
                          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
   546
                        }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   547
                      WriteN (oss.str (), m_f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   548
                    }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   549
                }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   550
            }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   551
          else
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   552
            {
9158
d493cb1bc11a NetAnim: Add support for tracking MAC addresses at link level
John Abraham <john.abraham.in@gmail.com>
parents: 9115
diff changeset
   553
              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
   554
              WriteNonP2pLinkProperties (n->GetId (), GetIpv4Address (dev) + "~" + GetMacAddress (dev), channelType); 
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   555
            }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   556
        }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   557
    }
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
   558
  linkProperties.clear ();
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   559
  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
   560
    {
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   561
      WriteN (GetXMLClose ("topology"), m_f);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   562
      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
   563
    }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   564
  if (!restart)
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   565
    ConnectCallbacks ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   566
}
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   567
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   568
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
   569
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   570
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   571
  Ptr<LteEnbPhy> lteEnbPhy = nd->GetPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   572
  Ptr<LteSpectrumPhy> dlPhy = lteEnbPhy->GetDownlinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   573
  Ptr<LteSpectrumPhy> ulPhy = lteEnbPhy->GetUplinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   574
  std::ostringstream oss;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   575
  //NodeList/*/DeviceList/*/
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   576
  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
   577
  if (dlPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   578
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   579
      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
   580
      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
   581
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   582
  if (ulPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   583
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   584
      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
   585
      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
   586
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   587
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   588
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   589
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   590
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   591
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
   592
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   593
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   594
  Ptr<LteUePhy> lteUePhy = nd->GetPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   595
  Ptr<LteSpectrumPhy> dlPhy = lteUePhy->GetDownlinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   596
  Ptr<LteSpectrumPhy> ulPhy = lteUePhy->GetUplinkSpectrumPhy ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   597
  std::ostringstream oss;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   598
  //NodeList/*/DeviceList/*/
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   599
  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
   600
  if (dlPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   601
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   602
      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
   603
      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
   604
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   605
  if (ulPhy)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   606
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   607
       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
   608
       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
   609
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   610
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   611
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   612
void AnimationInterface::ConnectLte ()
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   613
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   614
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   615
  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
   616
    {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   617
      Ptr<Node> n = *i;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   618
      NS_ASSERT (n);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   619
      uint32_t nDevices = n->GetNDevices ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   620
      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
   621
        {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   622
          Ptr <NetDevice> nd = n->GetDevice(devIndex);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   623
          if (!nd)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   624
            continue;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   625
          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
   626
          if (lteUeNetDevice)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   627
            {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   628
              ConnectLteUe (n, lteUeNetDevice, devIndex);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   629
              continue;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   630
            }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   631
          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
   632
          if (lteEnbNetDevice)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   633
            ConnectLteEnb (n, lteEnbNetDevice, devIndex);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   634
        }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   635
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   636
    }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   637
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   638
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   639
void AnimationInterface::ConnectCallbacks ()
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   640
{
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   641
  // Connect the callbacks
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   642
  Config::Connect ("/ChannelList/*/TxRxPointToPoint",
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   643
                   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
   644
  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
   645
                   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
   646
  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
   647
                   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
   648
  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
   649
                   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
   650
  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
   651
                   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
   652
  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
   653
                   MakeCallback (&AnimationInterface::WimaxRxTrace, this));
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   654
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Tx",
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   655
                   MakeCallback (&AnimationInterface::LteTxTrace, this));
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   656
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::LteNetDevice/Rx",
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   657
                   MakeCallback (&AnimationInterface::LteRxTrace, this));
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   658
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxBegin",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   659
                   MakeCallback (&AnimationInterface::CsmaPhyTxBeginTrace, this));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   660
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyTxEnd",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   661
                   MakeCallback (&AnimationInterface::CsmaPhyTxEndTrace, this));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   662
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/PhyRxEnd",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   663
                   MakeCallback (&AnimationInterface::CsmaPhyRxEndTrace, this));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   664
  Config::Connect ("/NodeList/*/DeviceList/*/$ns3::CsmaNetDevice/MacRx",
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   665
                   MakeCallback (&AnimationInterface::CsmaMacRxTrace, this));
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
   666
  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
   667
                   MakeCallback (&AnimationInterface::UanPhyGenTxTrace, this));
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
   668
  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
   669
                   MakeCallback (&AnimationInterface::UanPhyGenRxTrace, this));
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   670
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
   671
  ConnectLte ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   672
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   673
}
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   674
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   675
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   676
void AnimationInterface::StopAnimation ()
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   677
{
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
   678
  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
   679
  NS_LOG_INFO ("Stopping Animation");
7595
0f5dc03da4b1 StopAnimation should reset write callback
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   680
  ResetAnimWriteCallback ();
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   681
  if (m_f) 
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   682
    {
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   683
      if (m_xml)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   684
        { // Terminate the anim element
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   685
          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
   686
        }
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents: 9012
diff changeset
   687
      std::fclose (m_f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   688
    }
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8778
diff changeset
   689
    m_outputFileSet = false;
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   690
  if (m_routingF)
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   691
    {
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   692
      WriteN (GetXMLClose ("anim"), m_routingF);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   693
      std::fclose (m_routingF);
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   694
    }
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   695
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   696
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   697
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
   698
{
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   699
  if (m_writeCallback)
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   700
    {
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   701
      m_writeCallback (st.c_str ());
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7443
diff changeset
   702
    }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   703
  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
   704
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   705
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   706
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
   707
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   708
  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
   709
  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
   710
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   711
      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
   712
      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
   713
      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
   714
      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
   715
      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
   716
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   717
          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
   718
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   719
      else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   720
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   721
          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
   722
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   723
      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
   724
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   725
          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
   726
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   727
      else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   728
        {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   729
          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
   730
          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
   731
          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
   732
        }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   733
    }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   734
  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
   735
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   736
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   737
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
   738
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   739
  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
   740
  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
   741
  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
   742
  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
   743
  
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   744
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   745
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   746
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
   747
{ 
1e4738d69222 NetAnim: Support Pause & Resume Animation
John Abraham <john.abraham@gatech.edu>
parents: 7461
diff changeset
   748
  // Write count bytes to h from data
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   749
  uint32_t    nLeft   = count;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   750
  const char* p       = data;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   751
  uint32_t    written = 0;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   752
  while (nLeft)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   753
    {
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   754
      int n = std::fwrite (p, 1,  nLeft, f);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   755
      if (n <= 0) 
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   756
        {
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   757
          return written;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   758
        }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   759
      written += n;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   760
      nLeft -= n;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   761
      p += n;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   762
    }
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   763
  return written;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   764
}
7181
7ff8011cf487 net-anim coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 7089
diff changeset
   765
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   766
void AnimationInterface::WriteDummyPacket ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   767
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   768
  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
   769
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   770
  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
   771
  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
   772
  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
   773
  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
   774
  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
   775
  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
   776
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   777
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   778
}
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   779
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   780
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   781
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
   782
{
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   783
  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
   784
  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
   785
  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
   786
}
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
   787
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   788
void AnimationInterface::DevTxTrace (std::string context, Ptr<const Packet> p,
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   789
                                     Ptr<NetDevice> tx, Ptr<NetDevice> rx,
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   790
                                     Time txTime, Time rxTime)
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   791
{
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   792
  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
   793
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   794
  NS_ASSERT (tx);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   795
  NS_ASSERT (rx);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   796
  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
   797
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   798
  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
   799
  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
   800
  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
   801
  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
   802
  if (m_xml)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   803
    {
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
   804
      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
   805
                                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
   806
      StartNewTraceFile ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   807
      ++m_currentPktCount;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   808
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   809
  else
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   810
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   811
      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
   812
      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
   813
          << tx->GetNode ()->GetId () << " "
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   814
          << rx->GetNode ()->GetId () << " "
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   815
          << (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
   816
          << (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
   817
          << (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
   818
    }
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
   819
  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
   820
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   821
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   822
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   823
Ptr <NetDevice>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   824
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
   825
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   826
  // 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
   827
  // 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
   828
  // 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
   829
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   830
  std::vector <std::string> elements = GetElementsFromContext (context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   831
  Ptr <Node> n = NodeList::GetNode (atoi (elements[1].c_str ()));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   832
  NS_ASSERT (n);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   833
  return n->GetDevice (atoi (elements[3].c_str ()));
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   834
}
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   835
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   836
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
   837
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   838
  m_pendingUanPackets[AnimUid] = pktinfo;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   839
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   840
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   841
                                  
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   842
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
   843
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   844
  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
   845
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   846
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   847
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
   848
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   849
  NS_ASSERT (pktinfo.m_txnd);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   850
  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
   851
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   852
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   853
void AnimationInterface::AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   854
{
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   855
  NS_ASSERT (pktinfo.m_txnd);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   856
  m_pendingLtePackets[AnimUid] = pktinfo;
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
   857
}
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   858
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   859
void AnimationInterface::AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   860
{
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   861
  NS_ASSERT (pktinfo.m_txnd);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   862
  m_pendingCsmaPackets[AnimUid] = pktinfo;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   863
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   864
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   865
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
   866
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   867
  AnimByteTag tag;
7808
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   868
  TypeId tid = tag.GetInstanceTypeId ();
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   869
  ByteTagIterator i = p->GetByteTagIterator ();
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   870
  bool found = false;
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   871
  while (i.HasNext ())
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   872
    {
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   873
      ByteTagIterator::Item item = i.Next ();
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   874
      if (tid == item.GetTypeId ())
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   875
        {
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   876
          item.GetTag (tag);
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   877
          found = true;
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   878
        }
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   879
    }
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   880
  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
   881
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   882
      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
   883
    }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   884
  else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   885
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   886
      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
   887
    }
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   888
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   889
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
   890
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
   891
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   892
  if (!m_started || !IsInTimeWindow ())
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   893
    return;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   894
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   895
  NS_ASSERT (ndev);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   896
  Ptr <Node> n = ndev->GetNode ();
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   897
  NS_ASSERT (n);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   898
  gAnimUid++;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   899
  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
   900
  AnimByteTag tag;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   901
  tag.Set (gAnimUid);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   902
  p->AddByteTag (tag);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   903
  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
   904
  AddPendingUanPacket (gAnimUid, pktinfo);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   905
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   906
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   907
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   908
8863
50191cdd8761 Modified NetAnim and UAN Phy to trace transmission events
Andrea Sacco
parents: 8861
diff changeset
   909
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
   910
{
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   911
  if (!m_started || !IsInTimeWindow ())
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   912
    return;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   913
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   914
  NS_ASSERT (ndev);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   915
  Ptr <Node> n = ndev->GetNode ();
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   916
  NS_ASSERT (n);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   917
  uint64_t AnimUid = GetAnimUidFromPacket (p);
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   918
  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
   919
  if (!UanPacketIsPending (AnimUid))
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   920
    {
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   921
      NS_LOG_WARN ("UanPhyGenRxBeginTrace: unknown Uid");
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   922
      return;
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   923
    }
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   924
  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
   925
  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
   926
  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
   927
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   928
}
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   929
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   930
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   931
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
   932
                                          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
   933
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   934
  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
   935
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   936
  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
   937
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   938
  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
   939
  NS_ASSERT (n);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   940
  // 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
   941
  gAnimUid++;
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   942
  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
   943
  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
   944
  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
   945
  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
   946
  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
   947
  AddPendingWifiPacket (gAnimUid, pktinfo);
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   948
  Ptr<WifiNetDevice> netDevice = DynamicCast<WifiNetDevice> (ndev);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   949
  Mac48Address nodeAddr = netDevice->GetMac()->GetAddress();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   950
  std::ostringstream oss; 
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   951
  oss << nodeAddr;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   952
  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
   953
  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
   954
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   955
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   956
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
   957
                                            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
   958
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   959
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   960
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   961
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
   962
                                             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
   963
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   964
  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
   965
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   966
  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
   967
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   968
  // 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
   969
  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
   970
  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
   971
  NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   972
  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
   973
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   974
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   975
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   976
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
   977
                                              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
   978
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   979
  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
   980
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
   981
  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
   982
  NS_ASSERT (ndev);
7765
1caa57dd8f67 NetAnim: Use PhyRxBegin rather than MacRx
John Abraham <john.abraham@gatech.edu>
parents: 7756
diff changeset
   983
  Ptr <Node> n = ndev->GetNode ();
1caa57dd8f67 NetAnim: Use PhyRxBegin rather than MacRx
John Abraham <john.abraham@gatech.edu>
parents: 7756
diff changeset
   984
  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
   985
  uint64_t AnimUid = GetAnimUidFromPacket (p);
8861
b1f287b36ff7 NetAnim: Add tentative Uan Phy Gen callback
John Abraham <john.abraham@gatech.edu>
parents: 8807
diff changeset
   986
  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
   987
  if (!WifiPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
   988
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
   989
      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
   990
      std::ostringstream oss;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   991
      WifiMacHeader hdr;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   992
      if(!p->PeekHeader (hdr))
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   993
      { 
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   994
        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
   995
        return;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   996
      }
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   997
      oss << hdr.GetAddr2 ();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
   998
      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
   999
      {
8804
John Abraham <john.abraham@gatech.edu>
parents: 8803
diff changeset
  1000
        //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
  1001
        return;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1002
      }
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1003
      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
  1004
      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
  1005
      AddPendingWifiPacket (AnimUid, pktinfo);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1006
      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
  1007
    }
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1008
  // 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
  1009
  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
  1010
  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
  1011
  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
  1012
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1013
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1014
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1015
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
  1016
                                            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
  1017
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1018
  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
  1019
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1020
  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
  1021
  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
  1022
  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
  1023
  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
  1024
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1025
  if (!WifiPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1026
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1027
      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
  1028
      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
  1029
      AddPendingWifiPacket (AnimUid, pktinfo);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1030
    }
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1031
  // 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
  1032
  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1033
  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
  1034
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1035
  if (pktrxInfo.IsPhyRxComplete ())
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1036
    {
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1037
      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
  1038
      OutputWirelessPacket (p, pktInfo, pktrxInfo);
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1039
    }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1040
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1041
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1042
void AnimationInterface::WifiMacRxTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1043
                                         Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1044
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1045
  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
  1046
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1047
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1048
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1049
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1050
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1051
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1052
  if (!WifiPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1053
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1054
      NS_LOG_WARN ("WifiMacRxTrace: unknown Uid");
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1055
      return;
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1056
    }
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1057
  // 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
  1058
  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1059
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1060
  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
  1061
    {
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1062
      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
  1063
      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
  1064
    }
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1065
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1066
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1067
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
  1068
                                             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
  1069
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1070
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1071
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1072
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
  1073
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1074
  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
  1075
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1076
  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
  1077
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1078
  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
  1079
  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
  1080
  gAnimUid++;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1081
  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
  1082
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), 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
  1083
  //TODO 0.0001 is used until Wimax implements TxBegin and TxEnd traces
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1084
  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
  1085
  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
  1086
  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
  1087
  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
  1088
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1089
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1090
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1091
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
  1092
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1093
  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
  1094
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1095
  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
  1096
  NS_ASSERT (ndev);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1097
  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
  1098
  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
  1099
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7808
993f0f62fae0 NetAnim: Handle special case for Wimax forwarding
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
  1100
  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
  1101
  NS_ASSERT (WimaxPacketIsPending (AnimUid) == true);
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1102
  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
  1103
  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
  1104
  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), 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
  1105
  //TODO 0.001 is used until Wimax implements RxBegin and RxEnd traces
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1106
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1107
  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
  1108
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1109
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1110
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
  1111
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1112
  if (!m_started || !IsInTimeWindow ())
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1113
    return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1114
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1115
  NS_ASSERT (ndev);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1116
  Ptr <Node> n = ndev->GetNode ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1117
  NS_ASSERT (n);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1118
  gAnimUid++;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1119
  NS_LOG_INFO ("LteTxTrace for packet:" << gAnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1120
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1121
  //TODO 0.0001 is used until Lte implements TxBegin and TxEnd traces
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1122
  AnimByteTag tag;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1123
  tag.Set (gAnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1124
  p->AddByteTag (tag);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1125
  AddPendingLtePacket (gAnimUid, pktinfo);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1126
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1127
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1128
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1129
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
  1130
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1131
  if (!m_started || !IsInTimeWindow ())
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1132
    return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1133
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1134
  NS_ASSERT (ndev);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1135
  Ptr <Node> n = ndev->GetNode ();
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1136
  NS_ASSERT (n);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1137
  uint64_t AnimUid = GetAnimUidFromPacket (p);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1138
  NS_LOG_INFO ("LteRxTrace for packet:" << gAnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1139
  if (!LtePacketIsPending (AnimUid))
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1140
    {
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1141
      NS_LOG_WARN ("LteRxTrace: unknown Uid");
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1142
      return;
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1143
    }
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1144
  AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1145
  pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1146
  pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1147
  //TODO 0.001 is used until Lte implements RxBegin and RxEnd traces
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1148
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1149
  OutputWirelessPacket (p, pktInfo, pktrxInfo);
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1150
}
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1151
8807
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1152
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
  1153
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1154
  if (!m_started || !IsInTimeWindow ())
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1155
    return;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1156
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1157
  NS_ASSERT (ndev);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1158
  Ptr <Node> n = ndev->GetNode ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1159
  NS_ASSERT (n);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1160
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1161
  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
  1162
  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
  1163
       i != pbList.end ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1164
       ++i)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1165
  {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1166
    Ptr <Packet> p = *i;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1167
    gAnimUid++;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1168
    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
  1169
    AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now () + Seconds (0.001), UpdatePosition (n));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1170
    //TODO 0.0001 is used until Lte implements TxBegin and TxEnd traces
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1171
    AnimByteTag tag;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1172
    tag.Set (gAnimUid);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1173
    p->AddByteTag (tag);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1174
    AddPendingLtePacket (gAnimUid, pktinfo);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1175
  }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1176
}
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1177
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1178
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
  1179
{
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1180
  if (!m_started || !IsInTimeWindow ())
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1181
    return;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1182
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1183
  NS_ASSERT (ndev);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1184
  Ptr <Node> n = ndev->GetNode ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1185
  NS_ASSERT (n);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1186
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1187
  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
  1188
  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
  1189
       i != pbList.end ();
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1190
       ++i)
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1191
  {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1192
    Ptr <Packet> p = *i;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1193
    uint64_t AnimUid = GetAnimUidFromPacket (p);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1194
    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
  1195
    if (!LtePacketIsPending (AnimUid))
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1196
      {
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1197
        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
  1198
        return;
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1199
      }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1200
    AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1201
    pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1202
    pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1203
    //TODO 0.001 is used until Lte implements RxBegin and RxEnd traces
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1204
    AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1205
    OutputWirelessPacket (p, pktInfo, pktrxInfo);
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1206
  }
fcb718d36baa NetAnim: Update LTE callbacks after recent lena commit
John Abraham <john.abraham@gatech.edu>
parents: 8804
diff changeset
  1207
}
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1208
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1209
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
  1210
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1211
  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
  1212
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1213
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1214
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1215
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1216
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1217
  gAnimUid++;
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1218
  NS_LOG_INFO ("CsmaPhyTxBeginTrace for packet:" << gAnimUid);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1219
  AnimByteTag tag;
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1220
  tag.Set (gAnimUid);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1221
  p->AddByteTag (tag);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1222
  AnimPacketInfo pktinfo (ndev, Simulator::Now (), Simulator::Now (), UpdatePosition (n));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1223
  AddPendingCsmaPacket (gAnimUid, pktinfo);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1224
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1225
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1226
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1227
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
  1228
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1229
  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
  1230
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1231
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1232
  NS_ASSERT (ndev);
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1233
  Ptr <Node> n = ndev->GetNode ();
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1234
  NS_ASSERT (n);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1235
  uint64_t AnimUid = GetAnimUidFromPacket (p);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1236
  NS_LOG_INFO ("CsmaPhyTxEndTrace for packet:" << AnimUid);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1237
  if (!CsmaPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1238
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1239
      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
  1240
      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
  1241
      AddPendingCsmaPacket (AnimUid, pktinfo);
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1242
      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
  1243
    }
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1244
  // 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
  1245
  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1246
  pktInfo.m_lbTx = Simulator::Now ().GetSeconds ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1247
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1248
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1249
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
  1250
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1251
  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
  1252
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1253
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1254
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1255
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1256
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1257
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1258
  if (!CsmaPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1259
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1260
      NS_LOG_WARN ("CsmaPhyRxEndTrace: unknown Uid"); 
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1261
      return;
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1262
    }
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1263
  // 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
  1264
  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1265
  m_pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1266
  pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1267
  NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1268
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1269
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1270
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1271
void AnimationInterface::CsmaMacRxTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1272
                                         Ptr<const Packet> p)
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1273
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1274
  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
  1275
    return;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1276
  NS_LOG_FUNCTION (this);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1277
  Ptr <NetDevice> ndev = GetNetDeviceFromContext (context);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1278
  NS_ASSERT (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1279
  Ptr <Node> n = ndev->GetNode ();
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1280
  NS_ASSERT (n);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1281
  uint64_t AnimUid = GetAnimUidFromPacket (p);
7529
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1282
  if (!CsmaPacketIsPending (AnimUid))
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1283
    {
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1284
      NS_LOG_WARN ("CsmaMacRxTrace: unknown Uid"); 
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1285
      return;
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1286
    }
6b1df8b6df34 NetAnim: Remove obsolete socket functionalities
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
  1287
  // 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
  1288
  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1289
  AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1290
  if (pktrxInfo.IsPhyRxComplete ())
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1291
    {
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1292
      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
  1293
      OutputCsmaPacket (p, pktInfo, pktrxInfo);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1294
    }
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1295
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1296
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1297
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1298
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
  1299
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1300
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1301
  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
  1302
    return;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1303
  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
  1304
  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
  1305
  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
  1306
  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
  1307
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1308
      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
  1309
    } 
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1310
  else
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1311
    {
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1312
      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
  1313
    }
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1314
  UpdatePosition (n,v);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1315
  RecalcTopoBounds (v);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1316
  std::ostringstream oss; 
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1317
  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
  1318
  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
  1319
  oss << GetXMLClose ("topology");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1320
  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
  1321
  WriteDummyPacket ();
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
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
  1325
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1326
  Vector oldLocation = GetPosition (n);
7607
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
  1327
  if ((ceil (oldLocation.x) == ceil (newLocation.x)) &&
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
  1328
    (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
  1329
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1330
     
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1331
      return false;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1332
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1333
  else
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1334
    {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1335
      return true;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1336
    }
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
  1337
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
  1338
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1339
void AnimationInterface::MobilityAutoCheck ()
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1340
{
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1341
  if (!m_started || !IsInTimeWindow ())
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1342
    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
  1343
  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
  1344
  std::ostringstream oss;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1345
  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
  1346
  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
  1347
    {
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1348
      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
  1349
      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
  1350
      Vector v = GetPosition (n);
7607
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
  1351
      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
  1352
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1353
  oss << GetXMLClose ("topology");
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1354
  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
  1355
  WriteDummyPacket ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1356
  if (!Simulator::IsFinished ())
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1357
    {
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1358
      PurgePendingWifi ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1359
      PurgePendingWimax ();
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7618
diff changeset
  1360
      PurgePendingLte ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7595
diff changeset
  1361
      PurgePendingCsma ();
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1362
      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
  1363
    }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1364
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1365
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1366
std::string AnimationInterface::GetPacketMetadata (Ptr<const Packet> p)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1367
{
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1368
  std::ostringstream oss;
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1369
  p->Print (oss);
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1370
  return oss.str ();
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1371
}
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1372
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1373
uint64_t AnimationInterface::GetTracePktCount ()
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1374
{
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1375
  return m_currentPktCount;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1376
}
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1377
8978
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1378
int64_t
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1379
AnimationInterface::AssignStreams (int64_t stream)
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1380
{
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1381
  NS_LOG_FUNCTION (this << stream);
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1382
  m_uniformRandomVariable->SetStream (stream);
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1383
  return 1;
e2a25f3f57c3 Replace src/netanim usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 8955
diff changeset
  1384
}
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1385
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1386
// 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
  1387
// 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
  1388
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1389
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1390
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
  1391
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1392
  std::string s = 
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1393
    "<information><!-- \n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1394
    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
  1395
    =========================\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1396
    anim\n\
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
  1397
    * 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
  1398
    topology\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1399
    * 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
  1400
    * 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
  1401
    * 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
  1402
    * 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
  1403
    node\n\
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1404
    * 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
  1405
    * 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
  1406
    * locY = Y coordinate\n\
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1407
    * r = Red component\n\
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1408
    * g = Green component\n\
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1409
    * b = Blue component\n\
7443
32635b529440 NetAnim minor comments
John Abraham <john.abraham@gatech.edu>
parents: 7368
diff changeset
  1410
    link\n\
32635b529440 NetAnim minor comments
John Abraham <john.abraham@gatech.edu>
parents: 7368
diff changeset
  1411
    * fromId = From Node Id\n\
32635b529440 NetAnim minor comments
John Abraham <john.abraham@gatech.edu>
parents: 7368
diff changeset
  1412
    * toId   = To Node Id\n\
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1413
    * 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
  1414
    * 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
  1415
    * 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
  1416
    linkupdate\n\
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1417
    * t = Simulation time\n\
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1418
    * 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
  1419
    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
  1420
    * 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
  1421
    * 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
  1422
    * 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
  1423
    * 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
  1424
    * 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
  1425
    * visible = Node visibility\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1426
    p\n\
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1427
    * 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
  1428
    * 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
  1429
    * lbTx = Last bit transmit time\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1430
    * 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
  1431
    * 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
  1432
    * lbRx = Last bit Rx\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1433
    * meta-info = Packet meta data\n\
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1434
    wp\n\
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1435
    * 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
  1436
    * 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
  1437
    * 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
  1438
    * range = Reception range\n\
9066
bbf13ac5231c NetAnim: Update Preamble
John Abraham <john.abraham.in@gmail.com>
parents: 9064
diff changeset
  1439
    * 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
  1440
    * fbRx = First bit Rx time\n\
9067
750c8f38497d NetAnim: typo
John Abraham <john.abraham.in@gmail.com>
parents: 9066
diff changeset
  1441
    * 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
  1442
    * 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
  1443
    </information>\n";
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1444
return s;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1445
}
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1446
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1447
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
  1448
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1449
  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
  1450
  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
  1451
  std::ostringstream oss;
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1452
  uint32_t nodeId =  0;
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1453
  if (pktInfo.m_txnd)
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1454
    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
  1455
  else
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7770
diff changeset
  1456
    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
  1457
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1458
  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
  1459
  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
  1460
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1461
  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
  1462
                            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
  1463
  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
  1464
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1465
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1466
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
  1467
{
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
  1468
  StartNewTraceFile ();
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1469
  NS_ASSERT (m_xml);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1470
  std::ostringstream oss;
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1471
  NS_ASSERT (pktInfo.m_txnd);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1472
  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
  1473
  uint32_t rxId = pktrxInfo.m_rxnd->GetNode ()->GetId ();
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1474
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1475
  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
  1476
                            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
  1477
  WriteN (oss.str (), m_f);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1478
}
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1479
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1480
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
  1481
{
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1482
  NS_ASSERT (n);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1483
  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
  1484
  if (hubLoc == 0)
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1485
    {
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1486
      hubLoc = CreateObject<ConstantPositionMobilityModel> ();
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1487
      n->AggregateObject (hubLoc);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1488
    }
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1489
  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
  1490
  hubLoc->SetPosition (hubVec);
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1491
  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
  1492
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1493
}
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7561
diff changeset
  1494
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1495
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
  1496
{
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1497
  if (initialized)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1498
    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
  1499
  NS_ASSERT (n);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1500
  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
  1501
  struct Rgb rgb = {r, g, b};
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1502
  nodeColors[n->GetId ()] = rgb;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1503
}
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1504
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1505
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
  1506
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1507
  NS_ASSERT (NodeList::GetNode (nodeId));
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1508
  NS_LOG_INFO ("Setting node visibility for Node Id:" << nodeId); 
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1509
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1510
  oss << GetXMLOpenClose_nodeupdate (nodeId, show);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1511
  WriteN (oss.str (), m_f);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1512
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1513
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1514
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1515
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
  1516
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1517
  ShowNode (n, show);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1518
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1519
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1520
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
  1521
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1522
  UpdateNodeColor (n->GetId (), r, g, b);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1523
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1524
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1525
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
  1526
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1527
  NS_ASSERT (NodeList::GetNode (nodeId));
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1528
  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
  1529
  struct Rgb rgb = {r, g, b};
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1530
  nodeColors[nodeId] = rgb;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1531
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1532
  oss << GetXMLOpenClose_nodeupdate (nodeId);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1533
  WriteN (oss.str (), m_f);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1534
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1535
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1536
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1537
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1538
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
  1539
{
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1540
  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
  1541
    {
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1542
      Ptr <Node> n = nc.Get (i);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1543
      NS_ASSERT (n);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1544
      SetNodeColor (n, r, g, b);
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1545
    }
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1546
}
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1547
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1548
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1549
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
  1550
                                                std::string linkDescription)
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1551
{
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1552
  std::ostringstream oss;
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1553
  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
  1554
  WriteN (oss.str (), m_f);
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1555
}
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1556
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1557
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
  1558
                                                std::string linkDescription)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1559
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1560
  NS_ASSERT (fromNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1561
  NS_ASSERT (toNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1562
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1563
  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
  1564
  WriteN (oss.str (), m_f);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1565
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1566
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1567
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
  1568
                                             std::string linkDescription,
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1569
                                             std::string fromNodeDescription,
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1570
                                             std::string toNodeDescription)
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1571
{
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1572
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1573
  P2pLinkNodeIdPair p2pPair;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1574
  p2pPair.fromNode = fromNode;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1575
  p2pPair.toNode = toNode;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1576
  LinkProperties lp = { fromNodeDescription, toNodeDescription, linkDescription };
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1577
  linkProperties[p2pPair] = lp;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1578
  /* DEBUG */
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1579
  /*
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1580
  for (std::map <P2pLinkNodeIdPair, LinkProperties>::const_iterator i = linkProperties.begin ();
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1581
	i != linkProperties.end(); ++i)
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1582
   {
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1583
    P2pLinkNodeIdPair ppair = i->first;
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1584
    LinkProperties l = i->second;
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1585
    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
  1586
     
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1587
   }
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1588
   */
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1589
}
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1590
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1591
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
  1592
                                             std::string linkDescription,
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1593
                                             std::string fromNodeDescription,
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1594
                                             std::string toNodeDescription)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1595
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1596
  NS_ASSERT (fromNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1597
  NS_ASSERT (toNode);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1598
  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
  1599
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1600
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1601
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1602
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
  1603
{
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1604
  if (initialized)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1605
    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
  1606
  NS_ASSERT (n);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1607
  nodeDescriptions[n->GetId ()] = descr;
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1608
}
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1609
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1610
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
  1611
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1612
  UpdateNodeDescription (n->GetId (), descr);
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1613
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1614
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1615
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
  1616
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1617
  NS_ASSERT (NodeList::GetNode (nodeId));
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1618
  nodeDescriptions[nodeId] = descr;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1619
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1620
  oss << GetXMLOpenClose_nodeupdate (nodeId);
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1621
  WriteN (oss.str (), m_f);
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1622
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1623
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1624
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1625
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1626
void AnimationInterface::SetNodeDescription (NodeContainer nc, std::string descr)
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1627
{
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1628
  if (initialized)
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1629
    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
  1630
  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
  1631
    {
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1632
      Ptr <Node> n = nc.Get (i);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1633
      NS_ASSERT (n);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1634
      nodeDescriptions[n->GetId ()] = descr;
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1635
    }
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1636
}
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1637
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
  1638
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1639
// XML Private Helpers
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1640
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1641
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
  1642
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1643
  std::ostringstream oss;
9012
e1353799d7c6 NetAnim: Bump version
John Abraham <john.abraham.in@gmail.com>
parents: 8978
diff changeset
  1644
  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
  1645
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1646
}
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1647
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
  1648
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1649
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1650
  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
  1651
      << "\" 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
  1652
      << "\">" << std::endl;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1653
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1654
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1655
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1656
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1657
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
  1658
{
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1659
  struct Rgb rgb = nodeColors[id];
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1660
  uint8_t r = rgb.r;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1661
  uint8_t g = rgb.g;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1662
  uint8_t b = rgb.b;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1663
  std::ostringstream oss;
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1664
  oss << "<nodeupdate id=\"" << id << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1665
  oss << " t=\"" << Simulator::Now ().GetSeconds () << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1666
  if (visible)
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1667
    oss << " visible=\"" << 1 << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1668
  else
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1669
    oss << " visible=\"" << 0 << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1670
  if (nodeDescriptions.find (id) != nodeDescriptions.end ())
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1671
    {
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1672
      oss << " descr=\""<< nodeDescriptions[id] << "\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1673
    }
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1674
  else
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1675
    {
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1676
      oss << " descr=\"\"";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1677
    }
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1678
  oss << " r=\"" << (uint32_t)r << "\" "
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1679
      << " g=\"" << (uint32_t)g << "\" b=\"" << (uint32_t)b <<"\"/>\n";
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1680
  return oss.str ();
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1681
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1682
}
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1683
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1684
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
  1685
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1686
  std::ostringstream oss;
8934
bc42868d23a7 NetAnim: Add nodeupdate XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8933
diff changeset
  1687
  oss <<"<node id=\"" << id << "\""; 
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1688
  if (nodeDescriptions.find (id) != nodeDescriptions.end ())
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1689
    {
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1690
      oss << " descr=\""<< nodeDescriptions[id] << "\"";
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1691
    }
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1692
  else
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1693
    {
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1694
      oss << " descr=\"\"";
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1695
    }
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1696
  oss << " locX = \"" << locX << "\" " << "locY = \"" << locY << "\" />\n";
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1697
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1698
}
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1699
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1700
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
  1701
{
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1702
  uint8_t r = rgb.r;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1703
  uint8_t g = rgb.g;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1704
  uint8_t b = rgb.b;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1705
  std::ostringstream oss;
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1706
  oss <<"<node id = \"" << id << "\"";
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1707
  if (nodeDescriptions.find (id) != nodeDescriptions.end ())
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1708
    {
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1709
      oss << " descr=\""<< nodeDescriptions[id] << "\"";
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1710
    }
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1711
  else
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1712
    {
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1713
      oss << " descr=\"\"";
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1714
    }
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1715
  oss << " locX=\"" << locX << "\" " << "locY=\"" << locY << "\"" << " r=\"" << (uint32_t)r << "\" " 
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1716
    << " g=\"" << (uint32_t)g << "\" b=\"" << (uint32_t)b <<"\"/>\n";
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1717
  return oss.str ();
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1718
}
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1719
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1720
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
  1721
{
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1722
  std::ostringstream oss;
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1723
  oss << "<linkupdate t=\"" << Simulator::Now ().GetSeconds () << "\""
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1724
      << " fromId=\"" << fromId
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1725
      << "\" toId=\"" << toId
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1726
      << "\" ";
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1727
8932
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1728
  oss << " ld=\"" << linkDescription << "\""
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1729
      << " />\n";
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1730
  return oss.str ();
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1731
9ada3b7d7c94 NetAnim: Add link update XML tag
John Abraham <john.abraham.in@gmail.com>
parents: 8930
diff changeset
  1732
}
8897
4380df68cbe1 NetAnim: Add RGB support for Nodes
John Abraham <john.abraham.in@gmail.com>
parents: 8865
diff changeset
  1733
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1734
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
  1735
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1736
  std::ostringstream oss;
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1737
  oss << "<link fromId=\"" << fromId
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1738
      << "\" toId=\"" << toId
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1739
      << "\" ";
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1740
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1741
  LinkProperties lprop ;
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1742
  lprop.fromNodeDescription = "";
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1743
  lprop.toNodeDescription = "";
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1744
  lprop.linkDescription = "";
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1745
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1746
  P2pLinkNodeIdPair p1 = { fromId, toId };
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1747
  P2pLinkNodeIdPair p2 = { toId, fromId };
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1748
  if (linkProperties.find (p1) != linkProperties.end())
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1749
    {
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1750
      lprop = linkProperties[p1];
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1751
    }
8930
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1752
  else if (linkProperties.find (p2) != linkProperties.end())
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1753
    {
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1754
      lprop = linkProperties[p2];
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1755
    }
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1756
   
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1757
  oss << " fd=\"" << lprop.fromNodeDescription << "\""
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1758
      << " td=\"" << lprop.toNodeDescription << "\""
d53b7df1162c NetAnim: Change SetLinkDescription defaults
John Abraham <john.abraham.in@gmail.com>
parents: 8928
diff changeset
  1759
      << " ld=\"" << lprop.linkDescription << "\""
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1760
      << " />\n";
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1761
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1762
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1763
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1764
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1765
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
  1766
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1767
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1768
  oss << std::setprecision (10);
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1769
  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
  1770
      << "\" fbTx=\"" << fbTx
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1771
      << "\" lbTx=\"" << lbTx
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1772
      << (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
  1773
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1774
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1775
9161
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1776
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
  1777
{
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1778
  std::ostringstream oss;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1779
  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
  1780
      << " id=\"" << nodeId << "\""
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1781
      << " info=\"" << routingInfo.c_str () << "\""
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1782
      << "/>" << std::endl;
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1783
  return oss.str ();
9c62cfdc7946 NetAnim: Add support for tracking routing table
John Abraham <john.abraham.in@gmail.com>
parents: 9158
diff changeset
  1784
}
9064
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1785
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1786
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
  1787
                                                   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
  1788
                                                   std::string auxInfo)
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1789
{
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1790
  std::ostringstream oss;
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1791
  oss << std::setprecision (10);
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1792
  oss << "<" << pktType << " fId=\"" << fId
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1793
      << "\" fbTx=\"" << fbTx
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1794
      << "\" lbTx=\"" << lbTx << "\"";
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1795
  if (!auxInfo.empty ())
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1796
    {
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1797
      oss << " aux=\"" << auxInfo.c_str () << "\"";
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1798
    }
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1799
  if (!metaInfo.empty ())
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1800
    {
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1801
      oss << " meta-info=\"" << metaInfo.c_str () << "\"";
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1802
    }
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1803
  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
  1804
  return oss.str ();
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1805
}
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1806
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1807
21326214dcd5 NetAnim: more compact packet format
John Abraham <john.abraham.in@gmail.com>
parents: 9063
diff changeset
  1808
8928
95b9af52352f NetAnim: Support for link description
John Abraham <john.abraham.in@gmail.com>
parents: 8898
diff changeset
  1809
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
  1810
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1811
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1812
  oss << std::setprecision (10);
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1813
  oss << "<wpacket fromId=\"" << fromId
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1814
      << "\" fbTx=\"" << fbTx
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1815
      << "\" lbTx=\"" << lbTx
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7808
diff changeset
  1816
      << "\" 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
  1817
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1818
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1819
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1820
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1821
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
  1822
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1823
  std::ostringstream oss;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1824
  oss << std::setprecision (10);
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
  1825
  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
  1826
      << "\" fbRx=\"" << fbRx
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1827
      << "\" lbRx=\"" << lbRx
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1828
      << "\"/>" << std::endl;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1829
  return oss.str ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1830
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1831
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1832
std::string AnimationInterface::GetXMLOpenClose_meta (std::string metaInfo)
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1833
{
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1834
  std::ostringstream oss;
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1835
  oss << "<meta info=\""
7770
a192064b0af6 NetAnim: missing quotes
John Abraham <john.abraham@gatech.edu>
parents: 7769
diff changeset
  1836
      << metaInfo << "\" />" << std::endl;
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1837
  return oss.str ();      
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1838
}
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
  1839
9109
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1840
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1841
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
  1842
{
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1843
  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
  1844
  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
  1845
      << id << "\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1846
      << " ipv4Address=\"" << ipv4Address << "\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1847
      << " channelType=\"" << channelType << "\""
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1848
      << "/>" << std::endl;
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1849
  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
  1850
}
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1851
a09a1899429d NetAnim: Add support for ipv4 address printing for non-p2p
John Abraham <john.abraham.in@gmail.com>
parents: 9108
diff changeset
  1852
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1853
std::vector<std::string> AnimationInterface::GetElementsFromContext (std::string context)
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1854
{
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1855
  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
  1856
  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
  1857
  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
  1858
  {
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1859
    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
  1860
    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
  1861
    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
  1862
    pos1 = pos2; 
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1863
    pos2 = context.npos;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1864
  }
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1865
  return elements;
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1866
}
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1867
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1868
TypeId
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1869
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
  1870
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1871
  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
  1872
    .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
  1873
    .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
  1874
  ;
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1875
  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
  1876
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1877
TypeId
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1878
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
  1879
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1880
  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
  1881
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1882
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1883
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
  1884
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
  1885
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1886
  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
  1887
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1888
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1889
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
  1890
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1891
  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
  1892
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1893
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1894
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
  1895
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1896
  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
  1897
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1898
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1899
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
  1900
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1901
  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
  1902
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1903
void
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1904
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
  1905
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1906
  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
  1907
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1908
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1909
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
  1910
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
  1911
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1912
  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
  1913
}
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
  1914
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7256
diff changeset
  1915
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
  1916
} // namespace ns3