author | Tom Henderson <tomh@tomh.org> |
Sat, 30 May 2009 15:20:56 -0700 | |
changeset 4481 | 9250a25ee683 |
parent 4201 | 511a086fde07 |
child 5362 | d31f56c9b7cb |
permissions | -rw-r--r-- |
2833
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
2 |
/* |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
3 |
* Copyright (c) 2008 INRIA |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
4 |
* |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
7 |
* published by the Free Software Foundation; |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
8 |
* |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
12 |
* GNU General Public License for more details. |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
13 |
* |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
17 |
* |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
18 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
f3474fd850b2
add missing license headers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2701
diff
changeset
|
19 |
*/ |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
20 |
|
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
#ifndef MOBILITY_HELPER_H |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#define MOBILITY_HELPER_H |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
|
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
#include <vector> |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
#include "ns3/object-factory.h" |
2438
e2ac9f9aeeb9
value.h -> attribute.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
26 |
#include "ns3/attribute.h" |
2700
c54fbae72e8f
change signature of MobilityHelper::Layout and MobilityHelper::LayoutAll.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2603
diff
changeset
|
27 |
#include "ns3/position-allocator.h" |
c54fbae72e8f
change signature of MobilityHelper::Layout and MobilityHelper::LayoutAll.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2603
diff
changeset
|
28 |
#include "node-container.h" |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
|
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
namespace ns3 { |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
|
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
class PositionAllocator; |
2401
281ea8b13525
add hierarchical support to MobilityHelper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2399
diff
changeset
|
33 |
class MobilityModel; |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
|
2700
c54fbae72e8f
change signature of MobilityHelper::Layout and MobilityHelper::LayoutAll.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2603
diff
changeset
|
35 |
/** |
c54fbae72e8f
change signature of MobilityHelper::Layout and MobilityHelper::LayoutAll.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2603
diff
changeset
|
36 |
* \brief assign positions and mobility models to nodes. |
2701 | 37 |
* |
2995
b72805b3ca69
Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents:
2897
diff
changeset
|
38 |
* MobilityHelper::Install is the most important method here. |
2700
c54fbae72e8f
change signature of MobilityHelper::Layout and MobilityHelper::LayoutAll.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2603
diff
changeset
|
39 |
*/ |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
class MobilityHelper |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
{ |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
public: |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
MobilityHelper (); |
2897
cb427d45a011
avoid compilation warning about undefined MobilityModel class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2834
diff
changeset
|
44 |
~MobilityHelper (); |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
|
2701 | 46 |
/** |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
47 |
* Set the position allocator which will be used to allocate the initial |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
48 |
* position of every node initialized during MobilityModel::Install. |
2701 | 49 |
* |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
50 |
* \param allocator allocate initial node positions |
2701 | 51 |
*/ |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
52 |
void SetPositionAllocator (Ptr<PositionAllocator> allocator); |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
|
2701 | 54 |
/** |
55 |
* \param type the type of mobility model to use. |
|
56 |
* \param n1 the name of the attribute to set in the mobility model. |
|
57 |
* \param v1 the value of the attribute to set in the mobility model. |
|
58 |
* \param n2 the name of the attribute to set in the mobility model. |
|
59 |
* \param v2 the value of the attribute to set in the mobility model. |
|
60 |
* \param n3 the name of the attribute to set in the mobility model. |
|
61 |
* \param v3 the value of the attribute to set in the mobility model. |
|
62 |
* \param n4 the name of the attribute to set in the mobility model. |
|
63 |
* \param v4 the value of the attribute to set in the mobility model. |
|
64 |
* \param n5 the name of the attribute to set in the mobility model. |
|
65 |
* \param v5 the value of the attribute to set in the mobility model. |
|
66 |
* \param n6 the name of the attribute to set in the mobility model. |
|
67 |
* \param v6 the value of the attribute to set in the mobility model. |
|
68 |
* \param n7 the name of the attribute to set in the mobility model. |
|
69 |
* \param v7 the value of the attribute to set in the mobility model. |
|
70 |
* \param n8 the name of the attribute to set in the mobility model. |
|
71 |
* \param v8 the value of the attribute to set in the mobility model. |
|
72 |
* \param n9 the name of the attribute to set in the mobility model. |
|
73 |
* \param v9 the value of the attribute to set in the mobility model. |
|
74 |
*/ |
|
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
75 |
void SetPositionAllocator (std::string type, |
3786
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
76 |
std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
77 |
std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
78 |
std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
79 |
std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
80 |
std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
81 |
std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
82 |
std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
83 |
std::string n8 = "", const AttributeValue &v8 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
84 |
std::string n9 = "", const AttributeValue &v9 = EmptyAttributeValue ()); |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
|
2701 | 86 |
/** |
87 |
* \param type the type of mobility model to use. |
|
88 |
* \param n1 the name of the attribute to set in the mobility model. |
|
89 |
* \param v1 the value of the attribute to set in the mobility model. |
|
90 |
* \param n2 the name of the attribute to set in the mobility model. |
|
91 |
* \param v2 the value of the attribute to set in the mobility model. |
|
92 |
* \param n3 the name of the attribute to set in the mobility model. |
|
93 |
* \param v3 the value of the attribute to set in the mobility model. |
|
94 |
* \param n4 the name of the attribute to set in the mobility model. |
|
95 |
* \param v4 the value of the attribute to set in the mobility model. |
|
96 |
* \param n5 the name of the attribute to set in the mobility model. |
|
97 |
* \param v5 the value of the attribute to set in the mobility model. |
|
98 |
* \param n6 the name of the attribute to set in the mobility model. |
|
99 |
* \param v6 the value of the attribute to set in the mobility model. |
|
100 |
* \param n7 the name of the attribute to set in the mobility model. |
|
101 |
* \param v7 the value of the attribute to set in the mobility model. |
|
102 |
* \param n8 the name of the attribute to set in the mobility model. |
|
103 |
* \param v8 the value of the attribute to set in the mobility model. |
|
104 |
* \param n9 the name of the attribute to set in the mobility model. |
|
105 |
* \param v9 the value of the attribute to set in the mobility model. |
|
106 |
* |
|
2995
b72805b3ca69
Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents:
2897
diff
changeset
|
107 |
* Calls to MobilityHelper::Install will create an instance of a matching |
2701 | 108 |
* mobility model for each node. |
109 |
*/ |
|
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
110 |
void SetMobilityModel (std::string type, |
3786
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
111 |
std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
112 |
std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
113 |
std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
114 |
std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
115 |
std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
116 |
std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
117 |
std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
118 |
std::string n8 = "", const AttributeValue &v8 = EmptyAttributeValue (), |
9f384deadb46
replace \t with 8 spaces.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3491
diff
changeset
|
119 |
std::string n9 = "", const AttributeValue &v9 = EmptyAttributeValue ()); |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
120 |
|
2701 | 121 |
/** |
122 |
* \param reference item to push. |
|
123 |
* |
|
124 |
* Push an item on the top of the stack of "reference mobility models". |
|
125 |
* The input item should be a node instance to which a mobility model |
|
2995
b72805b3ca69
Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents:
2897
diff
changeset
|
126 |
* has already been aggregated (usually by a call to Install). |
2701 | 127 |
* |
4481 | 128 |
* If this stack is not empty when MobilityHelper::Install |
2701 | 129 |
* is called, the model from the top of the stack is used |
130 |
* to create a ns3::HierarchicalMobilityModel to make the |
|
131 |
* newly-created models define their positions relative to that |
|
132 |
* of the parent mobility model. |
|
133 |
* |
|
134 |
* This method is typically used to create hierarchical mobility |
|
135 |
* patterns and positions by starting with the large-scale mobility |
|
136 |
* features, and, then, defining the smaller-scale movements relative |
|
137 |
* to a few reference points in the large-scale model. |
|
138 |
*/ |
|
2401
281ea8b13525
add hierarchical support to MobilityHelper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2399
diff
changeset
|
139 |
void PushReferenceMobilityModel (Ptr<Object> reference); |
2701 | 140 |
/** |
4481 | 141 |
* \param referenceName named item to push. |
4140
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
142 |
* |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
143 |
* Push an item on the top of the stack of "reference mobility models". |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
144 |
* The input item should be a node instance to which a mobility model |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
145 |
* has already been aggregated (usually by a call to Install). |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
146 |
* |
4481 | 147 |
* If this stack is not empty when MobilityHelper::Install |
4140
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
148 |
* is called, the model from the top of the stack is used |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
149 |
* to create a ns3::HierarchicalMobilityModel to make the |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
150 |
* newly-created models define their positions relative to that |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
151 |
* of the parent mobility model. |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
152 |
* |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
153 |
* This method is typically used to create hierarchical mobility |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
154 |
* patterns and positions by starting with the large-scale mobility |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
155 |
* features, and, then, defining the smaller-scale movements relative |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
156 |
* to a few reference points in the large-scale model. |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
157 |
*/ |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
158 |
void PushReferenceMobilityModel (std::string referenceName); |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
159 |
/** |
2701 | 160 |
* Remove the top item from the top of the stack of |
161 |
* "reference mobility models". |
|
162 |
*/ |
|
2401
281ea8b13525
add hierarchical support to MobilityHelper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2399
diff
changeset
|
163 |
void PopReferenceMobilityModel (void); |
281ea8b13525
add hierarchical support to MobilityHelper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2399
diff
changeset
|
164 |
|
2701 | 165 |
/** |
166 |
* \returns a string which contains the TypeId of the currently-selected |
|
167 |
* mobility model. |
|
168 |
*/ |
|
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
169 |
std::string GetMobilityModelType (void) const; |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
170 |
|
2701 | 171 |
/** |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
172 |
* \brief "Layout" a single node according to the current position allocator |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
173 |
* type. |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
174 |
* |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
175 |
* This method creates an instance of a ns3::MobilityModel subclass (the |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
176 |
* type of which was set with MobilityHelper::SetMobilityModel), aggregates |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
177 |
* it to the provided node, and sets an initial position based on the current |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
178 |
* position allocator (set through MobilityHelper::SetPositionAllocator). |
2701 | 179 |
* |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
180 |
* \param node The node to "layout." |
2701 | 181 |
*/ |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
182 |
void Install (Ptr<Node> node) const; |
4140
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
183 |
/** |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
184 |
* \brief "Layout" a single node according to the current position allocator |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
185 |
* type. |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
186 |
* |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
187 |
* This method creates an instance of a ns3::MobilityModel subclass (the |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
188 |
* type of which was set with MobilityHelper::SetMobilityModel), aggregates |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
189 |
* it to the provided node, and sets an initial position based on the current |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
190 |
* position allocator (set through MobilityHelper::SetPositionAllocator). |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
191 |
* |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
192 |
* \param nodeName The name of the node to "layout." |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
193 |
*/ |
6bbf05bf4826
Brute force all of the helpers to use object name service
Craig Dowell <craigdo@ee.washington.edu>
parents:
3848
diff
changeset
|
194 |
void Install (std::string nodeName) const; |
3848
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
195 |
|
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
196 |
/** |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
197 |
* \brief Layout a collection of nodes according to the current position allocator |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
198 |
* type. |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
199 |
* |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
200 |
* For each node in the provided NodeContainer, this method creates an instance |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
201 |
* of a ns3::MobilityModel subclass (the type of which was set with |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
202 |
* MobilityHelper::SetMobilityModel), aggregates it to the node, and sets an |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
203 |
* initial position based on the current position allocator (set through |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
204 |
* MobilityHelper::SetPositionAllocator). |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
205 |
* |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
206 |
* \param container The set of nodes to layout. |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
207 |
*/ |
affd0834debc
address bug 393 (need to overload Install methods for python)
Craig Dowell <craigdo@ee.washington.edu>
parents:
3786
diff
changeset
|
208 |
void Install (NodeContainer container) const; |
2701 | 209 |
|
210 |
/** |
|
2995
b72805b3ca69
Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents:
2897
diff
changeset
|
211 |
* Perform the work of MobilityHelper::Install on _all_ nodes which |
2701 | 212 |
* exist in the simulation. |
213 |
*/ |
|
2995
b72805b3ca69
Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents:
2897
diff
changeset
|
214 |
void InstallAll (void); |
3491
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
215 |
|
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
216 |
/** |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
217 |
* \param os output stream |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
218 |
* \param nodeid the id of the node to generate ascii output for. |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
219 |
* |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
220 |
* Enable ascii output on the mobility model associated to the |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
221 |
* specified nodeid and dump that to the specified stdc++ output |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
222 |
* stream. |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
223 |
*/ |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
224 |
static void EnableAscii (std::ostream &os, uint32_t nodeid); |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
225 |
/** |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
226 |
* \param os output stream |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
227 |
* \param n node container |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
228 |
* |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
229 |
* Enable ascii output on the mobility model associated each of |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
230 |
* the nodes in the input container and dump that to the |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
231 |
* specified stdc++ output stream. |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
232 |
*/ |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
233 |
static void EnableAscii (std::ostream &os, NodeContainer n); |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
234 |
/** |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
235 |
* \param os output stream |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
236 |
* |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
237 |
* Enable ascii output on the mobility model associated |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
238 |
* every node in the system and dump that to the specified |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
239 |
* stdc++ output stream. |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
240 |
*/ |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
241 |
static void EnableAsciiAll (std::ostream &os); |
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
242 |
|
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
243 |
private: |
3491
b2de71af0e3f
bug 251: mobility helper has no ascii output
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
3021
diff
changeset
|
244 |
static void CourseChanged (std::ostream *os, Ptr<const MobilityModel> mobility); |
2401
281ea8b13525
add hierarchical support to MobilityHelper
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2399
diff
changeset
|
245 |
std::vector<Ptr<MobilityModel> > m_mobilityStack; |
2399
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
246 |
ObjectFactory m_mobility; |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
247 |
Ptr<PositionAllocator> m_position; |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
248 |
}; |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
249 |
|
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
250 |
} // namespace ns3 |
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
251 |
|
fd9d94d518d2
convert Mobility subsystem to Value framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
252 |
#endif /* MOBILITY_HELPER_H */ |