src/mobility/model/steady-state-random-waypoint-mobility-model.cc
author Marco Miozzo <marco.miozzo@cttc.es>
Fri, 14 Jun 2013 16:13:07 +0200
changeset 10086 7fa6d3329928
parent 9703 681f35b212ff
child 10410 4d4eb8097fa3
permissions -rw-r--r--
Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7256
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     2
/*
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2009 IITP RAS
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     4
 *
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     8
 *
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    13
 *
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    17
 *
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    18
 * Author: Denis Fakhriev <fakhriev@iitp.ru>
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    19
 */
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    20
#include <cmath>
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    21
#include "ns3/simulator.h"
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    22
#include "ns3/double.h"
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    23
#include "steady-state-random-waypoint-mobility-model.h"
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    24
#include "ns3/test.h"
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    25
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    26
namespace ns3 {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    27
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    28
NS_OBJECT_ENSURE_REGISTERED (SteadyStateRandomWaypointMobilityModel);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    29
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    30
TypeId
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    31
SteadyStateRandomWaypointMobilityModel::GetTypeId (void)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    32
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    33
  static TypeId tid = TypeId ("ns3::SteadyStateRandomWaypointMobilityModel")
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    34
    .SetParent<MobilityModel> ()
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    35
    .SetGroupName ("Mobility")
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    36
    .AddConstructor<SteadyStateRandomWaypointMobilityModel> ()
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    37
    .AddAttribute ("MinSpeed",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    38
                   "Minimum speed value, [m/s]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    39
                   DoubleValue (0.3),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    40
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_minSpeed),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    41
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    42
    .AddAttribute ("MaxSpeed",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    43
                   "Maximum speed value, [m/s]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    44
                   DoubleValue (0.7),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    45
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_maxSpeed),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    46
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    47
    .AddAttribute ("MinPause",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    48
                   "Minimum pause value, [s]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    49
                   DoubleValue (0.0),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    50
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_minPause),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    51
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    52
    .AddAttribute ("MaxPause",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    53
                   "Maximum pause value, [s]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    54
                   DoubleValue (0.0),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    55
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_maxPause),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    56
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    57
    .AddAttribute ("MinX",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    58
                   "Minimum X value of traveling region, [m]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    59
                   DoubleValue (1),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    60
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_minX),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    61
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    62
    .AddAttribute ("MaxX",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    63
                   "Maximum X value of traveling region, [m]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    64
                   DoubleValue (1),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    65
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_maxX),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    66
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    67
    .AddAttribute ("MinY",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    68
                   "Minimum Y value of traveling region, [m]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    69
                   DoubleValue (1),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    70
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_minY),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    71
                   MakeDoubleChecker<double> ())
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    72
    .AddAttribute ("MaxY",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    73
                   "Maximum Y value of traveling region, [m]",
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    74
                   DoubleValue (1),
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    75
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_maxY),
10086
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
    76
                   MakeDoubleChecker<double> ())
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
    77
    .AddAttribute ("Z",
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
    78
                   "Z value of traveling region (fixed), [m]",
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
    79
                   DoubleValue (0.0),
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
    80
                   MakeDoubleAccessor (&SteadyStateRandomWaypointMobilityModel::m_z),
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    81
                   MakeDoubleChecker<double> ());
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
    82
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    83
  return tid;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    84
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    85
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
    86
SteadyStateRandomWaypointMobilityModel::SteadyStateRandomWaypointMobilityModel () :
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    87
  alreadyStarted (false)
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    88
{ 
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    89
  m_speed = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    90
  m_pause = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    91
  m_x1_r = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    92
  m_y1_r = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    93
  m_x2_r = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    94
  m_y2_r = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    95
  m_u_r = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    96
  m_x = CreateObject<UniformRandomVariable> ();
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
    97
  m_y = CreateObject<UniformRandomVariable> ();
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    98
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
    99
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   100
void
9703
681f35b212ff Rename Start and DoStart methods to Initialize and DoInitialize
Vedran Miletić <rivanvx@gmail.com>
parents: 9063
diff changeset
   101
SteadyStateRandomWaypointMobilityModel::DoInitialize (void)
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   102
{
9703
681f35b212ff Rename Start and DoStart methods to Initialize and DoInitialize
Vedran Miletić <rivanvx@gmail.com>
parents: 9063
diff changeset
   103
  DoInitializePrivate ();
681f35b212ff Rename Start and DoStart methods to Initialize and DoInitialize
Vedran Miletić <rivanvx@gmail.com>
parents: 9063
diff changeset
   104
  MobilityModel::DoInitialize ();
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   105
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   106
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   107
void
9703
681f35b212ff Rename Start and DoStart methods to Initialize and DoInitialize
Vedran Miletić <rivanvx@gmail.com>
parents: 9063
diff changeset
   108
SteadyStateRandomWaypointMobilityModel::DoInitializePrivate (void)
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   109
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   110
  alreadyStarted = true;
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   111
  // Configure random variables based on attributes
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   112
  NS_ASSERT (m_minSpeed >= 1e-6);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   113
  NS_ASSERT (m_minSpeed <= m_maxSpeed);
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   114
  m_speed->SetAttribute ("Min", DoubleValue (m_minSpeed));
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   115
  m_speed->SetAttribute ("Max", DoubleValue (m_maxSpeed));
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   116
  NS_ASSERT (m_minX < m_maxX);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   117
  NS_ASSERT (m_minY < m_maxY);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   118
  m_position = CreateObject<RandomRectanglePositionAllocator> ();
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   119
  m_x->SetAttribute ("Min", DoubleValue (m_minX));
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   120
  m_x->SetAttribute ("Max", DoubleValue (m_maxX));
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   121
  m_y->SetAttribute ("Min", DoubleValue (m_minY));
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   122
  m_y->SetAttribute ("Max", DoubleValue (m_maxY));
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   123
  m_position->SetX (m_x);
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   124
  m_position->SetY (m_y);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   125
  NS_ASSERT (m_minPause <= m_maxPause);
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   126
  m_pause->SetAttribute ("Min", DoubleValue (m_minPause));
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   127
  m_pause->SetAttribute ("Max", DoubleValue (m_maxPause));
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
   128
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   129
  m_helper.Update ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   130
  m_helper.Pause ();
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
   131
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   132
  // calculate the steady-state probability that a node is initially paused
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   133
  double expectedPauseTime = (m_minPause + m_maxPause)/2;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   134
  double a = m_maxX - m_minX;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   135
  double b = m_maxY - m_minY;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   136
  double v0 = m_minSpeed;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   137
  double v1 = m_maxSpeed;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   138
  double log1 = b*b / a*std::log (std::sqrt ((a*a)/(b*b) + 1) + a/b);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   139
  double log2 = a*a / b*std::log (std::sqrt ((b*b)/(a*a) + 1) + b/a);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   140
  double expectedTravelTime = 1.0/6.0*(log1 + log2);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   141
  expectedTravelTime += 1.0/15.0*((a*a*a)/(b*b) + (b*b*b)/(a*a)) -
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7179
diff changeset
   142
    1.0/15.0*std::sqrt (a*a + b*b)*((a*a)/(b*b) + (b*b)/(a*a) - 3);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   143
  if (v0 == v1)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   144
    {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   145
      expectedTravelTime /= v0;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   146
    }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   147
  else
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   148
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7179
diff changeset
   149
      expectedTravelTime *= std::log (v1/v0)/(v1 - v0);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   150
    }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   151
  double probabilityPaused = expectedPauseTime/(expectedPauseTime + expectedTravelTime);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   152
  NS_ASSERT (probabilityPaused >= 0 && probabilityPaused <= 1);
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
   153
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   154
  double u = m_u_r->GetValue (0, 1);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   155
  if (u < probabilityPaused) // node initially paused
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   156
    {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   157
      m_helper.SetPosition (m_position->GetNext ());
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   158
      u = m_u_r->GetValue (0, 1);
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
   159
      Time pause;
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   160
      if (m_minPause != m_maxPause)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   161
        {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   162
          if (u < (2*m_minPause/(m_minPause + m_maxPause)))
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   163
            {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   164
              pause = Seconds (u*(m_minPause + m_maxPause)/2);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   165
            }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   166
          else
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   167
            {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   168
              // there is an error in equation 20 in the Tech. Report MCS-03-04
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   169
              // this error is corrected in the TMC 2004 paper and below
9063
32755d0516f4 Bug 1237 - code cleanups related to includes
Vedran Miletić <rivanvx@gmail.com>
parents: 8984
diff changeset
   170
              pause = Seconds (m_maxPause - std::sqrt ((1 - u)*(m_maxPause*m_maxPause - m_minPause*m_minPause)));
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   171
            }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   172
        }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   173
      else // if pause is constant
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   174
        {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   175
          pause = Seconds (u*expectedPauseTime);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   176
        }
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7179
diff changeset
   177
      NS_ASSERT (!m_event.IsRunning ());
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   178
      m_event = Simulator::Schedule (pause, &SteadyStateRandomWaypointMobilityModel::BeginWalk, this);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   179
    }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   180
  else // node initially moving
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   181
    {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   182
      double x1, x2, y1, y2;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   183
      double r = 0;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   184
      double u1 = 1;
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   185
      while (u1 >= r)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   186
        {
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   187
          x1 = m_x1_r->GetValue (0, a);
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   188
          y1 = m_y1_r->GetValue (0, b);
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   189
          x2 = m_x2_r->GetValue (0, a);
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   190
          y2 = m_y2_r->GetValue (0, b);
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   191
          u1 = m_u_r->GetValue (0, 1);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   192
          r = std::sqrt (((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1))/(a*a + b*b));
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   193
          NS_ASSERT (r <= 1);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   194
        }
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   195
      double u2 = m_u_r->GetValue (0, 1);
10086
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
   196
      m_helper.SetPosition (Vector (m_minX + u2*x1 + (1 - u2)*x2, m_minY + u2*y1 + (1 - u2)*y2, m_z));
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7179
diff changeset
   197
      NS_ASSERT (!m_event.IsRunning ());
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   198
      m_event = Simulator::ScheduleNow (&SteadyStateRandomWaypointMobilityModel::SteadyStateBeginWalk, this, 
10086
7fa6d3329928 Update SteadyStateRandomWaypointMobilityModel with fixed z axis values
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9703
diff changeset
   199
                                        Vector (m_minX + x2, m_minY + y2, m_z));
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   200
    }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   201
  NotifyCourseChange ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   202
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   203
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   204
void
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   205
SteadyStateRandomWaypointMobilityModel::SteadyStateBeginWalk (const Vector &destination)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   206
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   207
  m_helper.Update ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   208
  Vector m_current = m_helper.GetCurrentPosition ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   209
  NS_ASSERT (m_minX <= m_current.x && m_current.x <= m_maxX);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   210
  NS_ASSERT (m_minY <= m_current.y && m_current.y <= m_maxY);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   211
  NS_ASSERT (m_minX <= destination.x && destination.x <= m_maxX);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   212
  NS_ASSERT (m_minY <= destination.y && destination.y <= m_maxY);
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   213
  double u = m_u_r->GetValue (0, 1);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   214
  double speed = std::pow (m_maxSpeed, u)/std::pow (m_minSpeed, u - 1);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   215
  double dx = (destination.x - m_current.x);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   216
  double dy = (destination.y - m_current.y);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   217
  double dz = (destination.z - m_current.z);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   218
  double k = speed / std::sqrt (dx*dx + dy*dy + dz*dz);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   219
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   220
  m_helper.SetVelocity (Vector (k*dx, k*dy, k*dz));
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   221
  m_helper.Unpause ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   222
  Time travelDelay = Seconds (CalculateDistance (destination, m_current) / speed);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   223
  m_event = Simulator::Schedule (travelDelay, 
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   224
                                 &SteadyStateRandomWaypointMobilityModel::Start, this);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   225
  NotifyCourseChange ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   226
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   227
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   228
void
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   229
SteadyStateRandomWaypointMobilityModel::BeginWalk (void)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   230
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   231
  m_helper.Update ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   232
  Vector m_current = m_helper.GetCurrentPosition ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   233
  NS_ASSERT (m_minX <= m_current.x && m_current.x <= m_maxX);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   234
  NS_ASSERT (m_minY <= m_current.y && m_current.y <= m_maxY);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   235
  Vector destination = m_position->GetNext ();
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   236
  double speed = m_speed->GetValue ();
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   237
  double dx = (destination.x - m_current.x);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   238
  double dy = (destination.y - m_current.y);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   239
  double dz = (destination.z - m_current.z);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   240
  double k = speed / std::sqrt (dx*dx + dy*dy + dz*dz);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   241
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   242
  m_helper.SetVelocity (Vector (k*dx, k*dy, k*dz));
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   243
  m_helper.Unpause ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   244
  Time travelDelay = Seconds (CalculateDistance (destination, m_current) / speed);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   245
  m_event = Simulator::Schedule (travelDelay,
7179
9d72cc013844 mobility coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6839
diff changeset
   246
                                 &SteadyStateRandomWaypointMobilityModel::Start, this);
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   247
  NotifyCourseChange ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   248
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   249
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   250
void
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   251
SteadyStateRandomWaypointMobilityModel::Start (void)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   252
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   253
  m_helper.Update ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   254
  m_helper.Pause ();
8983
91d4c78133a8 Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 1)
Mitch Watrous
parents: 7385
diff changeset
   255
  Time pause = Seconds (m_pause->GetValue ());
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   256
  m_event = Simulator::Schedule (pause, &SteadyStateRandomWaypointMobilityModel::BeginWalk, this);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   257
  NotifyCourseChange ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   258
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   259
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   260
Vector
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   261
SteadyStateRandomWaypointMobilityModel::DoGetPosition (void) const
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   262
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   263
  m_helper.Update ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   264
  return m_helper.GetCurrentPosition ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   265
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   266
void 
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   267
SteadyStateRandomWaypointMobilityModel::DoSetPosition (const Vector &position)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   268
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   269
  if (alreadyStarted)
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   270
    {
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   271
      m_helper.SetPosition (position);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   272
      Simulator::Remove (m_event);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   273
      m_event = Simulator::ScheduleNow (&SteadyStateRandomWaypointMobilityModel::Start, this);
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   274
    }
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   275
}
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   276
Vector
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   277
SteadyStateRandomWaypointMobilityModel::DoGetVelocity (void) const
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   278
{
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   279
  return m_helper.GetVelocity ();
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   280
}
8984
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   281
int64_t
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   282
SteadyStateRandomWaypointMobilityModel::DoAssignStreams (int64_t stream)
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   283
{
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   284
  int64_t positionStreamsAllocated = 0;
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   285
  m_speed->SetStream (stream);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   286
  m_pause->SetStream (stream + 1);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   287
  m_x1_r->SetStream (stream + 2);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   288
  m_y1_r->SetStream (stream + 3);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   289
  m_x2_r->SetStream (stream + 4);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   290
  m_y2_r->SetStream (stream + 5);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   291
  m_u_r->SetStream (stream + 6);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   292
  m_x->SetStream (stream + 7);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   293
  m_y->SetStream (stream + 8);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   294
  positionStreamsAllocated = m_position->AssignStreams (stream + 9);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   295
  return (9 + positionStreamsAllocated);
85eed149a0ea Replace src/mobility usage of RandomVariable with RandomVariableStream (Patch Set 2)
Mitch Watrous
parents: 8983
diff changeset
   296
}
5979
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   297
34687dd4a727 Steady-state RWP model
Denis Fakhriev <fakhriev@iitp.ru>
parents:
diff changeset
   298
} // namespace ns3