src/netanim/model/animation-interface.h
author John Abraham <john.abraham@gatech.edu>
Thu, 24 May 2012 00:17:05 -0400
changeset 8803 e51a5a77909c
parent 8773 25b20434eba8
child 8807 fcb718d36baa
permissions -rw-r--r--
NetAnim: VALGR still reachable
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
/*
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     2
 * 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
     3
 * 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
     4
 * published by the Free Software Foundation;
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     5
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     6
 * 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
     7
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     8
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
     9
 * GNU General Public License for more details.
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    10
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    11
 * 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
    12
 * 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
    13
 * 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
    14
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    15
 * 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: 7271
diff changeset
    16
 * Modified by: John Abraham <john.abraham@gatech.edu>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    17
 */
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
// Interface between ns3 and the network animator
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    20
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    21
#ifndef ANIMATION_INTERFACE__H
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    22
#define ANIMATION_INTERFACE__H
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    23
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    24
#include <string>
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    25
#include <stdio.h>
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    26
#include <map>
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    27
#include "ns3/ptr.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    28
#include "ns3/net-device.h"
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
    29
#include "ns3/node-container.h"
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    30
#include "ns3/nstime.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    31
#include "ns3/log.h"
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    32
#include "ns3/node-list.h"
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    33
#include "ns3/simulator.h"
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    34
#include "ns3/config.h"
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    35
#include "ns3/animation-interface-helper.h"
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    36
#include "ns3/mac48-address.h"
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    37
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    38
namespace ns3 {
7241
0a7a16b599e8 Make some more modules show up on doxygen modules page
Mitch Watrous <watrous@u.washington.edu>
parents: 7181
diff changeset
    39
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    40
#define MAX_PKTS_PER_TRACE_FILE 100000
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    41
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    42
/**
7271
73bb230b6d6c organize doxygen modules alphabetically
Tom Henderson <tomh@tomh.org>
parents: 7243
diff changeset
    43
 * \defgroup netanim Netanim
73bb230b6d6c organize doxygen modules alphabetically
Tom Henderson <tomh@tomh.org>
parents: 7243
diff changeset
    44
 *
73bb230b6d6c organize doxygen modules alphabetically
Tom Henderson <tomh@tomh.org>
parents: 7243
diff changeset
    45
 * This section documents the API of the ns-3 netanim module. For a generic functional description, please refer to the ns-3 manual.
73bb230b6d6c organize doxygen modules alphabetically
Tom Henderson <tomh@tomh.org>
parents: 7243
diff changeset
    46
 */
73bb230b6d6c organize doxygen modules alphabetically
Tom Henderson <tomh@tomh.org>
parents: 7243
diff changeset
    47
73bb230b6d6c organize doxygen modules alphabetically
Tom Henderson <tomh@tomh.org>
parents: 7243
diff changeset
    48
/**
7241
0a7a16b599e8 Make some more modules show up on doxygen modules page
Mitch Watrous <watrous@u.washington.edu>
parents: 7181
diff changeset
    49
 * \ingroup netanim
0a7a16b599e8 Make some more modules show up on doxygen modules page
Mitch Watrous <watrous@u.washington.edu>
parents: 7181
diff changeset
    50
 *
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    51
 * \brief Interface to network animator
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    52
 *
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    53
 * Provides functions that facilitate communications with an
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    54
 * external or internal network animator.
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    55
 */
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    56
class AnimationInterface
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    57
{
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    58
public:
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    59
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    60
  /**
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    61
   * \brief Constructor
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
    62
   * \param filename The Filename for the trace file used by the Animator
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    63
   * \param maxPktsPerFile The maximum number of packets per trace file.
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    64
	    AnimationInterface will create trace files with the following 
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    65
            filenames : filename, filename-1, filename-2..., filename-N
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    66
	    where each file contains packet info for 'maxPktPerFile' number of packets
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
    67
   * \param usingXML Set to true if XML output traces are required
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    68
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    69
   */
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    70
  AnimationInterface (const std::string filename, 
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    71
	uint64_t maxPktsPerFile = MAX_PKTS_PER_TRACE_FILE, 
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
    72
	bool usingXML = true);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    73
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    74
  /**
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
    75
   * \brief Destructor for the animator interface.
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    76
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    77
   */
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
    78
  ~AnimationInterface ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    79
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    80
  /**
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
    81
   * \brief Check if AnimationInterface is initialized
7607
58588710f508 NetAnim: typos and style changes
John Abraham <john.abraham@gatech.edu>
parents: 7606
diff changeset
    82
   * \returns true if AnimationInterface was already initialized
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
    83
   *
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
    84
   */
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
    85
  static bool IsInitialized (void);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
    86
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
    87
  /**
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    88
   * \brief Specify that animation commands are to be written
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    89
   * to the specified output file.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    90
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    91
   * This call is used to write the animation information to a text
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    92
   * file that can later be used as input to the network animator tool.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    93
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    94
   * \param fn The name of the output file.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    95
   * \returns true if successful open.
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
    96
   *
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
    97
   */
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    98
  bool SetOutputFile (const std::string& fn);
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
    99
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   100
  /**
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   101
   * \brief Specify that animation commands are to be written
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   102
   * in XML format.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   103
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   104
   * \returns none
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   105
   *
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   106
   */
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   107
  void SetXMLOutput ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   108
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   109
  /**
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   110
   * \brief Specify the time at which capture should start
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   111
   * 
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   112
   * \param t The time at which AnimationInterface should begin capture of traffic info
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   113
   *
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   114
   * \returns none
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   115
   */
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   116
  void SetStartTime (Time t);
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   117
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   118
  /**
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   119
   * \brief Specify the time at which capture should stop
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   120
   * 
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   121
   * \param t The time at which AnimationInterface should stop capture of traffic info
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   122
   *
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   123
   * \returns none
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   124
   */
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   125
  void SetStopTime (Time t);
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   126
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   127
  /**
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   128
   * \brief Writes the topology information and sets up the appropriate
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   129
   *  animation packet tx callback
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   130
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   131
   * Writes the topology information to the appropriate output, depending
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   132
   * on prior calls to SetOutputFile, SetServerPort, or SetInternalAnimation.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   133
   * Then creates the callbacks needed for the animator to start processing
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   134
   * packets.
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   135
   * 
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   136
   * \param restart True when restarting animation
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   137
   */
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   138
  void StartAnimation (bool restart = false);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   139
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   140
  /**
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   141
   * \brief Closes the interface to the animator.
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   142
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   143
   */
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   144
  void StopAnimation ();
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   145
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   146
  /**
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   147
   * \brief Set mobility poll interval:WARNING: setting a low interval can 
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   148
   * cause slowness
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   149
   *
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   150
   * \param t Time interval between fetching mobility/position information
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   151
   * Default: 0.25s
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   152
   *
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   153
   */
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   154
  void SetMobilityPollInterval (Time t);
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   155
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   156
  /**
7476
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   157
   * \brief Set random position if a Mobility Model does not exists for the node
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   158
   *
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   159
   * \param setRandPos True if a random position can be set for a node without a
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   160
   * Mobililty model
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   161
   *
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   162
   */
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   163
  void SetRandomPosition (bool setRandPos);
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   164
2761997c72b2 NetAnim: Set a random position if mobility model does not exist
John Abraham <john.abraham@gatech.edu>
parents: 7454
diff changeset
   165
  /**
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   166
   * \brief typedef for WriteCallBack used for listening to AnimationInterface
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   167
   * write messages
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   168
   * 
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   169
   */
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   170
  typedef void (*AnimWriteCallback) (const char * str);
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   171
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   172
  /**
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   173
   * \brief Set a callback function to listen to AnimationInterface write events
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   174
   *
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   175
   * \param cb Address of callback function
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   176
   *
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   177
   */
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   178
  void SetAnimWriteCallback (AnimWriteCallback cb);
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   179
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   180
  /**
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   181
   * \brief Reset the write callback function
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   182
   *
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   183
   */
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   184
  void ResetAnimWriteCallback ();
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   185
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   186
  /**
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   187
   * \brief Helper function to set Constant Position for a given node
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   188
   * \param n Ptr to the node
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   189
   * \param x X co-ordinate of the node
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   190
   * \param y Y co-ordinate of the node
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   191
   * \param z Z co-ordinate of the node
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   192
   *
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   193
   */
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   194
  static void SetConstantPosition (Ptr <Node> n, double x, double y, double z=0);
7564
642fa0627ba6 NetAnim: Reduce config verbosity, provide utility for setting position
John Abraham <john.abraham@gatech.edu>
parents: 7560
diff changeset
   195
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   196
  /**
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   197
   * \brief Helper function to set a brief description for a given node
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   198
   * \param n Ptr to the node
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   199
   * \param descr A string to briefly describe the node
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   200
   *
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   201
   */
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   202
  static void SetNodeDescription (Ptr <Node> n, std::string descr);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   203
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   204
  /**
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   205
   * \brief Helper function to set a brief description for nodes in a Node Container
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   206
   * \param nc NodeContainer containing the nodes
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   207
   * \param descr A string to briefly describe the nodes
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   208
   *
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   209
   */
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   210
  static void SetNodeDescription (NodeContainer nc, std::string descr);
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   211
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   212
  /**
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   213
   * \brief Is AnimationInterface started
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   214
   * \returns true if AnimationInterface was started
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   215
   *
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   216
   */
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   217
  bool IsStarted (void);
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   218
7766
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   219
  /**
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   220
   * \brief Show all 802.11 frames. Default: show only frames accepted by mac layer
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   221
   * \param showAll if true shows all 802.11 frames including beacons, association
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   222
   *  request and acks (very chatty). if false only frames accepted by mac layer
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   223
   *
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   224
   */
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   225
  void ShowAll802_11 (bool showAll); 
c72c3511728f NetAnim: Option to show all 802.11
John Abraham <john.abraham@gatech.edu>
parents: 7752
diff changeset
   226
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   227
  /**
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   228
   *
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   229
   * \brief Enable Packet metadata
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   230
   * \param enable if true enables writing the packet metadata to the XML trace file
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   231
   *        if false disables writing the packet metadata
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   232
   */
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   233
  void EnablePacketMetadata (bool enable);
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   234
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   235
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   236
  /**
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   237
   *
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   238
   * \brief Get trace file packet count (This used only for testing)
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   239
   *
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   240
   * returns Number of packets recorded in the current trace file
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   241
   *
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   242
   */
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   243
  uint64_t GetTracePktCount ();
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   244
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   245
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   246
private:
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
   247
  FILE * m_f; // File handle for output (-1 if none)
7560
ff542689c629 NetAnim: windows portability changes
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
   248
  // Write specified amount of data to the specified handle
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
   249
  int WriteN (const char*, uint32_t);
7560
ff542689c629 NetAnim: windows portability changes
John Abraham <john.abraham@gatech.edu>
parents: 7484
diff changeset
   250
  bool m_xml;      // True if xml format desired
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   251
  Time m_mobilityPollInterval;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   252
  std::string m_outputFileName;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   253
  bool m_outputFileSet;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   254
  uint64_t gAnimUid ;    // Packet unique identifier used by Animtion
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   255
  bool m_randomPosition;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   256
  AnimWriteCallback m_writeCallback;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   257
  bool m_started;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   258
  bool m_enablePacketMetadata; 
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   259
  Time m_startTime;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   260
  Time m_stopTime;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   261
  uint64_t m_maxPktsPerFile;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   262
  std::string m_originalFileName;
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   263
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   264
  void DevTxTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   265
                   Ptr<const Packet> p,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   266
                   Ptr<NetDevice> tx,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   267
                   Ptr<NetDevice> rx,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   268
                   Time txTime,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   269
                   Time rxTime);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   270
  void WifiPhyTxBeginTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   271
                            Ptr<const Packet> p);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   272
  void WifiPhyTxEndTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   273
                          Ptr<const Packet> p);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   274
  void WifiPhyTxDropTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   275
                           Ptr<const Packet> p);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   276
  void WifiPhyRxBeginTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   277
                            Ptr<const Packet> p);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   278
  void WifiPhyRxEndTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   279
                          Ptr<const Packet> p);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   280
  void WifiMacRxTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   281
                       Ptr<const Packet> p);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   282
  void WifiPhyRxDropTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   283
                           Ptr<const Packet> p);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   284
  void WimaxTxTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   285
                     Ptr<const Packet> p,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   286
		     const Mac48Address &);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   287
  void WimaxRxTrace (std::string context,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   288
                     Ptr<const Packet> p,
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   289
                     const Mac48Address &);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   290
  void CsmaPhyTxBeginTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   291
                            Ptr<const Packet> p);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   292
  void CsmaPhyTxEndTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   293
                            Ptr<const Packet> p);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   294
  void CsmaPhyRxEndTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   295
                          Ptr<const Packet> p);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   296
  void CsmaMacRxTrace (std::string context,
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   297
                       Ptr<const Packet> p);
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   298
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   299
  void LteTxTrace (std::string context,
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   300
                      Ptr<const Packet> p,
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   301
                      const Mac48Address &);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   302
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   303
  void LteRxTrace (std::string context,
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   304
                      Ptr<const Packet> p,
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   305
                      const Mac48Address &);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   306
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   307
  void MobilityCourseChangeTrace (Ptr <const MobilityModel> mob);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   308
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   309
  // Write a string to the specified handle;
8803
e51a5a77909c NetAnim: VALGR still reachable
John Abraham <john.abraham@gatech.edu>
parents: 8773
diff changeset
   310
  int  WriteN (const std::string&);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   311
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   312
  void OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo& pktInfo, AnimRxInfo pktrxInfo);
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   313
  void OutputCsmaPacket (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: 7271
diff changeset
   314
  void MobilityAutoCheck ();
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   315
  
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   316
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   317
  std::map<uint64_t, AnimPacketInfo> m_pendingWifiPackets;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   318
  void AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo&);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   319
  bool WifiPacketIsPending (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
   320
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   321
  std::map<uint64_t, AnimPacketInfo> m_pendingWimaxPackets;
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   322
  void AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo&);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   323
  bool WimaxPacketIsPending (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
   324
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   325
  std::map<uint64_t, AnimPacketInfo> m_pendingLtePackets;
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   326
  void AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo&);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   327
  bool LtePacketIsPending (uint64_t AnimUid);
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   328
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   329
  std::map<uint64_t, AnimPacketInfo> m_pendingCsmaPackets;
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   330
  void AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo&);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   331
  bool CsmaPacketIsPending (uint64_t AnimUid);
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   332
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   333
  uint64_t GetAnimUidFromPacket (Ptr <const Packet>);
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   334
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   335
  std::map<uint32_t, Vector> m_nodeLocation;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   336
  Vector GetPosition (Ptr <Node> n);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   337
  Vector UpdatePosition (Ptr <Node> n);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   338
  Vector UpdatePosition (Ptr <Node> n, Vector v);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   339
  void WriteDummyPacket ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   340
  bool NodeHasMoved (Ptr <Node> n, Vector newLocation);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   341
  void AddMargin ();
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   342
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   343
  void PurgePendingWifi ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   344
  void PurgePendingWimax ();
7752
afbec264cbd2 NetAnim: Tentative support for LTE
John Abraham <john.abraham@gatech.edu>
parents: 7607
diff changeset
   345
  void PurgePendingLte ();
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   346
  void PurgePendingCsma ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   347
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   348
  // Recalculate topology bounds
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   349
  void RecalcTopoBounds (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
   350
  std::vector < Ptr <Node> > RecalcTopoBounds ();
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   351
7606
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   352
  void ConnectCallbacks ();
958775025f35 NetAnim: One time initialization, fixes for long duration runs
John Abraham <john.abraham@gatech.edu>
parents: 7564
diff changeset
   353
7804
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7769
diff changeset
   354
  
5ccfa6a97f71 NetAnim: Handle special case for missing Wifi TxTrace
John Abraham <john.abraham@gatech.edu>
parents: 7769
diff changeset
   355
  std::map <std::string, uint32_t> m_macToNodeIdMap;
7806
4c63c0278258 NetAnim: add configure start/stop time, update examples
John Abraham <john.abraham@gatech.edu>
parents: 7804
diff changeset
   356
  bool IsInTimeWindow ();
7454
e1bbc514be33 NetAnim: Simple Write callback
John Abraham <john.abraham@gatech.edu>
parents: 7362
diff changeset
   357
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   358
  // Path helper
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   359
  std::vector<std::string> GetElementsFromContext (std::string context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   360
  Ptr <NetDevice> GetNetDeviceFromContext (std::string context);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   361
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   362
  static std::map <uint32_t, std::string> nodeDescriptions;
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   363
  uint64_t m_currentPktCount;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   364
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   365
  void StartNewTraceFile();
7823
2a669a0c452e NetAnim: Add description to NodeContainers
John Abraham <john.abraham@gatech.edu>
parents: 7806
diff changeset
   366
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   367
  // XML helpers
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   368
  std::string GetPreamble (void);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   369
  // Topology element dimensions
8773
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   370
  double m_topoMinX;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   371
  double m_topoMinY;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   372
  double m_topoMaxX;
25b20434eba8 NetAnim: add test and examples to run
John Abraham <john.abraham@gatech.edu>
parents: 7823
diff changeset
   373
  double m_topoMaxY;
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   374
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   375
  std::string GetPacketMetadata (Ptr<const Packet> p);
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   376
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   377
  std::string GetXMLOpen_anim (uint32_t lp);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   378
  std::string GetXMLOpen_topology (double minX,double minY,double maxX,double maxY);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   379
  std::string GetXMLOpenClose_node (uint32_t lp,uint32_t id,double locX,double locY);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   380
  std::string GetXMLOpenClose_link (uint32_t fromLp,uint32_t fromId, uint32_t toLp, uint32_t toId);
7484
cd2d8cd79237 NetAnim: Connect Csma traces
John Abraham <john.abraham@gatech.edu>
parents: 7476
diff changeset
   381
  std::string 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: 7271
diff changeset
   382
  std::string 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: 7271
diff changeset
   383
  std::string GetXMLOpen_wpacket (uint32_t fromLp,uint32_t fromId, double fbTx, double lbTx, double range);
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   384
  std::string GetXMLClose (std::string name) {return "</" + name + ">\n"; }
7769
ccd721b6a755 NetAnim: enable packet meta data
John Abraham <john.abraham@gatech.edu>
parents: 7766
diff changeset
   385
  std::string GetXMLOpenClose_meta (std::string metaInfo);
7360
5949904cf955 Bug 1172 Implement trivial XML output feature for Animation Interface
John Abraham <john.abraham@gatech.edu>
parents: 7271
diff changeset
   386
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   387
};
7362
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   388
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   389
/**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   390
 * \ingroup netanim
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   391
 *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   392
 * \brief Byte tag using by Anim to uniquely identify packets
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   393
 *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   394
 * When Anim receives a Tx Notification we tag the packet with a unique global uint64_t identifier
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   395
 * before recording Tx information
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   396
 * When Anim receives Rx notifications the tag is used to retrieve Tx information recorded earlier 
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   397
 * 
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   398
 */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   399
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   400
class AnimByteTag : public Tag
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   401
{
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   402
public:
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   403
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   404
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   405
   * \brief Get Type Id
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   406
   * \returns Type Id
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   407
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   408
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   409
  static TypeId 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
   410
  
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   411
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   412
   * \brief Get Instance Type Id
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   413
   * \returns Type Id
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   414
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   415
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   416
  virtual TypeId 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
   417
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   418
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   419
   * \brief Get Serialized Size
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   420
   * \returns Serialized Size (i.e size of 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
   421
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   422
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   423
  virtual uint32_t 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
   424
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   425
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   426
   * \brief Serialize function
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   427
   * \param i Tag Buffer
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   428
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   429
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   430
  virtual void 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
   431
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   432
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   433
   * \brief Deserialize function
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   434
   * \param i Tag Buffer
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   435
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   436
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   437
  virtual void 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
   438
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   439
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   440
   * \brief Print tag info
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   441
   * \param os Reference of ostream object
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   442
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   443
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   444
  virtual void 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
   445
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   446
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   447
   * \brief Set global Uid in tag
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   448
   * \param AnimUid global Uid
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   449
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   450
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   451
  void 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
   452
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   453
  /**
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   454
   * \brief Get Uid in tag
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   455
   * \returns Uid in tag
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   456
   *
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   457
   */
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   458
  uint64_t 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
   459
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   460
private:
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   461
  uint64_t 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
   462
};
36b42a8b16d1 Bug 1172 Special case handling for duplicates,forwards and some doxygen fixes
John Abraham <john.abraham@gatech.edu>
parents: 7360
diff changeset
   463
5776
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   464
}
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   465
#endif
aae948449722 Moved net-anim from contrib
Josh Pelkey <jpelkey@gatech.edu>
parents:
diff changeset
   466