View | Details | Raw Unified | Return to bug 1784
Collapse All | Expand All

(-)ns-3.18/CHANGES.html (+20 lines)
 Lines 51-56    Link Here 
51
us a note on ns-developers mailing list.</p>
51
us a note on ns-developers mailing list.</p>
52
52
53
<hr>
53
<hr>
54
<h1>Changes from ns-3.18 to ns-3.19</h1>
55
<h2>New API:</h2>
56
<ul>
57
  <li></li>
58
</ul>
59
<h2>Changes to existing API:</h2>
60
<ul>
61
  <li></li>
62
</ul>
63
<h2>Changes to build system:</h2>
64
<ul>
65
  <li></li>
66
</ul>
67
<h2>Changed behavior:</h2>
68
<ul>
69
  <li></li>
70
</ul>
71
72
<hr>
54
<h1>Changes from ns-3.17 to ns-3.18</h1>
73
<h1>Changes from ns-3.17 to ns-3.18</h1>
55
74
56
<h2>New API:</h2>
75
<h2>New API:</h2>
 Lines 161-166    Link Here 
161
  <li>AODV Hellos are disabled by default. The performance with Hellos enabled and disabled are almost identical. With Hellos enabled, AODV will suppress hellos from transmission, if any recent broadcast such as RREQ was transmitted. The attribute <tt>ns3::aodv::RoutingProtocol::EnableHello</tt> can be used to enable/disable Hellos.
180
  <li>AODV Hellos are disabled by default. The performance with Hellos enabled and disabled are almost identical. With Hellos enabled, AODV will suppress hellos from transmission, if any recent broadcast such as RREQ was transmitted. The attribute <tt>ns3::aodv::RoutingProtocol::EnableHello</tt> can be used to enable/disable Hellos.
162
</ul>
181
</ul>
163
182
183
<hr>
164
<h1>Changes from ns-3.16 to ns-3.17</h1>
184
<h1>Changes from ns-3.16 to ns-3.17</h1>
165
185
166
<h2>New API:</h2>
186
<h2>New API:</h2>
(-)ns-3.18/RELEASE_NOTES (+34 lines)
 Lines 22-27    Link Here 
22
22
23
New user-visible features
23
New user-visible features
24
-------------------------
24
-------------------------
25
- It is now possible to randomize the time of the first beacon from an access point.
26
  Use an attribute "EnableBeaconJitter" to enable/disable this feature.
27
- a new FixedRoomPositionAllocator helper class is available, it
28
  allows to generate a random position uniformly distributed in the
29
  volume of a chosen room inside a chosen building. 
30
31
Bugs fixed
32
----------
33
- Bug 1722 - beacons transmitted concurrently
34
- Bug 1616 - WifiPhyStateHelper reports false CCA_BUSY times at State trace source
35
- Bug 1011 - assert failed. file=../src/devices/wifi/dcf-manager.cc
36
- Bug 1691 - RTS/CTS NAV reset prematurely
37
38
Release 3.18
39
=============
40
41
Availability
42
------------
43
This release is available from: 
44
http://www.nsnam.org/release/ns-allinone-3.18.tar.bz2
45
46
Supported platforms
47
-------------------
48
These platforms have been tested; others may work also:
49
- Fedora Core 18 (32/64 bit) with g++-4.7.2
50
- Fedora Core 17 (32/64 bit) with g++-4.7.0
51
- Ubuntu 13.04 (32/64 bit) with g++-4.7.3
52
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
53
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
54
- OS X Mountain Lion 10.8.3 with g++-4.2.1
55
- FreeBSD 9.1-RELEASE (64 bit) with g++-4.2.1
56
57
New user-visible features
58
-------------------------
25
- Time attributes can now be bounded.  See attribute-test-suite.cc for an
59
- Time attributes can now be bounded.  See attribute-test-suite.cc for an
26
  example.
60
  example.
27
- Data collection components have been added to the stats module.  These
61
- Data collection components have been added to the stats module.  These
(-)ns-3.18/RELEASE_NOTES.orig (+1881 lines)
Line 0    Link Here 
1
2
		ns-3 RELEASE NOTES
3
4
This file contains ns-3 release notes (most recent releases first).  
5
6
All of the ns-3 documentation is accessible from the ns-3 website: 
7
http://www.nsnam.org including tutorials: http://www.nsnam.org/tutorials.html
8
9
Consult the file CHANGES.html for more detailed information about changed
10
API and behavior across ns-3 releases.
11
12
Release 3.18
13
============
14
15
Availability
16
------------
17
This release is available from: 
18
http://www.nsnam.org/release/ns-allinone-3.18.tar.bz2
19
20
Supported platforms
21
-------------------
22
23
New user-visible features
24
-------------------------
25
- Time attributes can now be bounded.  See attribute-test-suite.cc for an
26
  example.
27
- Data collection components have been added to the stats module.  These
28
  components can be used to generate time series data in files and plots.
29
- IPv6 address class 2001:db8::/32 is now dropped by routers (RFC 3849).
30
- New generic hash function interface.  Two hash functions are provided:
31
  murmur3 (default), and the venerable FNV1a.  See the Hash Functions
32
  section in the Manual.
33
- New Mac16Address has been added, Mac64Address is now in-line with 
34
  Mac48Address and all the three can be used in IPv6 autoconfigure. 
35
- Previously, the use of Building models was limited to the use of the
36
  companion BuildingsMobilityModel. Now, any MobilityModel can be
37
  used with Building models. 
38
- The latest LTE module code by the LENA project has been merged,
39
  including the following new features: 
40
   - PHY support for UE measurements (RSRP and RSRQ)
41
   - RRC support for UE measurements (configuration, execution, reporting)
42
   - Automatic Handover trigger based on RRC UE measurement reports
43
- IPv6 can now detect and use Path-MTU. See 
44
  examples/ipv6/fragmentation-ipv6-two-MTU.cc for an example.
45
- Radvd application have a new Helper. See the updated 
46
  examples/ipv6/radvd.cc for an example.
47
- 11n- It is now possible to create a high throughput (HT) node that used the new 11n data rates and preambles.
48
- It is now possible to request printing command line arguments to the
49
  desired output stream using PrintHelp or operator <<
50
51
Bugs fixed
52
----------
53
- Bug  760 - IP address removal can be painful
54
- Bug 1190 - Suppress hello if bcast was sent within the last hello interval
55
- Bug 1296 - Enhancement in Ipv[4,6]RoutingHelper
56
- Bug 1390 - ICMPv6 Redirect are handled correctly only for /64 networks
57
- Bug 1522 - Hidden node scenario leads to ARP failure
58
- Bug 1584 - Old Association Request Timeouts are not canceled
59
- Bug 1629 - Make AODV Default to Disable Hello
60
- Bug 1643 - NdiscCache creation and existence checks
61
- Bug 1646 - ICMPv6 Redirect are sent from global address instead of link-local
62
- Bug 1662 - m_type not set for Ipv6OptionRouterAlertHeader
63
- Bug 1678 - C++11 compliance problem with std::pair"
64
- Bug 1682 - ./waf crashes on FC10
65
- Bug 1683 - IPv6 autoconfigured don't use *infinite* lifetimes
66
- Bug 1669 - ns-3 should support binding two and three (possibly more) arguments
67
- Bug 1675 - Throughput computation error in Wireless examples
68
- Bug 1687 - wscript features report doesn't respect NOCOLOR
69
- Bug 1688 - Routers should advertise themselves from the link-local address
70
- Bug 1689 - IPv6 shouldn't add a default gateway without checking the Router lifetime
71
- Bug 1690 - missing header files from wifi wscript
72
- Bug 1697 - ICMPv6 Redirect trigger contains multiple bugs
73
- Bug 1698 - mobility.SetPositionAllocator misses prefix "ns3::"
74
- Bug 1700 - Ipv6RawSocket does not honor the bound address when sending packets
75
- Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope
76
- Bug 1702 - Ipv6InterfaceContainer::SetRouter should not always add the router as the default router.
77
- Bug 1703 - Nodes don't react to a DAD
78
- Bug 1712 - The IP (v4 and v6) forwarding needs a test
79
- Bug 1718 - Ipv4StaticRouting log component is misspelled
80
- Bug 1720 - IPv6 Fragmentation cause crashes
81
- Bug 1721 - Path MTU isn't handled properly
82
- Bug 1723 - name clash in ipv4-header.h with <termios.h>
83
- Bug 1727 - Ping6 should use a proper source address
84
- Bug 1728 - Radvd application is missing an Helper
85
- Bug 1731 - lte-phy-error-model passes unexpectedly
86
- Bug 1738 - strict aliasing compiler bug
87
- Bug 1742 - IPv6 HbH and Dst Extension Header size is not correctly calculated
88
- Bug 1752 - RadvdInterface m_defaultLifeTime is set to milliseconds instead of seconds
89
- Bug 1753 - Halting Issue with DistributedSimulatorImpl
90
- Bug 1754 - Missing GIL lock in generated callback destructor
91
92
Known issues
93
------------
94
In general, known issues are tracked on the project tracker available
95
at http://www.nsnam.org/bugzilla/
96
97
Release 3.17
98
============
99
100
Availability
101
------------
102
This release is available from: 
103
http://www.nsnam.org/release/ns-allinone-3.17.tar.bz2
104
105
Supported platforms
106
-------------------
107
These platforms have been tested; others may work also:
108
- Fedora Core 18 (32/64 bit) with g++-4.7.2
109
- Fedora Core 17 (32/64 bit) with g++-4.7.0
110
- Ubuntu 13.04 (32/64 bit) with g++-4.7.3
111
- Ubuntu 12.10 (32/64 bit) with g++-4.6.3
112
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
113
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
114
- OS X Mountain Lion 10.8.3 with g++-4.2.1
115
- FreeBSD 9.1-RELEASE (64 bit) with g++-4.2.1
116
117
New user-visible features
118
-------------------------
119
- new TCP Westwood and Westwood+ models
120
- new FdNetDevice model and associated helpers.  The FdNetDevice is able
121
  to read and write from a file descriptor.  Various helpers are provided
122
  to associate this descriptor with underlying devices or sockets on the 
123
  host operating system, including a packet socket for emulation, and
124
  tap devices including a version specialized for use on PlanetLab.
125
- ns-3-click: it's now possible to (i) have Click pull random numbers from
126
  ns-3 and (ii) have ns-3 set "defines" in Click via the simulation file 
127
  (see src/click/examples/nsclick-defines.cc).
128
- Waf shipped with ns-3 has been upgraded to version 1.7.10 and custom
129
  pkg-config generator has been replaced by Waf's builtin tool.
130
- create-module.py script has been updated to work with waf 1.7 and support
131
  for creating modules with names containing dashes has been added.
132
- the M5 release of the LTE module by the LENA project has been
133
  merged; please see src/lte/RELEASE_NOTES for more detailed info 
134
135
Bugs fixed
136
----------
137
- bug 1256 - Unnecessary SND.NXT advance, missing ACK for Out of Order segments
138
- bug 1318 - Ipv6L3Protocol::LocalDeliver can get stuck in an infinte loop
139
- bug 1409 - Add an attribute "SystemId" to configure the ID for MPI
140
- bug 1421 - Frequency dependent propagation loss models need uniform Frequency / Lambda attribute
141
- bug 1434 - DSR throughput not comparable to other protocols for manet example
142
- bug 1502 - Shutdown on tcp socket seems to misbehave
143
- bug 1503 - BlockAckManager infine loop
144
- bug 1517 - Waf clean/distclean doesn't remove the doc/html directory
145
- bug 1540 - Waf not finding click libraries
146
- bug 1549 - Test for NS_LOG
147
- bug 1556 - Uses of htonl making OpenFlow's match field error
148
- bug 1563 - Reduce valgrind test scope
149
- bug 1564 - Packet meta data isn't shown in dumbbell-animation.xml
150
- bug 1566 - WiFi SNR tag improvements
151
- bug 1568 - Deserialized addresses are implicity marked as Mac48Address
152
- bug 1569 - droptail_vs_red example doesn't run
153
- bug 1570 - Valgrind errors in new test examples
154
- bug 1574 - Node color overwritten, by mobility updates in netanim
155
- bug 1575 - Invert the y-axis in netanim
156
- bug 1576 - Frequency units HERTZ and MEGAHERTZ mix up
157
- bug 1577 - Typo in ascii picture in example aodv script
158
- bug 1579 - edca-txop-n fragmentation causes segfault
159
- bug 1582 - IPv6 raw socket return value is not like Linux socket
160
- bug 1585 - Length field of A-MSDU subframe header endianness
161
- bug 1586 - Building documentation fails if make runs in parallel
162
- bug 1588 - UdpEchoServer::HandleRead logs fail when using Ipv6
163
- bug 1589 - Bake - support pre-2.7 version of python
164
- bug 1590 - Bake - more autotools version support
165
- bug 1595 - Function declarations without implementations cause problems with dsr module's python bindings
166
- bug 1596 - Inet TopologyReader is skipping one link and duplicating another one
167
- bug 1600 - Icmpv6OptionLinkLayerAddress can only carry 48 bit addresses correctly
168
- bug 1601 - RttEstimator doesn't set the m_currentEstimatedRtt to m_initialEstimatedRtt on creation
169
- bug 1602 - waf build can break due to file collisions in higher-level directory
170
- bug 1603 - random-variable-stream-helper - this unavalable for static member functions
171
- bug 1607 - OnOffApplication over TCP with IPv6 support
172
- bug 1608 - DSR Network ACK is not handled correctly
173
- bug 1609 - Route Request table is needed
174
- bug 1612 - pyviz (visualizer) will not be installed
175
- bug 1613 - Can't build ns-3-dev with g++ 4.7.2
176
- bug 1615 - Adjusting OLSR HelloInterval Attribute results in no links
177
- bug 1618 - bake.py not detecting install of libxml2-dev on ubuntu
178
- bug 1623 - pybindgen rev809 is not able to build after Ubuntu 1210
179
- bug 1625 - ns-3-dev fails to build on Debian wheezy amd64
180
- bug 1626 - ipv6-only network can't use UDP or TCP
181
- bug 1632 - Prepend bake build directory to the guessed locations
182
             that waf will look to find libraries
183
- bug 1633 - Bake - should not report that it is downloading qt4 when it is already installed
184
- bug 1635 - Small bug without Simulator::Destroy()
185
- bug 1636 - Compilation error flagged as unmet dependency
186
- bug 1637 - Bake calling apt-get for unpriviledged user
187
- bug 1639 - bake.py support for linux mint
188
- bug 1640 - bake needs to test for g++
189
- bug 1641 - bake reports autotools dependency, but needs automake
190
- bug 1661 - Variable ub1 defined but not used in ipv6-address.cc
191
192
Known issues
193
------------
194
In general, known issues are tracked on the project tracker available
195
at http://www.nsnam.org/bugzilla/
196
197
Release 3.16
198
============
199
200
Availability
201
------------
202
This release is available from: 
203
http://www.nsnam.org/release/ns-allinone-3.16.tar.bz2
204
205
Supported platforms
206
-------------------
207
- Fedora Core 17 (32/64 bit) with g++-4.7.0
208
- Fedora Core 15 (64 bit) with g++-4.6.3
209
- Ubuntu 12.10 (32/64 bit) with g++-4.6.3
210
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
211
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
212
- OS X Mountain Lion 10.8.3 with g++-4.2.1
213
- FreeBSD 8.2 (32 bit) with g++-4.2.1
214
- Cygwin 1.7.9-1 with g++-4.5.3
215
216
New user-visible features
217
-------------------------
218
- Support several new LTE MAC schedulers developed in GSoC 2012 project. 
219
  Those schedulers include FD-MT, TD-MT, TTA, FD-BET, TD-BET, FD-TBFQ,
220
  TD-TBFQ, PSS. Here, FD and TD mean frequency domain and time domain 
221
  respectively.
222
- It's now possible to use distcc when building ns-3 by using
223
  $ CXX='distcc g++' ./waf configure
224
  $ ./waf build
225
- Support topology generation with the (external) BRITE topology generation 
226
  tool
227
228
Bugs fixed
229
----------
230
- bug  555 - DCF immediate access
231
- bug  976 - wifi-wired-bridging regression test fails because of 
232
             rounding errors in mobility model
233
- bug 1055:  Wrong UAN's Thorp absorption loss model formula
234
- bug 1284 - ./test.py performance tests do not exist
235
- bug 1324 - ns3tcp-cwnd-test-suite.cc test failing
236
- bug 1340 - ns3tcp-loss-suite.cc tests failing
237
- bug 1342 - ns3tcp-cwnd-test-suite.cc tests failing
238
- bug 1345 - ns-3 builds with clang compiler >= 3.0
239
- bug 1359 - TCP cannot receive ICMP
240
- bug 1361 - Set TOS from Application level (sockets)
241
- bug 1463 - ./test.py --example should automatically detect the path
242
- bug 1479 - When the Ipv4RawSocket "IpHeaderInclude" Attribute set true,
243
             Ip Checksum error
244
- bug 1485 - Setting global properties in config file (raw text) does
245
             not have any effect
246
- bug 1493 - test.py --list should show the test type default tip
247
- bug 1493 - test.py --list should show the test type 
248
- bug 1494 - test.py --constrain doesn't work
249
- bug 1495 - test.py claims test passed when no test was run
250
- bug 1506:  TCP data segment piggybacking acknowledgment
251
- bug 1509 - RttEstimator returns invalid value in presence of errors
252
- bug 1516 - GtkConfigStore does not show read-only attributes
253
- bug 1520 - Config paths not fully documented (partial fix)
254
- bug 1524 - Fragmentation Threshold equals to Packet Size at MAC Layer 
255
             (Data + IP + UDP) crash the reception
256
- bug 1525 - Linker error with mpi on Mac 10.8
257
- bug 1526:  Wrong calculation of pathloss within 
258
             UanPropModelThorp::GetPathLossDb
259
- bug 1527 - Ipv4RawSocket's BindToNetDevice not working
260
- bug 1528 - BindToNetDevice not working for IPv6 sockets
261
- bug 1531 - Crash when using NS_LOG in destructors of static objects
262
- bug 1532 - unimplemented LTE Scheduler methods
263
264
Known issues
265
------------
266
In general, known issues are tracked on the project tracker available
267
at http://www.nsnam.org/bugzilla/
268
269
Release 3.15
270
============
271
272
Availability
273
------------
274
This release is available from: 
275
http://www.nsnam.org/release/ns-allinone-3.15.tar.bz2
276
277
Supported platforms
278
-------------------
279
- Fedora Core 17 (32/64 bit) with g++-4.7.0
280
- Fedora Core 15 (64 bit) with g++-4.6.3
281
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
282
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
283
- OS X Mountain Lion 10.7.4 with g++-4.2.1
284
- OS X Snow Leopard 10.6.8 with g++-4.2.1 
285
- FreeBSD 8.2 (32 bit) with g++-4.2.1
286
- Cygwin 1.7.9-1 with g++-4.5.3
287
288
New user-visible features
289
-------------------------
290
- A new random variable base class called 'RandomVariableStream', has been
291
  introduced.  This base class derives from ns3::Object, unlike the current 
292
  'RandomVariable' class which is a special type of object in the ns-3 
293
  system to date.  By making this class derive from ns3::Object, it can be 
294
  handled with the Ptr class, can carry attributes, and can have its parameters
295
  and initial state saved in the config-store subsystem.  A new attribute
296
  called "Stream" has been introduced for this class, to allow users to
297
  better control the assignment of underlying pseudo-random sequences to
298
  the RandomVariableStream objects (bug 101).
299
300
Bugs fixed
301
----------
302
 - bug 101 - random variable initialization
303
 - bug 1256 - Unnecessary SND.NXT advance, missing ACK for Out of Order segments
304
 - bug 1308 - Nix-vector; do not process packets to self
305
 - bug 1386 - assert if PositionAllocator not provided to 
306
              RandomWaypointMobilityModel
307
 - bug 1399 - TCP not backing off retransmissions properly
308
 - bug 1441 - IPv4 header length handling
309
 - bug 1464 - ConfigStore Save + Load => Could not set default value 
310
                  for ns3::UdpSocketImpl::IcmpCallback
311
 - bug 1470 - define default parameter for constructor in .h file
312
 - bug 1473 - GetQueue/SetQueue missing from Csma python bindings
313
 - bug 1475 - "test.py --list" should sort the output
314
 - bug 1476 - TestCase::GetName () should not be private
315
 - bug 1477 - Click doesn't work with raw sockets
316
 - bug 1481 - Openflow example doesn't run
317
 - bug 1486 - Segfaults in nix-vector-routing with bridges
318
 - bug 1489 - Jakes Log component is missing
319
 - fixed bug with multiple LCs in UL BSR
320
 - fixed bug with lena-dual-stripe crashes with --homeUesHomeEnbRatio=2
321
322
Known issues
323
------------
324
In general, known issues are tracked on the project tracker available
325
at http://www.nsnam.org/bugzilla/
326
327
Release 3.14.1
328
==============
329
330
Availability
331
------------
332
This release is available from:
333
http://www.nsnam.org/release/ns-allinone-3.14.1.tar.bz2
334
335
Bugs fixed
336
----------
337
This hotfix release contains a fix for the PyViz visualizer and makes it
338
easier to add PyViz support to examples; otherwise it is the same as the
339
ns-3.14 release.
340
341
Release 3.14
342
============
343
344
Availability
345
------------
346
This release is available from: 
347
http://www.nsnam.org/release/ns-allinone-3.14.tar.bz2
348
349
Supported platforms
350
-------------------
351
ns-3.14 has been tested on the following platforms.  Not all features are
352
available on all platforms; check the Installation page on the project wiki.
353
354
- Fedora Core 17 (32/64 bit) with g++-4.7.0
355
- Fedora Core 16 (32/64 bit) with g++-4.6.3
356
- Fedora Core 15 (64 bit) with g++-4.6.3
357
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
358
- Ubuntu 11.10 (32 bit) with g++-4.6.1
359
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
360
- OS X Lion 10.7.4 with g++-4.2.1
361
- OS X Snow Leopard 10.6.8 with g++-4.2.1 
362
- FreeBSD 8.2 (32 bit) with g++-4.2.1
363
- Cygwin 1.7.9-1 with g++-4.5.3
364
365
New user-visible features
366
-------------------------
367
- Transport protocol implementations (TCP, UDP) have been refactored to
368
  support also IPv6 connections. Dual-stacked IPv6 sockets are implemented. 
369
  An IPv6 socket can accept an IPv4 connection, returning the sender's 
370
  address as an IPv4-mapped address (IPV6_V6ONLY socket option is not 
371
  implemented).
372
- The LTE code from the LENA project has been merged, bringing in a
373
  significant redesign of the LTE module as well as many new features.
374
- An antenna module is now included, which includes different
375
  radiation pattern models. See the corresponding new section of the
376
  ns-3 models library documentation for details.
377
- A new buildings module is introduced which allows to model the
378
  presence of buildings in a wireless network topology.  
379
- New propagation models (OkumuraHata, ITU-R P.1411, ITU-R P.1238)
380
  have been added
381
- The Dynamic Source Routing (DSR) MANET routing protocol for IPv4 was added.
382
- A Random Early Detection (RED) queue model has been added.
383
- Ipv6RoutingHelper is now in-line with Ipv4RoutingHelper concerning the RT 
384
  print functions. Various minor changes were made in Ipv6RoutingProtocol and 
385
  derived classes to make this possible.
386
- New "SendIcmpv6Redirect" attribute (and getter/setter functions) to 
387
  Ipv6L3Protocol. The behavior is similar to Linux's conf "send_redirects",
388
  i.e., enable/disable the ICMPv6 Redirect sending.
389
- Longer and more descriptive names are used for error units in RateErrorModel
390
  class and queue mode in Queue class. Attributes in those classes are also
391
  changed for consistency. See API documentation for details.
392
- The netanim animator is now bundled with the release.
393
394
Bugs fixed
395
----------
396
 - bug 603 - Simulator::Next is useless
397
 - bug 631 - RealtimeSimulatorImpl does not handle Ctrl-C with python bindings
398
 - bug 962 - list of paths to reach objects contains bogus entries
399
 - bug 1000 - Make RealtimeSimulatorImpl last until stop
400
 - bug 1053 - Need better error diagnostics in ns2-mobility-trace example
401
 - bug 1109 - Point out the effects of ArpCache::PendingQueueSize
402
 - bug 1179 - Add LTE trace hooks for supporting visualizer
403
 - bug 1180 - LTE: Add TX/RX trace support
404
 - bug 1273 - Better error message on missing Python development files
405
 - bug 1282 - Sleep state and CCA
406
 - bug 1283 - PacketSocket::SendTo should return number of bytes 
407
 - bug 1302 - Flow monitor bug
408
 - bug 1304 - Tag information changed after transmission
409
 - bug 1313 - Stddev (average.h) returning NaN
410
 - bug 1318 - Asserts for IPv6 malformed packets
411
 - bug 1319 - Fix Ipv6RawSocketImpl Icmpv6 filter
412
 - bug 1325 - Python examples get valgrind errors when build subdirectories 
413
              are specified in waf
414
 - bug 1339 - test.py uses the old name for the test runner
415
 - bug 1348 - python bindings: deprecated conversion from string constant 
416
              to ‘char*’
417
 - bug 1349 - TypeId.LookupAttributeByName Python bindings missing
418
 - bug 1350 - Simulator.ScheduleWithContext Python binding missing
419
 - bug 1351 and 1333 - TCP not able to take RTT samples on long delay network
420
 - bug 1352 - Fixed MapAttributes, previously was mapped to a vector in 
421
              ObjectPtrContainer and (and key information was dropped). 
422
              Now the container is a map.
423
 - bug 1354 - Building scratch subdir programs is broken
424
 - bug 1355 - Visualizer dependencies not detected at buildtime
425
 - bug 1357 - IPv6 fragmentation fails due to checks about malformed extensions
426
 - bug 1362 - ICMPv6 does not forward ICMPs to upper layers (and minor 
427
              fixes to ICMPv6)
428
 - bug 1376 - wrong wind variable's name
429
 - bug 1378 - UdpEchoClient::SetFill () does not set packet size correctly
430
 - bug 1379 - lte-multiple-flows example crashes
431
 - bug 1380 - lte-phy-uplink example crashes
432
 - bug 1391 - .ns3rc does not allow comments as expected
433
 - bug 1392 - Modules built report does not clarify C++ or Python
434
 - bug 1393 - IPv6 Routing Helper RT Print functions
435
 - bug 1395 - AODV DeferredRouteOutputTag missing constructor
436
 - bug 1396 - ARP with hardware addresses longer than 6 bytes
437
 - bug 1399 - TCP not backing off retransmissions properly
438
 - bug 1404 - Bound user input in tutorial third.cc program
439
 - bug 1406 - waf exits with maximum recursion depth exceeded 
440
 - bug 1415 - examples-to-run.py doesn't work with command line arguments
441
 - bug 1420 - no python bindings for csma-layout
442
 - bug 1441 - IPv4 header length handling
443
 
444
Known issues
445
------------
446
In general, known issues are tracked on the project tracker available
447
at http://www.nsnam.org/bugzilla/
448
449
Release 3.13
450
==============
451
452
Availability
453
------------
454
This release is available from: 
455
http://www.nsnam.org/release/ns-allinone-3.13.tar.bz2
456
457
Supported platforms
458
-------------------
459
ns-3.13 has been tested on the following platforms.  Not all features are
460
available on all platforms; check the Installation page on the project wiki.
461
462
- Ubuntu 11.10 (32 bit) with g++-4.5.2
463
- Ubuntu 11.04 (32/64 bit) with g++-4.5.2 
464
- Ubuntu 10.04.3 LTS (64 bit) with g++-4.4.3, g++-3.4.6 
465
- OS X Lion with g++-4.2.1
466
- OS X Snow Leopard with g++-4.2.1 
467
- Fedora Core 16 (32/64 bit) with g++-4.6.2
468
  --  however, g++-3.4.6 fails on Fedora 16 i686 
469
- Fedora Core 14 (64 bit) with g++-4.5.1
470
- FreeBSD 9.0-RC1 (AMD64) with g++-4.2.1
471
472
New user-visible features
473
-------------------------
474
- IPv6 address generator with support for duplicate address detection
475
476
Bugs fixed
477
----------
478
 - bug 962 - list of paths to reach objects contains bogus entries
479
 - bug 1001 - Buffer::CopyData() doesn't return the number of bytes copied
480
 - bug 1010 - Uan model sleep patch
481
 - bug 1020 - Wrong usage of the originator sequence number in HWMP PREP
482
 - bug 1021 - Beacon collision avoidance in Mesh module works incorrectly
483
 - bug 1039 - Nagle's algorithm in TCP 
484
 - bug 1055 - Wrong UAN's Thorp absorption loss model formula
485
 - bug 1059 - Unable to load trace files created from SUMO and TraNS Lite
486
 - bug 1112 - Advance m_nextTxSequence upon retransmit after RTO 
487
 - bug 1137 - mpi module is hard-coded for openmpi
488
 - bug 1166 - IPV4 TCP failed to send a RST when connect arrives before listen
489
 - bug 1186 - Ipv4Header lacks DSCP and ECN
490
 - bug 1204 - Can't Parse Time +100000000.0ns
491
 - bug 1219 - Coding style of ns2-mobility-helper-test-suite.cc is fixed
492
 - bug 1257 - waf install __init__ Python files even with --disable-python
493
 - bug 1263 - waf configure fails on FreeBSD 9.0-BETA2 amd64
494
 - bug 1266 - gdb cannot be loaded
495
 - bug 1227 - Spurious RTO due to low min RTO
496
 - bug 1229 - Multiplication overflow in WaypointMobilityModel::EndMobility
497
 - bug 1242 - m_lastRtt in tcp-socket-base.cc not implemented
498
 - bug 1256 - TCP unnecessary snd.nxt advance
499
 - bug 1265 - Make ns-3 directory "movable"
500
 - bug 1269 - sqlite3 not found on FreeBSD
501
 - bug 1270 - "Checking boost includes" weirdness
502
 - bug 1278 - Ipv4ClickRouting::HandleScheduleFromClick bug
503
 - bug 1281 - Checksum not calculated when doing IP fragmentation
504
 - bug 1285 - IPv6 Localhost is marked as GLOBAL instead of HOST
505
 - bug 1290 - buffer-test.cc gets a valgrind error
506
 - bug 1295 - Missing const qualifiers in TopologyRead 
507
 - bug 1299 - EnableAsciiIpv4All tracing doesn't show transmitted/recvd packets
508
 - bug 1300 - HalfDuplexIdealPhy notify SpectrumInterference of AbortRx 
509
 - bug 1301 - Ns2MobilityHelper causes Node GetPosition() to return NaN
510
 - bug 1305 - do not list modules built upon exiting waf shell
511
 - bug 1312: TopologyRead Assert condition fix
512
 - IPv4 packets double fragmentation was broken 
513
 - Fix wifi-clear-channel-cmu.cc example
514
 - NetAnim: fix for bcast packet reuse
515
 - Missing PropagationLossModel.CalcRxPower in Python bindings
516
 - Corrected compilation behavior in Ubuntu 11.10 due to ldd behavior change
517
 - Added required PTHREAD dependency to RT library check.
518
519
Known issues
520
------------
521
In general, known issues are tracked on the project tracker available
522
at http://www.nsnam.org/bugzilla/
523
524
Release 3.12.1
525
==============
526
527
Availability
528
------------
529
This release is available from: 
530
http://www.nsnam.org/release/ns-allinone-3.12.1.tar.bz2
531
532
Bugs fixed
533
----------
534
This release fixes PyViz visualizer's python bindings; otherwise, it
535
is the same as the ns-3.12 release.
536
537
Release 3.12
538
===========
539
540
Availability
541
------------
542
This release is available from: 
543
http://www.nsnam.org/release/ns-allinone-3.12.tar.bz2
544
545
Supported platforms
546
-------------------
547
ns-3.12 has been tested on the following platforms.  Not all features are
548
available on all platforms; check the Installation page on the project wiki.
549
550
- Fedora Core 15 (32/64 bit) with g++-4.6.0 
551
- Ubuntu 11.04 (32/64 bit) with g++-4.5.2 
552
- OS X Lion with g++-4.2.1 
553
- Fedora Core 14 (64 bit) with g++-4.3.4, g++-4.5.3, g++-4.4.6 
554
- Fedora Core 12 (64 bit) with g++-4.4.4 
555
- OS X Snow Leopard with g++-4.2.1 
556
- Ubuntu 10.04.3 LTS (64 bit) with g++-4.4.3, g++-3.4.6 
557
558
New user-visible features
559
-------------------------
560
561
- SpectrumChannel models now support the usage of single-frequency
562
  propagation loss models based on the PropagationLossModel
563
  class. These model can be used in conjunction with
564
  the frequency-dependent propagation loss model based on the
565
  SpectrumPropagationLossModel class already supported by
566
  SpectrumChannel. 
567
568
- Extend the attribute system extend the attribute system to store map
569
  container objects in addition to vector containers.  The ObjectMap
570
  and related classes are patterned after ObjectVector.
571
572
- Support for IPv4 fragmentation has been added.
573
574
- Significant performance improvement for AODV in dense mobile scenarios
575
  due to a fixed bug in RERR processing.
576
577
- WiFi traces that were named promiscuous are now renamed monitor, and
578
  a separate flag for setting the interface to promiscuous mode has been
579
  introduced.  This disambiguates monitor mode from promiscuous mode.
580
581
- Monolithic Python bindings have been removed
582
583
Bugs fixed
584
----------
585
 - bug 845  - fix ConfigStore output for changing default values
586
 - bug 1010 - Uan model Sleep patch
587
 - bug 1033 - Mesh airtime-metric fixed
588
 - bug 1043 - lte-spectrum-value-helper.cc file swapped uplink/downlink freq.
589
 - bug 1050 - ISO C++ forbids variable length array; remove all instances
590
 - bug 1057 - LTE bearers differentiation issue
591
 - bug 1082 - Check that log component names are correct when taken from NS_LOG
592
 - bug 1100 - IPv6 fragmentation enhancements
593
 - bug 1102 - IPv4 header fragment offset field not set correctly
594
 - bug 1123 - class MinMaxAvgTotalCalculator does not implement all methods
595
 - bug 1134 - Fix LiIonEnergySource attribute spelling for InitialCellVoltage
596
 - bug 1139 - Broadcast packets issue in uan cw mac
597
 - bug 1141 - MeshWifiInterfaceMac adds supported modes to wrong remote station
598
 - bug 1163 - Ipv4EndPointDemux::AllocateEphemeralPort forget to increment port
599
 - bug 1164 - IPV4 TCP Bind already used port failed, but without setting errno
600
 - bug 1168 - BridgeNetDevice: default expiration time not realistic
601
 - bug 1174 - Ns-3 does not generate static libraries
602
 - bug 1175 - shared libraries are not versioned
603
 - bug 1193 - AODV Hello timers scheduling skewed when RREP, RREQ are processed
604
 - bug 1194 - AODV Incorrect RERR processing
605
 - bug 1201 - UDP sockets need to set connected state before notifying the ConnectionSucceeded callback
606
 - bug 1208 - Spectrum module example causing valgrind errors
607
 - bug 1209 - ns-3-click fails to build on Fedora 15 when tests are enabled
608
 - bug 1220 - FdReader always stops with NS_FATAL_ERROR
609
 - bug 1222 - Incomplete PointToPointNetDevice Python bindings
610
 - bug 1224 - ns-3-allinone fails to compile on OS X Lion
611
 - bug 1226 - Incomplete YansWifiChannel Python bindings
612
 - bug 1234 - GetAttributeChecker is not defined anymore but still used
613
 - bug 1239 - Add assertion that reference count never overflows
614
 - bug 1244 - Seg Faults in optimized builds due to missing Logging components
615
 - Fix ARP issue in nsclick-ip-router.click and static route in nsclick-routing-node2.click
616
617
Known issues
618
------------
619
In general, known issues are tracked on the project tracker available
620
at http://www.nsnam.org/bugzilla/
621
622
Release 3.11
623
===========
624
625
Availability
626
------------
627
This release is available from: 
628
http://www.nsnam.org/release/ns-allinone-3.11.tar.bz2
629
630
Supported platforms
631
-------------------
632
ns-3.11 has been tested on the following platforms.  Not all features are
633
available on all platforms; check the Installation page on the project wiki.
634
635
- Linux x86_64 Ubuntu 11.04
636
  - g++-4.5.2
637
- Linux i686 Ubuntu 11.04
638
  - g++-4.5.2, g++-4.4.5
639
- Linux x86_64 Fedora Core 15
640
  - g++-4.6.0
641
- Linux x86_64 Fedora Core 14
642
  - g++-4.5.3, g++-4.4.6, g++-4.3.4
643
- Linux x86_64 Fedora Core 10
644
  - g++-3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.0
645
- OS X Snow Leopard
646
  - g++-4.2.1 
647
648
New user-visible features
649
-------------------------
650
651
  - The build system has been modularized, and the source code reorganized,
652
    to allow for modular libraries instead of a single monolithic ns-3
653
    library.   User programs now link a number of smaller, per-module
654
    libraries depending on the dependencies expressed to the build system.  
655
    Source code is now being maintained in individual modules with
656
    consistent directory structures.
657
658
  - Python bindings have also been modularized, and the bindings are now
659
    generated into a 'ns' namespace instead of 'ns3' for the old
660
    (monolithic) bindings.  By default the bindings are now modular, with
661
    a backward compatibility layer for older programs.  
662
663
  - By default, example and test programs are disabled from the build.
664
    Users can enable them via the use of a waf command at configure time,
665
    or automatically through the use of a new .ns3rc file.
666
667
  - int64x64_t is a new type which allows portable and easy to write arithmetic
668
    calculations that require a high degree of fractional precision.
669
670
  - An interface to the Click Modular Router and an Ipv4ClickRouting
671
    class has been added, to allow a node to use Click for external routing.
672
673
  - An interface to an OpenFlow software implementation distribution has
674
    been added to allow the simulation of OpenFlow switches in ns-3.
675
676
  - ns-3 coding style requirements have been applied to the entire coding
677
    base, resulting in a large number of whitespace changes.  The coding 
678
    style has been automatically enforced by running a style checking 
679
    program (utils/check-style.py) that uses the uncrustify (v. 0.58)
680
    program to apply changes. 
681
682
  - Some documentation reorganization to split documentation between
683
    the ns-3 manual (primarily focusing on the ns-3 core) and a new 
684
    "model library" document has been started.
685
686
Bugs fixed
687
----------
688
The following lists many of the bugs fixed or small feature additions
689
since ns-3.10, in many cases referencing the Bugzilla bug number.
690
691
   - bugfix: CsmaNetDevice ErrorModel not discarding packet
692
   - bugfix: do not call RouteOutput() twice 
693
   - Workaround gccxml bug scanning Seconds(0) as default value 
694
   - Copy a bug fix from ns3modulescan.py into ns3modulescan-modular.py 
695
   - Modular Python bindings work (many bug fixes, more modules tested) 
696
   - Modular bindings: bug fixes, more verbose scanning 
697
   - ./waf --apiscan: fix bug in detection of whether the per-module
698
   - Remove the 'Modules to build' debug print 
699
   - CsmaNetDevice ReceiveErrorModel was not dropping the packet
700
   - Several "set but not used" bugs for newer compilers quick-fixed
701
702
   - bug 445 - Is the class name Scalar in nstime.h appropriate?
703
   - bug 699 - TestCase::DoRun probably should not return a bool
704
   - bug 823 - Need finer-grained control over what goes into libns3
705
   - bug 957 - Issue with test.py
706
   - bug 1017 - node --> internet-stack --> node
707
   - bug 1018 - mobility --> helper --> mobility circular dependency
708
   - bug 1019 - common --> node --> common circular dependency
709
   - bug 1038 - Time::Get*Seconds () return signed integer while actually returning unsigned.
710
   - bug 1040 - Olsr and multiple interfaces
711
   - bug 1042 - AODV RERR implosion (missing RERR_RATELIMIT) 
712
   - bug 1044 - Seconds (1e-9) creates Time that is not IsPositive ()
713
   - bug 1047 - Multicast routes on nodes with >16 interfaces
714
   - bug 1048 - suggested MatrixPropagationLossModel::SetLoss() API change
715
   - bug 1049 - Issues with OLSR HNA messages sent by multiple gateways
716
   - bug 1052 - olsr::RoutingProtocol::LinkTupleUpdated incorrect detection of asymetric link with multiple interface nodes
717
   - bug 1054 - ipv6 InternetStackHelper EnablePcapIpv6All() broken
718
   - bug 1056 - CSMA: padding not handled correctly for LLC encapsulation
719
   - bug 1058 - InternetStackHelper pitfall: calling Install before adding routing protocols
720
   - bug 1060 - Setting NqStaWifiMac Active Probing true, crashes simulation
721
   - bug 1061 - Title level inconsistent in click.rst
722
   - bug 1062 - rescale-pdf not working
723
   - bug 1064 - Correct Friis propagation loss equation in spectrum module
724
   - bug 1066 - Set Radiotap modulation type flags correctly
725
   - bug 1069 - ApWifiMac unduly calls RegularWifiMac::Receive and crashes
726
   - bug 1070 - csma/ipv6 examples duplicate NS_LOG_COMPONENT_DEFINE
727
   - bug 1072 - crash upon call to Packet::AddAtEnd of fragmented packets 
728
   - bug 1075 - Python examples fail when static built is enabled
729
   - bug 1076 - Waf gives an error if you enable only a single module
730
   - bug 1078 - PacketTagList::Add performs NS_ASSERT counting one byte too few
731
   - bug 1079 - MPI code doesn't compile
732
   - bug 1081 - wutils.py refers to the old directory for visualizer module
733
   - bug 1083 - scratch doesn't work when only some modules are enabled
734
   - bug 1085 - Build failed: list index out of range
735
   - bug 1086 - sanity check for not calling Object::Dispose () twice
736
   - bug 1087 - Call MPI_Finalize to exit MPI environment
737
   - bug 1088 - Code in scratch directory assumes all modules are enabled
738
   - bug 1089 - lwip build issue
739
   - bug 1090 - WifiMacQueue is not accessible through the attribute path
740
   - bug 1092 - Problem building FreeBSD stack with g++ 4.5.2 (Ubuntu)
741
   - bug 1094 - Object::GetObject upon dlopen 
742
   - bug 1097 - AODV routing entry set to be VALID mistakenly.
743
   - bug 1098 - when to show users which modules are enabled?
744
   - bug 1101 - Sqlite stats disappeared from configuration file src/wscript
745
   - bug 1103 - Useless assignment in omnet-data-output.cc
746
   - bug 1105 - Move topology helpers into separate per-device modules
747
   - bug 1106 - Remove "CanvasLocation" dependencies in p2p helpers
748
   - bug 1108 - test.py -e option needs repair
749
   - bug 1110 - Sort alphabetically and display "Modules built" in columns
750
   - bug 1117 - bindings failures on selected platforms
751
   - bug 1122 - spectrum-value test should check tolerance on a per-value basis
752
   - bug 1125 - ./waf --enable-modules fails
753
   - bug 1131 - Bug in Ipv4L3Protocol::RemoveAddress()
754
   - bug 1133 - DSDV: Possible bug in settling time calc
755
   - bug 1142 - Wrong 802.11p Slot time
756
   - bug 1146 - help string for test.py with disabled tests
757
758
Known issues
759
------------
760
In general, known issues are tracked on the project tracker available
761
at http://www.nsnam.org/bugzilla/
762
763
Release 3.10
764
===========
765
766
Availability
767
------------
768
This release is available from: 
769
http://www.nsnam.org/release/ns-allinone-3.10.tar.bz2
770
771
Supported platforms
772
-------------------
773
ns-3.10 has been tested on the following platforms.  Not all features are
774
available on all platforms; check the Installation page on the project wiki.
775
776
- Linux i686 Ubuntu 10.10
777
  - g++-4.4.5
778
- Linux x86_64 Ubuntu 8.04.4
779
  - g++-3.4.6, g++-4.2.4
780
- Linux x86_64 Fedora Core 12
781
  - g++-4.4.4
782
- Linux x86_64 Fedora Core 10
783
  - g++-3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.4, 4.4.0
784
- OS X Snow Leopard
785
  - g++-4.2.1 
786
- OS X powerpc Leopard 
787
  - g++-4.0, g++-4.2
788
789
New user-visible features
790
-------------------------
791
792
   - NS-3 PyViz, a live simulation visualizer, has been added.  The 
793
     visualizer interacts with a running simulation, such that it uses no
794
     trace files. It can be most useful for debugging purposes, i.e. to
795
     figure out if mobility models are what you expect, where packets are
796
     being dropped, etc. There is also a builtin interactive python console
797
     that can be used to debug the state of the running objects. Although
798
     it is mostly written in Python, it works both with Python and pure C++
799
     simulations.
800
801
   - Wi-Fi MAC high classes have been reorganised in attempt to
802
     consolidate shared functionality into a single class. This new
803
     class is RegularWifiMac, and it derives from the abstract
804
     WifiMac, and is parent of AdhocWifiMac, StaWifiMac, ApWifiMac,
805
     and MeshWifiInterfaceMac. The QoS and non-QoS class variants are
806
     no longer, with a RegularWifiMac attribute "QosSupported"
807
     allowing selection between these two modes of
808
     operation.
809
810
   - Support for IEEE 802.11g (specifically, rates with Modulation
811
     Class ERP-OFDM) has been added to the wifi module. The new
812
     WifiModes have names of the form ErpOfdmRatexxMbps, where xx is
813
     the rate in Mbps (one of 6, 9, 12, 18, 24, 36, 48, 54), and a
814
     WifiPhyStandard enumeration WIFI_PHY_STANDARD_80211g has been
815
     added to allow configuration of a Wi-Fi STA supporting ERP-OFDM,
816
     HR/DSSS, and DSSS rates (which some call an "802.11b/g" station).
817
818
   - Two attributes were added to WaypointMobilityModel.  The first
819
     "LazyNotify" (default false), if enabled to true, will suppress
820
     course change notifications if there are no position updates.
821
     The second, "InitialPositionIsWaypoint" (default false), if enabled,
822
     will allow an initial call to SetPosition () (before any waypoints
823
     have been added) to be treated as the first waypoint.
824
825
   - Regression testing is now completely performed within test.py
826
     rather than a separate "./waf --regression" that consults
827
     reference traces in the ns-3.x-ref-traces directory.  In most
828
     cases, the example programs whose traces were included in 
829
     ns-3.x-ref-traces have a corresponding test called from the
830
     test.py program.  It is still possible to write trace-based
831
     regression tests but they are now called from the test.py
832
     program.
833
834
   - New BulkSendApplication sends data as fast as possible up to 
835
     MaxBytes or unlimited if MaxBytes is zero.  Think OnOff, but 
836
     without the "off" and without the variable data rate. This 
837
     application only works with SOCK_STREAM and SOCK_SEQPACKET 
838
     sockets, for example TCP sockets and not UDP sockets.
839
840
   - Extensions to the energy models:  1) a new Rakhmatov Vrudhula 
841
     non-linear battery model, 2) additional support for modeling 
842
     energy consumption in WiFi devices, 3) an example for how to add 
843
     energy models to a WiFi-based simulation (in examples/energy/ 
844
     directory).
845
846
   - New methods to print IPv4 routing tables to an output stream.
847
848
   - A replacement implementation for TCP for IPv4.  TcpSocketBase
849
     now replaces TcpSocketImpl.  There are subclasses defined for
850
     TCP Tahoe, Reno, NewReno, and the original RFC793 without
851
     congestion control.
852
853
   - Energy support for UAN module and Li-Ion energy model.
854
     Now each network node can have an associated energy source
855
     from which it consumes energy. The user can specify a custom
856
     energy model for the underwater transducer, with default values
857
     set for WHOI acoustic transducer. Li-Ion battery model added
858
     into energy models folder.
859
860
   - Destination-Sequenced Distance Vector (DSDV) routing protocol 
861
     is a proactive, table-driven routing protocol for MANETs 
862
     developed by Charles E. Perkins and Pravin Bhagwat in 1994. 
863
     This implementation is for IPv4 routing and was contributed 
864
     by ResilNets Research Group.
865
866
   - A novel model to simulate LTE networks has been added.  It focuses 
867
     mainly on modeling the E-UTRA part of the system, with a particular 
868
     attention on the aspects related to the channel, PHY and MAC layers. 
869
     The most important features available at this moment are (i) a basic 
870
     implementation of both the UE and the eNB devices, (ii) RRC and 
871
     entities for both the UE and the eNB, (iii) an Adaptive Modulation 
872
     and Coding (AMC) scheme for the downlink, (iv) the management of the 
873
     data radio bearers (with their QoS parameters), the MAC queues and 
874
     the RLC instances, (v) Channel Quality Indicator (CQI) management, 
875
     (vi) support for both uplink and downlik packet scheduling, 
876
     (vii) a PHY layer model with Resource Block level granularity, and 
877
     (viii) a channel model with the outdoor E-UTRAN propagation loss 
878
     model.
879
880
   - Project documentation has been converted from GNU Texinfo to Sphinx. 
881
882
Bugs fixed
883
----------
884
The following lists many of the bugs fixed or small feature additions
885
since ns-3.9, in many cases referencing the Bugzilla bug number
886
887
   - bug 824 - TCP should implement FastRecovery by default
888
   - bug 852 - Add support for 802.11g devices
889
   - bug 892 - WaypointMobilityModel incompatible with MobilityHelper::Install
890
   - bug 893 - Lazy CourseChange notification for WaypointMobilityModel
891
   - bug 903 - TapBridge does not shut down properly
892
   - bug 953 - WiMAX channel scanning overflow
893
   - bug 967 - Need to decouple Ipv4L4Protocols from Ipv4L3Protocol
894
   - bug 978 - Consolidate Wi-Fi MAC high functionality
895
   - bug 979 - Multi-octet fields in Wi-Fi headers have wrong endianness
896
   - bug 981 - use a cache to keep track of received MPDUs under block ack
897
   - bug 983 - handle correctly ADDBA response action frames in QadhocWifiMac
898
   - bug 984 - EmuNetDevice should use DIX encapsulation by default
899
   - bug 985 - WiMAX Invalid management message type on wimax-simple
900
   - bug 988 - MacRxMiddle::SequenceControlSmaller method
901
   - bug 990 - Error with an NS_ASSERT at uan-phy-gen.cc
902
   - bug 991 - InterferenceHelper assertion failure
903
   - bug 992 - Unusual (possibly incorrect assertion) in Packet::Deserialize
904
   - bug 993 - MinstrelWifiManager::UpdateStats useless if clause
905
   - bug 994 - PointToPointGridHelper useless if clauses
906
   - bug 995 - Useless (possibly incorrect) comparison of unsigned int
907
   - bug 1004 - module header not rebuilt
908
   - bug 1005 - GetSocket() methods for OnOffApplication and PacketSink
909
   - bug 1009 - decouple m_finSequence (TcpSocketImpl) from tx sequence numbers
910
   - bug 1012 - UAN Throp propagation model bug
911
   - bug 1015 - GetChannelFrequencyMhz() does not match with standard
912
   - bug 1022 - inappropriate ASSERT in tcp-socket-impl.cc
913
   - bug 1025 - wimax-ipv4 script exists with signal SIGSEGV when nbSS>20
914
   - bug 1027 - RocketfuelTopologyReader is not working at all
915
   - bug 1029 - v4Ping application endian issues
916
   - bug 1030 - routing/aodv example fixed
917
   - bug 1031 - Wifi hidden terminal example does not work
918
   - bug 1032 - Unable to specify multiple Compiler/Linker flags
919
920
Known issues
921
------------
922
In general, known issues are tracked on the project tracker available
923
at http://www.nsnam.org/bugzilla/
924
925
Windows XP 32 bit Cygwin 1.7.7 does not seem to work because of a
926
problem (reported elsewhere) in linking large libraries.
927
928
Release 3.9
929
===========
930
931
Availability
932
------------
933
This release is immediately available from:
934
http://www.nsnam.org/release/ns-allinone-3.9.tar.bz2
935
936
Supported platforms
937
-------------------
938
ns-3.9 has been tested on the following platforms:
939
- Ubuntu 10.04 LTS 32/64-bit gcc-4.4.3
940
- Fedora Core 12 64-bit gcc-4.4.3
941
- Ubuntu 9.10 32-bit gcc-4.4.1
942
- Ubuntu 8.04 LTS 64-bit gcc-4.2.4
943
- Fedora Core 5 32-bit gcc-4.1.1
944
- Mac OS X Leopard powerpc gcc-4.0.1
945
- Windows Cygwin 1.7.5
946
947
Not all ns-3 options are available on all platforms; consult the
948
wiki for more information:
949
http://www.nsnam.org/wiki/index.php/Installation
950
951
New user-visible features
952
-------------------------
953
954
   - A reorganisation of the construction of Wi-Fi transmit rates has
955
     been undertaken with the aim of simplifying the task of
956
     supporting further IEEE 802.11 PHYs. This work has been completed
957
     under the auspices of Bug 871. A consequence of this work is that
958
     WifiModes have a new (hopefully future-proof) naming, and
959
     simulations which specify rates by name will need updating. The
960
     list of new rate names is given in the error message produced
961
     when an attempt is made to use any invalid rate name (including
962
     those that were previously valid).
963
964
   - A new OFDM error rate model for WiFi (NistErrorRateModel); this model
965
     has been validated in clear-channel testbed tests.  For 802.11b, it
966
     uses the same underlying model as the YansErrorRateModel, but it differs
967
     from YansErrorRateModel for OFDM modes (802.11a/g).  The default
968
     YansWifiPhyHelper has been changed to use this model.
969
970
   - A new NS-2 mobility trace reader supports BonnMotion, SUMO, TraNS, 
971
     etc. traces.
972
973
   - An energy model for nodes and devices, including an energy source
974
     model and device energy models allowing energy-aware devices
975
     to notify the energy source about energy consumption.  
976
977
   - Rocketfuel topology dataset support for existing topology reader
978
     Rocketfuel project: 
979
     http://www.cs.washington.edu/research/networking/rocketfuel/
980
981
   - Underwater Acoustic Network (UAN) model, split in to three parts, the 
982
     channel, PHY, and MAC models to enable researchers to model a variety 
983
     of underwater network scenarios.
984
985
   - the Spectrum framework, which provides support for spectrum-aware
986
     Channel and PHY layer modeling. It features a set of classes that
987
     allows the mathematical representation of frequency dependent
988
     phenomena. Some example channel, propagation and device
989
     implementations that make use of this framework are also
990
     included.  
991
992
Bugs fixed
993
----------
994
The following lists many of the bugs fixed or small feature additions 
995
since ns-3.8, in many cases referencing the Bugzilla bug number
996
997
   - IPv4 global routing code; stub networks were assumed to be /24
998
     and added as /24 networks even if the mask is actually different
999
   - OLSR was generating messages on non-OLSR interfaces
1000
   - ICMPv4 objects not properly registered; affected serialization code
1001
   - bug 231 - SocketAddressTag needs to be removed from a packet before 
1002
               forwarding the packet to the user
1003
   - bug 385 - Add a generic "sequence number" class
1004
   - bug 473 - [PATCH] Alternative ns-2 trace reader
1005
   - bug 665 - Need Tutorial Sectino on Config Path and Tracing Use
1006
   - bug 671 - add packet-info-tag.cc for IP_PKTINFO/IPV6_PKTINFO
1007
   - bug 702 - Global routing doesn't respond to interface events
1008
   - bug 799 - Interference helper is too slow
1009
   - bug 800 - Erroneous packet sender while using aloha or cw mac in uan module
1010
   - bug 802 - Minstrel algorithm causes segmentation fault
1011
   - bug 826 - Using uint64_t instead of Time in DcfManager
1012
   - bug 828 - PacketSocket::Close does not unregister protocol handler
1013
   - bug 842 - ns-3-dev crashes using block acks
1014
   - bug 843 - Most wifi examples change BeaconInterval to unrealistic values
1015
   - bug 844 - YansWifiPhy::GetPowerDbm off-by-one problem when calculating Tx 
1016
               power
1017
   - bug 846 - packet.cc triggers deprecated warning
1018
   - bug 853 - Rates for Wi-Fi control responses are incorrectly selected
1019
   - bug 854 - Support DROP_QUEUE reason-code in Ipv4FlowProbe
1020
   - bug 858 - support MSG_PEEK in IPv4/IPv6 raw socket
1021
   - bug 861 - Forwarding drops (due to no route found) were not being logged 
1022
               in IPv4 or IPv6 ascii traces
1023
   - bug 869 - suggested test framework enhancements
1024
   - bug 871 - naming for WifiPhyStandard
1025
   - bug 873 - Queue occupancy counter not decremented in WifiMacQueue::Remove()
1026
   - bug 874 - wrong modulation type is selected in the forwardBurst method
1027
   - bug 875 - "frame includes FCS" flag should be set in Radiotap frame header
1028
   - bug 879 - source address selection for AODV using DeferredRouteRequest
1029
   - bug 881 - Reorganise to allow wider use of WifiInformationElement
1030
   - bug 890 - several rate adaptation algorithms not tested by test.py
1031
   - bug 900:  RawTextConfigLoad::Default does not load configurations
1032
   - bug 901 - Optimize Mac48Address < != and ==
1033
   - bug 902 - TCP: handle out-of-order packets during connection shutdown
1034
   - bug 905 - WimaxNetDevice loses packet uid, tags, and memory optimization
1035
   - bug 906 - NSC TCP socket fork did not copy txbuffersize over
1036
   - bug 908 - test.py should exit if waf dies
1037
   - bug 910 - Change Wi-Fi "AccessClass" to something closer to the standard
1038
   - bug 911 - IPv4/v6 multicast forwarding not going to all output interfaces
1039
   - bug 913 - Queue Enqueue/Drop trace sources behavior unintuitive
1040
   - bug 916 - EnableAsciiAll ("prefix") does not work for YansWifiPhyHelper
1041
   - bug 918 - samples/main-packet-header.cc is broken
1042
   - bug 919 - minstrel does not pass valgrind tests
1043
   - bug 921 - Inconsistent declaration of class/struct Object in object.h
1044
   - bug 922 - Inconsistent declaration of class/struct in 
1045
               wifi-remote-station-manager.h
1046
   - bug 923 - Inconsistent declaration of class/struct in mac-low.h
1047
   - bug 924 - Inconsistent declaration of class/struct in <xxx>-wifi-managers 
1048
   - bug 925 - Various IPv6 cc files trigger deprecated warning
1049
   - bug 926 - olsr handling of multicast packets 
1050
   - bug 927 - SimpleOfdmWimaxChannel RxPower computation
1051
   - bug 930 - examples/topology-read/topology-example-sim.cc uses variable 
1052
               length array
1053
   - bug 931 - Abnormal exit reports SIGSEGV on failure
1054
   - bug 932 - Support IP_HDRINCL option for Ipv4RawSocket
1055
   - bug 933 - Flushing ostream and files on abnormal program exit 
1056
               (ASSERT, ABORT and FATAL_ERROR)
1057
   - bug 936 - Waf build error for python bindings on "AccessClass"
1058
   - bug 937 - bugs in ns-3 wimax
1059
   - bug 939 - EmuNetDevice uses too much memory when reading packet bursts
1060
   - bug 940 - AODV fails to set up a correct path
1061
   - bug 941 - Wifi Dcf attributes not reachable through configuration namespace
1062
   - bug 943 - Add a SO_BROADCAST socket option
1063
   - bug 944 - change default ErrorRateModel from YansErrorRateModel to 
1064
               NistErrorRateModel
1065
   - bug 946 - Rocketfuel topology dataset support for topology reader
1066
   - bug 949 - Node::NonPromiscReceiveFromDevice reports a meaningless 
1067
               destination address to user callbacks 
1068
   - bug 950 - PointToPointNetDevice says promisc support is not implemented 
1069
               but it is
1070
   - bug 955 - Install NSC for NS3 in a Itanium Architecture (ia64) with Linux 2.6.16.6
1071
   - bug 956 - Bindings failure in core (traced-value) with older gcc
1072
   - bug 958 - WiFi uses wrong default values for MTU, FragmentationThreshold 
1073
               and RtsCtsThreshold
1074
   - bug 959 - Simulation never finishes when using RealtimeSimulatorImpl
1075
   - bug 960 - V4Ping does not generate checksum
1076
   - bug 961 - Problem with MPI activation 
1077
   - bug 964 - AODV does not work with host addressed interfaces
1078
   - bug 965 - Problem building /src/core/callback.cc
1079
   - bug 966 - AODV originates new RREQ on each packet, when doesn't have 
1080
               valid route
1081
   - bug 969 - No SocketList is present in UdpL4Protocol class
1082
   - bug 971 - fix AODV header Print functions 
1083
   - bug 972 - [flow monitor] assertion fails in pv4-flow-probe.cc
1084
1085
Known issues
1086
------------
1087
1088
Release 3.8
1089
===========
1090
1091
Availability
1092
------------
1093
This release is immediately available from:
1094
http://www.nsnam.org/release/ns-allinone-3.8.tar.bz2
1095
1096
Supported platforms
1097
-------------------
1098
ns-3.8 has been tested on the following platforms:
1099
  - linux x86 gcc 4.4.0, 4.3.2, 4.2, 4.1.1, 4.1 and 3.4.6 (debug and optimized)
1100
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.4, 4.2.3, 4.2.1, 4.1.3, 3.4.6 (debug and optimized)
1101
  - MacOS X ppc gcc 4.0.x and 4.2.x (debug and optimized)
1102
  - cygwin gcc 4.3.4 (debug and optimized)
1103
1104
Not all ns-3 options are available on all platforms; consult the
1105
wiki for more information:
1106
http://www.nsnam.org/wiki/index.php/Installation
1107
1108
New user-visible features
1109
-------------------------
1110
  a) WiMAX net device: Allow to simulated IEEE 802.16 point to multi-point based networks 
1111
1112
  b) Distributed simulation for point-to-point networks using the Message 
1113
     Passing Interface (MPI) standard.
1114
    
1115
  c) Matrix propagation loss model uses a two-dimensional matrix of path loss indexed 
1116
     by source and destination nodes.
1117
1118
  d) Topology read system: Allows quick and easy creation of large topologies by reading 
1119
     Inet or Orbis files
1120
1121
  e) Gauss-Markov mobility model: Adds 3-d adaptation of Gauss-Markov mobility model which 
1122
     has both memory and variability
1123
1124
  f) Steady-state random waypoint mobility model: Based on random waypoint mobility (RWM) model for case when 
1125
     speed, pause and position are uniformly distributed random variables. However, initial values of these 
1126
     parameters are not from uniform distribution but from stationary distribution of RWM model.
1127
1128
  g) Two-ray ground propagation loss model: Calculates the crossover distance under which Friis is used. 
1129
     The antenna height is set to the nodes z coordinate, but can be added to using the model parameter 
1130
     SetHeightAboveZ, which will affect ALL stations
1131
1132
1133
API changes from ns-3.7
1134
-----------------------
1135
API changes for this release are documented in the file CHANGES.html. 
1136
1137
Bugs fixed
1138
----------
1139
The following lists many of the bugs that were fixed since ns-3.7, in
1140
many cases referencing the Bugzilla bug number
1141
   - bug 155 - std::ostream & os" parameters not Python friendly
1142
   - bug 184 - GtkConfigStore do not support ConfigureDefault
1143
   - bug 407 - OLSR is missing HNA support
1144
   - bug 414 - No ReceiveErrorModel in SimpleNetDevice
1145
   - bug 602 - WifiRemoteStation lacks information about the access class of outgoing packets
1146
   - bug 622 - [PATCH] Friendly names for pcap traces
1147
   - bug 683 - Helper methods for pcap tracing with explicit filenames
1148
   - bug 706 - Backoff counting when starting NS.
1149
   - bug 720 - TapBridge creation fails from a script outside the ns3 tree
1150
   - bug 731 - Send function in point-to-point-net-device fails to check the return value of the Dequeue function
1151
   - bug 747 - Listening TCP socket closes on RST
1152
   - bug 748 - Cloned TCP socket uses wrong source address
1153
   - bug 772 - AODV is unable to correctly buffer packets waiting for route reply
1154
   - bug 777 - AODV ignores specified outgoing interface in RouteOutput()
1155
   - bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
1156
   - bug 787 - Addition of Two Ray Ground model to propagation loss model and tests
1157
   - bug 788 - OLSR_NEIGH_HOLD_TIME should be 3 times OLSR_REFRESH_INTERVAL 
1158
   - bug 789 - [PATCH] Globalrouting externalroutes to use the new GetRootExitDirections()
1159
   - bug 794 - Ipv4Mask constructor for "/yy"-notation is wrong
1160
   - bug 796 - TCP bug in ns-3-dev branch : Crash detected during retesting of Chord on ns-3-dev branch
1161
   - bug 797 - Enhancements to src/core/random-variable.cc/h
1162
   - bug 801 - ns-3.7 and SVN not coexisting nicely
1163
   - bug 802 - Minstrel algorithm causes segmentation fault
1164
   - bug 804 - null-pointer references in 3.7 internet stack
1165
   - bug 806 - TCP doesn't work over a CSMA link
1166
   - bug 807 - ns2-mobility-helper.cc: node id parsed wrong
1167
   - bug 809 - Missing Python binding for Ipv4GlobalRouting::GetRoute
1168
   - bug 810 - In TCP, Socket::GetSockName() does not return the local socket address
1169
   - bug 812 - Assert when getting socket in RecvReply for AODV
1170
   - bug 813 - Nqos AP sends packet to non associated STA
1171
   - bug 814 - Function logging causing assert in wireless examples
1172
   - bug 815 - waf shell file descriptor leak
1173
   - bug 816 - tap-creator deadlock when python bindings enabled
1174
   - bug 817 - Pareto rng constructors using scale and shape instead of mean and shape
1175
   - bug 818 - TCP Socket implementation does not set ACK flag on retransmits
1176
   - bug 819 - Build break when gtk not installed
1177
   - bug 820 - Bad things happen in test.py when logging is enabled
1178
   - bug 821 - AODV asserts with function logging enabled
1179
   - bug 822 - Move Mtu attribute from NetDevice base class to subclasses
1180
   - bug 825 - UDP-Client-server's packet loss counter not properly reset
1181
   - bug 828 - PacketSocket::Close does not unregister protocol handler
1182
   - bug 829 - TCP unbound memory problem (pending data)
1183
   - bug 833 - OnOffApplication with PacketSocket: sniffs all traffic
1184
   - bug 834 - Incorrect signature of Ipv4FlowProbe::DropLogger
1185
   - bug 835 - Unlimited receive queues in sockets == evil
1186
   - bug 836 - Delay is incremented over time with BsUplinkSchedulerSimple and BsUplinkSchedulerRtps
1187
   - bug 838 - ns-3 can't compile on MacOS with 32bit processor
1188
   - bug 839 - TestSuite wimax-ss-mac-layer crashes on Darwin 9.8.0 Power Macintosh
1189
   - bug 840 - BS scheduler does not support fragmentation for UGS flows
1190
   - bug 841 - Multicast transmission breaks with QoS Wifi
1191
   - bug 844 - YansWifiPhy::GetPowerDbm off-by-one problem when calculating Tx power
1192
   - bug 847 - Segfaults on BaseStationNetDevice with OnOffApplication and rtPS sched
1193
   - bug 849 - stray patch files in lwip directory
1194
   - bug 850 - Ipv4GlobalRouting::LookupGlobal bug
1195
   - bug 855 - waf dies badly when switching from debug to optimized build or vice versa
1196
   - bug 856 - initialize vbl
1197
   - bug 857 - Link-Local Multicast handle in Ipv4 Output processing 
1198
   - bug 859 - Output interface estimation for the source address bound socket in IPv4 Raw socket
1199
   - bug 860 - waf sometimes dies while executing ns3header or gen_ns3_module_header tasks in case of 
1200
               parallel jobs
1201
   - bug 862 - NotifyInterfaceUp() Adds network route even when netmask is /32
1202
   - bug 863 - Wrong Scalar arithmetics
1203
   - bug 864 - Invalid return value in UdpSocketImpl::Send and Ipv4RawSocketImpl::Send
1204
   - bug 865 - Ipv4RawSocketImpl::RecvFrom does not return from address all the time.
1205
   - bug 866 - WiMAX mobility models not aggregated to Node
1206
   - bug 867 - Minor bug in Ipv4L3Protocol::Send()
1207
   - bug 868 - invalid packet size after Ipv4L3Protocol::Send
1208
   - bug 872 - ns3::PcapFileWrapper::Write explodes stack
1209
   - bug 873 - Queue occupancy counter not decremented in WifiMacQueue::Remove()
1210
   - bug 876 - Tcp socket does not handle ShutdownRecv correctly
1211
   - bug 877 - python bindings broken with multiple inheritance ?
1212
   - bug 880 - Node sending a packet to itself via 127.0.0.1 aborts
1213
   - bug 885 - Error in Ascii tracing in Python examples
1214
   - bug 888 - Writing ascii trace to addtional tests fails
1215
   - bug 891 - WiMAX device helper does not include propagation loss model by default 
1216
   - bug 894 - ./waf --run error message upon segfault
1217
   - bug 895 - SimpleOfdmWimaxPhy SNR computation
1218
   - bug 899 - EmuNetDevice::SetPromiscReceiveCallback not implemented
1219
1220
Known issues
1221
------------
1222
ns-3 builds have been known to fail on the following platforms:
1223
  - gcc 3.3 and earlier
1224
  - optimized builds on gcc 3.4.4 and 3.4.5
1225
  - optimized builds on linux x86 gcc 4.0.x
1226
1227
1228
Release 3.7
1229
===========
1230
1231
Availability
1232
------------
1233
This release is immediately available from:
1234
http://www.nsnam.org/release/ns-allinone-3.7.tar.bz2
1235
1236
Supported platforms
1237
-------------------
1238
ns-3.7 has been tested on the following platforms:
1239
  - linux x86 gcc 4.4.0, 4.3.2, 4.2, 4.1.1, 4.1 and 3.4.6 (debug and optimized)
1240
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.4, 4.2.3, 4.2.1, 4.1.3, 3.4.6 (debug and optimized)
1241
  - MacOS X ppc gcc 4.0.x and 4.2.x (debug and optimized)
1242
  - cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)
1243
1244
Unofficially supported platform
1245
-------------------
1246
- mingw gcc 3.4.5 (debug only)
1247
1248
Not all ns-3 options are available on all platforms; consult the
1249
wiki for more information:
1250
http://www.nsnam.org/wiki/index.php/Installation
1251
1252
New user-visible features
1253
-------------------------
1254
1255
  a) Ad hoc On-Demand Distance Vector (AODV) routing model (RFC 3561)
1256
1257
  b) IPv6 extensions support to add IPv6 extensions and options.  Two 
1258
     examples (fragmentation and loose routing) are available.
1259
1260
  c) NetAnim interface: Provides an interface to the Qt-based NetAnim 
1261
     animator, which supports static, point-to-point topology-based 
1262
     packet animations.
1263
1264
  d) New topology helpers have been introduced
1265
     - PointToPointDumbbellHelper
1266
     - PointToPointGridHelper
1267
     - PointToPointStarHelper
1268
     - CsmaStarHelper
1269
1270
  e) Equal-cost multipath for global routing: Enables quagga's equal 
1271
     cost multipath for Ipv4GlobalRouting, and adds an attribute that
1272
     can enable it with random packet distribution policy across 
1273
     equal cost routes.
1274
1275
  f) Binding sockets to devices:  A method analogous to a SO_BINDTODEVICE
1276
     socket option has been introduced to class Socket
1277
1278
  g) Object::DoStart: Users who need to complete their object setup at 
1279
     the start of a simulation can override this virtual method, perform their 
1280
     adhoc setup, and then, must chain up to their parent.
1281
1282
  h) Ipv4::IsDestinationAddress method added to support checks of whether a 
1283
     destination address should be accepted as one of the host's own 
1284
     addresses.  
1285
1286
  i) UniformDiscPositionAllocator added; distributes uniformly the nodes 
1287
     within a disc of given radius. 
1288
1289
  j) ChannelNumber attribute added to YansWifiPhy. Now it is possible to 
1290
     setup wifi channel using WifiPhyHelper::Set() method.
1291
1292
  k) WaypointMobilityModel provides a method to add mobility as a set of 
1293
     (time, position) pairs
1294
1295
  l) 802.11p WiFi standards 
1296
  
1297
  m) UDP Client/Server application
1298
1299
  n) Support transactions in the SQLite output interface, making it usable for larger amounts of data
1300
1301
API changes from ns-3.6
1302
-----------------------
1303
API changes for this release are documented in the file CHANGES.html. 
1304
1305
Bugs fixed
1306
----------
1307
The following lists many of the bugs that were fixed since ns-3.6, in
1308
many cases referencing the Bugzilla bug number
1309
   - bug 752: Object::DoStart is not executed for objects created at t > 0
1310
   - bug 767:  Incorrect modulation for 802.11a modes
1311
   - bug 725: wifi fragmentation and RTS cannot be used at the same time
1312
   - bug 782: CreateTap () requires IP address in modes other than 
1313
     CONFIGURE_LOCAL.
1314
   - bug 769: Queue::GetTotalReceived{Bytes,Packets}() broken
1315
   - bug 738 ReceiveErrorModel called too late
1316
   - Fix NSC improper response to FIN
1317
   - Fixed bug in serialization of PbbAddressBlock.
1318
   - Fix bug 780 (problem in RoutingTableComputation with asymetric links), 
1319
     while adding debugging methods to OLSR.  
1320
   - bug 759: Ipv6 uses wrong outgoing interface.
1321
   - bug 770: IPv6 size calculation for unknown options is wrong.
1322
   - bug 771: Radvd does not set ttl value.
1323
   - Fix bug 606:  Arp depends on IP routing system
1324
   - pad out CSMA payloads to 46 bytes if needed
1325
   - Drop CSMA packets with CRC errors, rescan, dox tweaks
1326
   - Add FCS capability to CSMA
1327
   - Mesh:Dot11s: fixed airtime metric
1328
   - Get emu working again:  Add Dix/Llc option, add and use contextual 
1329
     realtime schedule ops, don't refcount realtime simulator impl
1330
   - bug 695 - DcfManager::UpdateBackoff () uses slow HighPrecision::Div()
1331
   - bug 674 - EIFS is not handled correctly in DcfManager::GetAccessGrantStart
1332
   - bug 739 -  OLSR: Strange HTime value in HELLO messages 
1333
   - bug 746 -  UDP source address is not set to bound address
1334
   - bug 735 Update Olsr for local delivery
1335
   - bug 740 OLSR MprCompute () works wrong: fixed
1336
   - bug 729 Enable IPv6 over PPP.
1337
   - bug 645: fixes for opening stats file with OMNeT++
1338
   - bug 689: default energy detection and CCA thresholds are changed to be 
1339
     more realistic.
1340
   - bug 733: OLSR MPR Computation give incorrect result
1341
   - Mesh: HWMP: fixed proactive routes
1342
   - Mesh: fixed FLAME PATH_UPDATE procedure, fixed mesh.cc 
1343
1344
Known issues
1345
------------
1346
ns-3 builds have been known to fail on the following platforms:
1347
  - gcc 3.3 and earlier
1348
  - optimized builds on gcc 3.4.4 and 3.4.5
1349
  - optimized builds on linux x86 gcc 4.0.x
1350
1351
1352
Release 3.6
1353
===========
1354
1355
Availability
1356
------------
1357
This release is immediately available from:
1358
http://www.nsnam.org/release/ns-allinone-3.6.tar.bz2
1359
1360
Supported platforms
1361
-------------------
1362
ns-3.6 has been tested on the following platforms:
1363
  - linux x86 gcc 4.4.1, 4.2, 4.1, and, 3.4.6.
1364
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
1365
  - MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)
1366
  - cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)
1367
1368
Not all ns-3 options are available on all platforms; consult the
1369
wiki for more information:
1370
http://www.nsnam.org/wiki/index.php/Installation
1371
1372
New user-visible features
1373
-------------------------
1374
1375
  a) 802.11 models:
1376
     - Add an implementation of the minstrel rate control algorithm 
1377
       (Duy Nguyen for gsoc)
1378
     - AthstatsHelper: enables the wifi device to produce periodic 
1379
       reports similar to the ones generated by madwifi's
1380
       athstats tool (Nicola Baldo)
1381
     - 10MHz and 5MHz channel width supported by 802.11a model 
1382
       (Ramon Bauza and Kirill Andreev)
1383
     - Channel switching support. YansWifiPhy can now switch among 
1384
       different channels (Ramon Bauza and Pavel Boyko)
1385
  
1386
  b) IPv6 models:
1387
    - IPv6 interface;
1388
    - IPv6 layer;
1389
    - IPv6 raw socket;
1390
    - Static IPv6 routing;
1391
    - ICMPv6 layer;
1392
    - Some ICMPv6 error messages (destination unreachable, ...);
1393
    - Neighbor Discovery Protocol (NS/NA, RS/RA, redirection);
1394
    - Ping6 application (send Echo request);
1395
    - Radvd application (send RA);
1396
    - Examples (ping6, simple-routing-ping6, radvd, radvd-two-prefix,
1397
      icmpv6-redirect).
1398
1399
  c) Wireless Mesh Networking models:
1400
    - General multi-interface mesh stack infrastructure (devices/mesh module).
1401
    - IEEE 802.11s (Draft 3.0) model including Peering Management Protocol and HWMP.
1402
    - Forwarding Layer for Meshing (FLAME) protocol.
1403
1404
  d) Nix-vector routing:  
1405
    - Ipv4NixVectorHelper
1406
    - Examples (nix-simple, nms-p2p-nix)
1407
1408
  e) New Test Framework
1409
    - Use test.py instead of ./waf check or ./waf --regression
1410
    - Previous unit tests have been ported to new framework.
1411
    - Examples are tested for run-ability.
1412
1413
  f) A new Flow Monitor module
1414
   - To very easily measure flow metrics in a simulation
1415
   - No need to use trace callbacks or parsing trace files
1416
1417
API changes from ns-3.5
1418
-----------------------
1419
API changes for this release are documented in the file CHANGES.html. 
1420
1421
Known issues
1422
------------
1423
ns-3.6 build is known to fail on the following platforms:
1424
  - gcc 3.3 and earlier
1425
  - optimized builds on gcc 3.4.4 and 3.4.5
1426
  - optimized builds on linux x86 gcc 4.0.x
1427
1428
Release 3.5
1429
===========
1430
1431
Availability
1432
------------
1433
This release is immediately available from:
1434
http://www.nsnam.org/release/ns-allinone-3.5.tar.bz2
1435
1436
Supported platforms
1437
-------------------
1438
ns-3.5 has been tested on the following platforms:
1439
  - linux x86 gcc 4.2, 4.1, and, 3.4.6.
1440
  - linux x86_64 gcc 4.4.0, 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
1441
  - MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)
1442
  - cygwin gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized)
1443
  - mingw gcc 3.4.5 (debug only)
1444
1445
Not all ns-3 options are available on all platforms; consult the
1446
wiki for more information:
1447
http://www.nsnam.org/wiki/index.php/Installation
1448
1449
New user-visible features
1450
-------------------------
1451
1452
  a) 802.11 MAC:
1453
     - EDCA multi-qos-class support (Mirko Banchi)
1454
     - 802.11n initial support for A-MSDU frame aggregation (Mirko Banchi)
1455
     - aarf-cd and cara rate control algorithms (Federico Maguolo)
1456
  b) 802.11 PHY:
1457
     - 802.11b PHY support (Gary Pei)
1458
     - Nakagami propagation loss model (Timo Bingmann)
1459
     - radiotap and prism headers for PCAP output (Nicola Baldo)
1460
  c) RandomVariable:
1461
     - GammaVariable and ErlangVariable (Timo Bingmann)
1462
     - ZipfVariable (Francesco Malandrino)
1463
  d) UdpEcho: allows setting the payload of echo packets
1464
  e) Ipv4/Ipv4RoutingProtocol: allow fine-grained control over
1465
     routing policy and arbitrary composition of routing protocols
1466
 
1467
API changes from ns-3.4
1468
-----------------------
1469
API changes for this release are documented in the file CHANGES.html.  The
1470
internal API and composition of the IPv4 stack underwent significant
1471
refactoring in this release cycle.
1472
1473
Known issues
1474
------------
1475
ns-3 build is known to fail on the following platforms:
1476
  - gcc 3.3 and earlier
1477
  - optimized builds on gcc 3.4.4 and 3.4.5
1478
  - optimized builds on linux x86 gcc 4.0.x
1479
1480
Future releases
1481
---------------
1482
Our next release, which is expected to happen in 2 to 4 months from now, will
1483
feature the merging of some of our projects currently in development including
1484
fuller IPv6 support, some smaller features such as a new Global ARP 
1485
package, and possibly a new Testing and Validation suite.
1486
1487
Release 3.4
1488
===========
1489
1490
Availability
1491
------------
1492
This release is immediately available from:
1493
http://www.nsnam.org/release/ns-allinone-3.4.tar.bz2
1494
1495
Supported platforms
1496
-------------------
1497
ns-3.4 has been tested on the following platforms:
1498
  - linux x86 gcc 4.2, 4.1, and, 3.4.6.
1499
  - linux x86_64 gcc 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
1500
  - MacOS X ppc and x86
1501
  - cygwin gcc 3.4.4 (debug only)
1502
1503
Not all ns-3 options are available on all platforms; consult the
1504
wiki for more information:
1505
http://www.nsnam.org/wiki/index.php/Installation
1506
1507
New user-visible features
1508
-------------------------
1509
  a) Wifi models: Timo Bingman contributed a ThreeLogDistance and a Nakagami
1510
     propagation loss model based on the ns-2 models. Fabian Mauchle contributed
1511
     multicast support.
1512
1513
  b) Object Name Service:  A facility allowing ns-3 Objects to be assigned
1514
     names has been added.
1515
1516
  c) Tap Bridge:  A second option for integrating ns-3 with real-world hosts
1517
     has been added.  This allows for real hosts to talk over ns-3 net devices
1518
     and simulated networks.
1519
1520
  d) A new build option (ns-3-allinone) has been provided to make it easier for
1521
     users to download and bulid commonly used ns-3 configurations.
1522
1523
  e) The ns-3 calendar queue scheduler has been ported to ns-3.
1524
1525
  f) XML support has been added to the ConfigStore.
1526
1527
API changes from ns-3.3
1528
-----------------------
1529
API changes for this release are documented in the file CHANGES.html
1530
1531
Known issues
1532
------------
1533
ns-3 build is known to fail on the following platforms:
1534
  - gcc 3.3 and earlier
1535
  - optimized builds on gcc 3.4.4 and 3.4.5
1536
  - optimized builds on linux x86 gcc 4.0.x
1537
  - optimized builds on Ubuntu 8.10 alpha 5 x86 gcc4.3.2
1538
  - MinGW
1539
1540
The IPv4 API defined in src/node/ipv4.h is expected to undergo major changes 
1541
in preparation of the merge of the IPv6 API and implementation.
1542
1543
Future releases
1544
---------------
1545
Our next release, which is expected to happen in 2 to 4 months from now, will
1546
feature the merging of some of our projects currently in development including
1547
fuller IPv6 support, and IPv4 and routing protocol refactoring, and some smaller
1548
features such as a new Global ARP package and possibly a new Testing and Validation
1549
suite,
1550
1551
Release 3.3
1552
===========
1553
1554
Availability
1555
------------
1556
This release is immediately available from:
1557
http://www.nsnam.org/release/ns-3.3.tar.bz2
1558
1559
Supported platforms
1560
-------------------
1561
ns-3.3 has been tested on the following platforms:
1562
  - linux x86 gcc 4.2, 4.1, and, 3.4.6.
1563
  - linux x86_64 gcc 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
1564
  - MacOS X ppc and x86
1565
  - cygwin gcc 3.4.4 (debug only)
1566
1567
Not all ns-3 options are available on all platforms; consult the
1568
wiki for more information:
1569
http://www.nsnam.org/wiki/index.php/Installation
1570
1571
New user-visible features
1572
-------------------------
1573
  a) Emulated Net Device
1574
     A new net device has been added as enabling technology for ns-3 emulation
1575
     scenarios.  See src/devices/emu and examples/emu-udp-echo.cc for details.
1576
1577
  b) ICMP Support
1578
     Support for several ICMP messages has been added to ns-3.  See 
1579
     src/internet-stack/icmpv4.h for details.
1580
1581
  c) IPv6 Address Support
1582
     New clases to support IPv6 addresses has been added to the system.  This
1583
     is enabling technology for fuller IPv6 support scheduled for ns-3.4.
1584
1585
  d) A flow-id tag has been added to the contributed code section
1586
1587
  e) Star topologies can be created from the topology helper functions
1588
1589
  f) The global routing code has been made dynamic (not just limited to
1590
     (pre-simulation computation) and supports stub network interfaces and 
1591
     bridge net devices 
1592
1593
  g) A MatchContainer has been added to the configuration subsystem
1594
1595
API changes from ns-3.2
1596
-----------------------
1597
API changes for this release are documented in the file CHANGES.html
1598
1599
Known issues
1600
------------
1601
ns-3 build is known to fail on the following platforms:
1602
  - gcc 3.3 and earlier
1603
  - optimized builds on gcc 3.4.4 and 3.4.5
1604
  - optimized builds on linux x86 gcc 4.0.x
1605
  - optimized builds on Ubuntu 8.10 alpha 5 x86 gcc4.3.2
1606
  - MinGW
1607
1608
The IPv4 API defined in src/node/ipv4.h is expected to undergo major changes 
1609
in preparation of the merge of the IPv6 API and implementation.
1610
1611
Future releases
1612
---------------
1613
Our next release, which is expected to happen in 2 to 4 months from now, will
1614
feature the merging of some of our projects currently in development including
1615
fuller IPv6 support, and IPv4 and routing protocol refactoring, and some smaller
1616
features such as an object naming facility and a new Global ARP package.
1617
1618
Release 3.2
1619
===========
1620
1621
Availability
1622
------------
1623
This release is immediately available from:
1624
http://www.nsnam.org/release/ns-3.2.tar.bz2
1625
1626
Supported platforms
1627
-------------------
1628
ns-3.2 has been tested on the following platforms:
1629
  - linux x86 gcc 4.2, 4.1, and, 3.4.6.
1630
  - linux x86_64 gcc 4.3.2, 4.2.3, 4.2.1, 4.1.3, 3.4.6
1631
  - MacOS X ppc and x86
1632
  - cygwin gcc 3.4.4 (debug only)
1633
1634
Not all ns-3 options are available on all platforms; consult the
1635
wiki for more information:
1636
http://www.nsnam.org/wiki/index.php/Installation
1637
1638
New user-visible features
1639
-------------------------
1640
  a) Learning bridge (IEEE 802.1D)
1641
    It is now possible to bridge together multiple layer 2 devices to
1642
    create larger layer 2 networks. The Wifi and Csma models support
1643
    this new mode of operation. (contributed by Gustavo Carneiro)
1644
1645
  b) Python bindings
1646
    It is now possible to write simulation scripts in python using our 
1647
    python bindings (contributed by Gustavo Carneiro).
1648
1649
  c) Real-time simulator
1650
    It is now possible to run simulations synchronized on the real-world
1651
    wall-clock time (contributed by Craig Dowell).
1652
1653
  d) Network Simulation Cradle
1654
    It is now possible to use the Network Simulation Cradle 
1655
    (http://www.wand.net.nz/~stj2/nsc/) in ns-3 and run simulations 
1656
    using various versions of kernel TCP network stacks. (contributed
1657
    by Florian Westphal as part of his Google Summer of Code work)
1658
1659
  e) A statistics framework
1660
    Joseph Kopena contributed a statistics framework which can be used
1661
    keep track of simulation data in persistent storage across multiple 
1662
    runs (database and ascii file backends are available).
1663
    More information on the wiki:
1664
    http://www.nsnam.org/wiki/index.php/Statistical_Framework_for_Network_Simulation
1665
1666
API changes from ns-3.1
1667
-----------------------
1668
API changes for this release are documented in the file CHANGES.html
1669
1670
Known issues
1671
------------
1672
ns-3 build is known to fail on the following platforms:
1673
  - gcc 3.3 and earlier
1674
  - optimized builds on gcc 3.4.4 and 3.4.5
1675
  - optimized builds on linux x86 gcc 4.0.x
1676
  - optimized builds on Ubuntu 8.10 alpha 5 x86 gcc4.3.2
1677
  - MinGW
1678
1679
The IPv4 API defined in src/node/ipv4.h is expected to undergo major changes 
1680
in preparation of the merge of the IPv6 API and implementation.
1681
1682
Future releases
1683
---------------
1684
Our next release, which is expected to happen in 2 to 4 months from now, will
1685
feature the merging of some of our projects currently in development: IPv6, 
1686
emulation, and synchronous posix sockets.
1687
1688
Release 3.1 (2008/06/30)
1689
========================
1690
1691
The first ns-3 stable release
1692
-----------------------------
1693
1694
This release is immediately available from:
1695
http://www.nsnam.org/release/ns-3.1.tar.bz2
1696
1697
We dedicate this initial ns-3 release to our late contributor and friend, 
1698
Federico Maguolo.
1699
1700
What is ns-3 ?
1701
--------------
1702
1703
ns-3 is a new discrete-event network simulator designed for supporting network
1704
research and education. ns-3 features a solid, well documented C++ core and 
1705
models for TCP/IP (IPv4), several link types including WiFi, and mobility 
1706
models.
1707
1708
ns-3 is an open source project released under the GNU GPLv2 license which 
1709
allows anyone to use ns-3 without having to pay any license fee or royalties. 
1710
ns-3 is actively seeking new contributors to extend the range of supported 
1711
models and/or to maintain existing models.
1712
1713
Where to get more information about ns-3
1714
----------------------------------------
1715
1716
All the ns-3 documentation, is accessible from the ns-3 website: 
1717
http://www.nsnam.org
1718
1719
Including, tutorials:
1720
http://www.nsnam.org/tutorials.html
1721
1722
Supported platforms
1723
-------------------
1724
1725
ns-3 is regularly tested on the following platforms:
1726
  - linux x86 gcc 4.2, 4.1, and, 3.4.6.
1727
  - linux x86_64 gcc 4.1.3, 4.2.1, 3.4.6
1728
  - MacOS X ppc and x86
1729
  - cygwin gcc 3.4.4 (debug only)
1730
1731
Known issues
1732
------------
1733
1734
ns-3 is known to fail on the following platforms:
1735
  - gcc 3.3 and earlier
1736
  - optimized builds on gcc 3.4.4 and 3.4.5
1737
  - optimized builds on linux x86 gcc 4.0.x
1738
1739
The IPv4 API defined in src/node/ipv4.h is expected to undergo major changes 
1740
in preparation of the merge of the IPv6 API and implementation.
1741
1742
Future releases
1743
---------------
1744
1745
Our next release, which is expected to happen in 2 to 4 months from now, will
1746
feature the merging of some of our projects currently in development: python 
1747
scripting, IPv6, emulation, a statistics framework and synchronous posix 
1748
sockets.
1749
1750
Release 3.0.13 (2008/06/02)
1751
===========================
1752
- point to point links generate ppp pcap traces
1753
- point to point links support asymmetrical data rates.
1754
- generate doxygen documentation for all attributes and trace sources
1755
- add ConfigStore and GtkConfigStore to contrib module
1756
- socket API now support tx and rx buffers: implemented for UDP and TCP
1757
- ARP cache now supports per-entry pending queues
1758
- lots of bugfixes and implementation and API cleanups
1759
1760
Warning: among API changes in this release, Application::Start and 
1761
Application::Stop now interprets the time argument as a relative
1762
instead of absolute simulation time, to align with how Simulator::Schedule
1763
behaves.  Any code that calls these APIs in the middle of the simulation 
1764
will need to be adapted.  
1765
1766
The API of Simulator::StopAt (time) has also changed.  Now it is 
1767
called Simulator::Stop (time), and takes a relative time, instead of 
1768
absolute.
1769
1770
Release 3.0.12 (2008/04/07)
1771
===========================
1772
    - Add Attribute support to the TypeId metadata system and add
1773
attribute support to all in-tree models
1774
    - Add a mid-level helper API to build simulation topologies 
1775
and perform simple ascii and pcap link-level tracing.
1776
    - Large amount of structural changes to accomodate the needs
1777
of the upcoming python bindings
1778
    - new rate control algorithm (RRAA) and a jakes propagation model
1779
in the 802.11 model (Federico Maguolo).
1780
    - regression test framework added
1781
    - TCP delayed acknowledgements and multitasking server
1782
1783
Release 3.0.11 (2008/02/15)
1784
===========================
1785
    - Initial port of GTNetS TCP implementation (initial version 
1786
that does not support multitasking or delayed acknowledgments yet, 
1787
but supports a reliable stream service)
1788
    - Changes to the ns-3 object model to create a TypeId-based 
1789
metadata system
1790
    - lots of bug fixes throughout the system
1791
    - tutorial updates
1792
1793
Release 3.0.10 (2008/01/15)
1794
===========================
1795
   - Add tutorial document content;
1796
   - Valgrind option for "waf" tool;
1797
   - Doxygen organization changes.
1798
1799
Release 3.0.9 (2007/12/15)
1800
==========================
1801
   - A 802.11 model ported from Yans. This model supports:
1802
       * a rather extensive PHY model
1803
       * log-distance and friis propagation model
1804
       * a simple set of rate control algorithms (ARF, Ideal, 
1805
         AARF, constant-rate)
1806
       * adhoc and infrastructure mode (beacon+assoc)
1807
   - Use smart pointer for Packet in the APIs
1808
   - A new contrib directory with helper classes: 
1809
     EventGarbageCollector, Gnuplot
1810
   - Tracing support for Applications
1811
   - many bugs fixed
1812
1813
Release 3.0.8 (2007/11/15)
1814
==========================
1815
   - A simple error model
1816
   - Source files for ns-3 tutorial
1817
1818
Release 3.0.7 (2007/10/15)
1819
==========================
1820
  - OLSR routing protocol
1821
  - A timer class
1822
  - Additional mobility models (random waypoint, random 2D walk)
1823
  - A mobility visualization tool 
1824
1825
Release 3.0.6 (2007/09/15)
1826
==========================
1827
  - Static multicast IPv4 routing
1828
  - Logging overhaul (NS_LOG macros)
1829
  - Refactoring of tracing subsystem
1830
  - Tutorial document started
1831
 
1832
Release 3.0.5 (2007/08/15)
1833
==========================
1834
1835
  - Refactoring to support win32-based unix environments (Cygwin, mingw)
1836
  - "Packet socket" for allowing applications to access NetDevices directly
1837
  - Generalized, polymorphic Address class
1838
  - Add CSMA NetDevice model (from Emmanuelle Laprise)
1839
  - Modularize IPv4 routing support (from Gustavo Carneiro)
1840
  - Add mobility framework and basic mobility models 
1841
  - Global unicast centralized routing 
1842
1843
Release 3.0.4 (2007/07/15)
1844
==========================
1845
1846
  - Enable waf as the default build system.
1847
  - Per-packet metadata:  a system to track which headers and trailers 
1848
    are added to a packet
1849
  - Simplifications to point-to-point devices and channel
1850
1851
Release 3.0.3 (2007/06/15)
1852
==========================
1853
1854
  - Enable Waf for release tarballs: users can now build ns-3
1855
    with the "waf" tool. See doc/build-waf.txt.
1856
  - Add support for variable time precision: it is now possible
1857
    to run a simulation with an accuracy which is higher or lower
1858
    than a nanosecond: seconds, milliseconds, microseconds, 
1859
    femtoseconds and picoseconds are supported.
1860
  - Optimize and rework the COM framework, solidify the component 
1861
    manager
1862
  - Many small API cleanups
1863
1864
Release 3.0.2 (2007/05/18)
1865
==========================
1866
1867
  - Implement a new memory management infrastructure based
1868
    on reference counting and smart pointers (the latter being
1869
    optional)
1870
1871
  - Implement a COM-like framework with support for QueryInterface
1872
    to provide object extensibility
1873
1874
  - Add support for a BSD-style socket API for user applications
1875
1876
Release 3.0.1 (2007/03/31)
1877
==========================
1878
1879
  - First public release; not yet pre-alpha.
1880
1881
  - Simple UDP-based simulation script (examples/simple-p2p.cc)
(-)ns-3.18/bindings/python/wscript (-28 / +5 lines)
 Lines 13-19    Link Here 
13
# after = TaskGen.after
13
# after = TaskGen.after
14
14
15
## https://launchpad.net/pybindgen/
15
## https://launchpad.net/pybindgen/
16
REQUIRED_PYBINDGEN_VERSION = (0, 16, 0, 831)
16
REQUIRED_PYBINDGEN_VERSION = (0, 16, 0, 834)
17
REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
17
REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
18
18
19
19
 Lines 310-316    Link Here 
310
        raise ValueError("Module %r not found" % module)
310
        raise ValueError("Module %r not found" % module)
311
    return ns3headers.path.abspath()
311
    return ns3headers.path.abspath()
312
312
313
class apiscan_task(Task.TaskBase):
313
class apiscan_task(Task.Task):
314
    """Uses gccxml to scan the file 'everything.h' and extract API definitions.
314
    """Uses gccxml to scan the file 'everything.h' and extract API definitions.
315
    """
315
    """
316
    after = 'gen_ns3_module_header ns3header'
316
    after = 'gen_ns3_module_header ns3header'
 Lines 318-324    Link Here 
318
    color = "BLUE"
318
    color = "BLUE"
319
    def __init__(self, curdirnode, env, bld, target, cflags, module):
319
    def __init__(self, curdirnode, env, bld, target, cflags, module):
320
        self.bld = bld
320
        self.bld = bld
321
        super(apiscan_task, self).__init__(generator=self)
321
        super(apiscan_task, self).__init__(generator=self, env=env)
322
        self.curdirnode = curdirnode
322
        self.curdirnode = curdirnode
323
        self.env = env
323
        self.env = env
324
        self.target = target
324
        self.target = target
 Lines 341-346    Link Here 
341
            return self.uid_
341
            return self.uid_
342
342
343
    def run(self):
343
    def run(self):
344
        self.inputs = [self.bld.bldnode.find_resource("ns3/{0}-module.h".format(self.module))]
345
        self.outputs = [self.bld.srcnode.find_resource("src/{}/bindings/modulegen__{}.py".format(self.module, self.target))]
344
        top_builddir = self.bld.bldnode.abspath()
346
        top_builddir = self.bld.bldnode.abspath()
345
        module_path = get_module_path(self.bld, self.module)
347
        module_path = get_module_path(self.bld, self.module)
346
        headers_map = get_headers_map(self.bld)
348
        headers_map = get_headers_map(self.bld)
 Lines 393-422    Link Here 
393
395
394
396
395
397
396
class python_scan_task_collector(Task.TaskBase):
397
    """Tasks that waits for the python-scan-* tasks to complete and then signals WAF to exit
398
    """
399
    after = 'apiscan'
400
    before = 'cxx'
401
    color = "BLUE"
402
    def __init__(self, curdirnode, env, bld):
403
        self.bld = bld
404
        super(python_scan_task_collector, self).__init__(generator=self)
405
        self.curdirnode = curdirnode
406
        self.env = env
407
408
    def display(self):
409
        return 'python-scan-collector\n'
410
411
    def run(self):
412
        # signal stop (we generated files into the source dir and WAF
413
        # can't cope with it, so we have to force the user to restart
414
        # WAF)
415
        self.bld.producer.stop = 1
416
        return 0
417
418
419
420
class gen_ns3_compat_pymod_task(Task.Task):
398
class gen_ns3_compat_pymod_task(Task.Task):
421
    """Generates a 'ns3.py' compatibility module."""
399
    """Generates a 'ns3.py' compatibility module."""
422
    before = 'cxx'
400
    before = 'cxx'
 Lines 479-485    Link Here 
479
            group = bld.get_group(bld.current_group)
457
            group = bld.get_group(bld.current_group)
480
            for module in scan_modules:
458
            for module in scan_modules:
481
                group.append(apiscan_task(bld.path, env, bld, target, cflags, module))
459
                group.append(apiscan_task(bld.path, env, bld, target, cflags, module))
482
        group.append(python_scan_task_collector(bld.path, env, bld))
483
        return
460
        return
484
461
485
462
(-)ns-3.18/doc/manual/Makefile (-1 / +1 lines)
 Lines 87-93    Link Here 
87
87
88
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
88
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
89
89
90
RESCALE = $(shell hg root)/utils/rescale-pdf.sh
90
RESCALE = ../../utils/rescale-pdf.sh
91
91
92
%.eps : %.dia; $(DIA) -t eps $< -e $@
92
%.eps : %.dia; $(DIA) -t eps $< -e $@
93
%.png : %.dia; $(DIA) -t png $< -e $@
93
%.png : %.dia; $(DIA) -t png $< -e $@
(-)ns-3.18/doc/manual/source/new-modules.rst (-2 / +20 lines)
 Lines 152-158    Link Here 
152
152
153
.. sourcecode:: python
153
.. sourcecode:: python
154
154
155
    headers = bld.new_task_gen(features=['ns3header'])
155
    headers = bld(features='ns3header')
156
156
157
    headers.module = 'spectrum'
157
    headers.module = 'spectrum'
158
158
 Lines 329-335    Link Here 
329
Step 8 - Build and test your new module
329
Step 8 - Build and test your new module
330
***************************************
330
***************************************
331
331
332
You can now build and test your module as normal:
332
You can now build and test your module as normal.  You must reconfigure
333
the project as a first step or else your new module will not be included
334
in the build.
333
335
334
.. sourcecode:: bash
336
.. sourcecode:: bash
335
337
 Lines 338-340    Link Here 
338
  $ ./test.py
340
  $ ./test.py
339
341
340
and look for your new module's test suite (and example programs, if enabled) in the test output.
342
and look for your new module's test suite (and example programs, if enabled) in the test output.
343
344
Step 9 - Python bindings
345
************************
346
347
Adding Python bindings to your module is optional, and the step is
348
commented out by default in the ``create-module.py`` script.
349
350
.. sourcecode:: python
351
352
    # bld.ns3_python_bindings()
353
354
If you want to include Python bindings (needed only if you want
355
to write Python ns-3 programs instead of C++ ns-3 programs), you
356
should uncomment the above and install the Python API scanning
357
system (covered elsewhere in this manual) and scan your module to
358
generate new bindings.
(-)ns-3.18/doc/models/Makefile (-1 / +1 lines)
 Lines 309-315    Link Here 
309
309
310
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
310
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
311
311
312
RESCALE = $(shell hg root)/utils/rescale-pdf.sh
312
RESCALE = ../../utils/rescale-pdf.sh
313
313
314
%.eps : %.dia; $(DIA) -t eps $< -e $@
314
%.eps : %.dia; $(DIA) -t eps $< -e $@
315
%.png : %.dia; $(DIA) -t png $< -e $@
315
%.png : %.dia; $(DIA) -t png $< -e $@
(-)ns-3.18/doc/release_steps.txt (-1 / +2 lines)
 Lines 102-108    Link Here 
102
   - change the string 3-dev in the VERSION file to the real version 
102
   - change the string 3-dev in the VERSION file to the real version 
103
     (e.g. 3.14)  This must agree with the version name you chose in the clone.
103
     (e.g. 3.14)  This must agree with the version name you chose in the clone.
104
   - change the version and release string for the documentation in 
104
   - change the version and release string for the documentation in 
105
     doc/manual/source, doc/tutorial/source, doc/tutorial-pt/source, 
105
     doc/manual/source, doc/tutorial/source, doc/tutorial-pt-br/source, 
106
     and doc/models/source conf.py files
106
     and doc/models/source conf.py files
107
     This should hopefully be updated in the future to simply pull from the
107
     This should hopefully be updated in the future to simply pull from the
108
     VERSION file.
108
     VERSION file.
 Lines 155-160    Link Here 
155
- Documentation
155
- Documentation
156
156
157
2. Repoint http://www.nsnam.org/releases/latest to the new page
157
2. Repoint http://www.nsnam.org/releases/latest to the new page
158
   Repoint http://www.nsnam.org/documentation/latest to the new page
158
   Repoint /var/www/html/doxygen-release to the new release doxygen.
159
   Repoint /var/www/html/doxygen-release to the new release doxygen.
159
160
160
3. Update the Older Releases page to create an entry for the previous
161
3. Update the Older Releases page to create an entry for the previous
(-)ns-3.18/examples/tcp/tcp-variants-comparison.cc (-1 lines)
 Lines 300-306    Link Here 
300
          ApplicationContainer sourceApp = ftp.Install (sources.Get(i));
300
          ApplicationContainer sourceApp = ftp.Install (sources.Get(i));
301
          sourceApp.Start (Seconds (start_time*i));
301
          sourceApp.Start (Seconds (start_time*i));
302
          sourceApp.Stop (Seconds (stop_time - 3));
302
          sourceApp.Stop (Seconds (stop_time - 3));
303
          Time check_start (Seconds((start_time*i)+3));
304
303
305
          sinkHelper.SetAttribute ("Protocol", TypeIdValue (TcpSocketFactory::GetTypeId ()));
304
          sinkHelper.SetAttribute ("Protocol", TypeIdValue (TcpSocketFactory::GetTypeId ()));
306
          ApplicationContainer sinkApp = sinkHelper.Install (sinks);
305
          ApplicationContainer sinkApp = sinkHelper.Install (sinks);
(-)ns-3.18/examples/wireless/ht-wifi-network.cc (-1 / +1 lines)
 Lines 92-98    Link Here 
92
 
92
 
93
93
94
    Ssid ssid = Ssid ("ns380211n");
94
    Ssid ssid = Ssid ("ns380211n");
95
    double datarate;
95
    double datarate = 0;
96
    StringValue DataRate;
96
    StringValue DataRate;
97
    if (i==0)
97
    if (i==0)
98
      {
98
      {
(-)ns-3.18/examples/wireless/wifi-hidden-terminal.cc (-4 / +12 lines)
 Lines 82-91    Link Here 
82
82
83
  // uncomment the following to have athstats output
83
  // uncomment the following to have athstats output
84
  // AthstatsHelper athstats;
84
  // AthstatsHelper athstats;
85
  // athstats.EnableAthstats(enableCtsRts ? "basic-athstats-node" : "rtscts-athstats-node", nodes);
85
  // athstats.EnableAthstats(enableCtsRts ? "rtscts-athstats-node" : "basic-athstats-node" , nodes);
86
86
87
  // uncomment the following to have pcap output
87
  // uncomment the following to have pcap output
88
  //wifiPhy.EnablePcap (enableCtsRts ? "basic-pcap-node" : "rtscts-pcap-node", nodes);
88
  // wifiPhy.EnablePcap (enableCtsRts ? "rtscts-pcap-node" : "basic-pcap-node" , nodes);
89
89
90
90
91
  // 6. Install TCP/IP stack & assign IP addresses
91
  // 6. Install TCP/IP stack & assign IP addresses
 Lines 99-105    Link Here 
99
  ApplicationContainer cbrApps;
99
  ApplicationContainer cbrApps;
100
  uint16_t cbrPort = 12345;
100
  uint16_t cbrPort = 12345;
101
  OnOffHelper onOffHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address ("10.0.0.2"), cbrPort));
101
  OnOffHelper onOffHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address ("10.0.0.2"), cbrPort));
102
  onOffHelper.SetAttribute ("PacketSize", UintegerValue (200));
102
  onOffHelper.SetAttribute ("PacketSize", UintegerValue (1400));
103
  onOffHelper.SetAttribute ("OnTime",  StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
103
  onOffHelper.SetAttribute ("OnTime",  StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
104
  onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
104
  onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
105
105
 Lines 153-165    Link Here 
153
  for (std::map<FlowId, FlowMonitor::FlowStats>::const_iterator i = stats.begin (); i != stats.end (); ++i)
153
  for (std::map<FlowId, FlowMonitor::FlowStats>::const_iterator i = stats.begin (); i != stats.end (); ++i)
154
    {
154
    {
155
      // first 2 FlowIds are for ECHO apps, we don't want to display them
155
      // first 2 FlowIds are for ECHO apps, we don't want to display them
156
      //
157
      // Duration for throughput measurement is 9.0 seconds, since 
158
      //   StartTime of the OnOffApplication is at about "second 1"
159
      // and 
160
      //   Simulator::Stops at "second 10".
156
      if (i->first > 2)
161
      if (i->first > 2)
157
        {
162
        {
158
          Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (i->first);
163
          Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (i->first);
159
          std::cout << "Flow " << i->first - 2 << " (" << t.sourceAddress << " -> " << t.destinationAddress << ")\n";
164
          std::cout << "Flow " << i->first - 2 << " (" << t.sourceAddress << " -> " << t.destinationAddress << ")\n";
165
          std::cout << "  Tx Packets: " << i->second.txPackets << "\n";
160
          std::cout << "  Tx Bytes:   " << i->second.txBytes << "\n";
166
          std::cout << "  Tx Bytes:   " << i->second.txBytes << "\n";
167
          std::cout << "  TxOffered:  " << i->second.txBytes * 8.0 / 9.0 / 1000 / 1000  << " Mbps\n";
168
          std::cout << "  Rx Packets: " << i->second.rxPackets << "\n";
161
          std::cout << "  Rx Bytes:   " << i->second.rxBytes << "\n";
169
          std::cout << "  Rx Bytes:   " << i->second.rxBytes << "\n";
162
          std::cout << "  Throughput: " << i->second.rxBytes * 8.0 / 10.0 / 1000 / 1000  << " Mbps\n";
170
          std::cout << "  Throughput: " << i->second.rxBytes * 8.0 / 9.0 / 1000 / 1000  << " Mbps\n";
163
        }
171
        }
164
    }
172
    }
165
173
(-)ns-3.18/src/antenna/doc/Makefile (-1 / +1 lines)
 Lines 20-26    Link Here 
20
20
21
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
21
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
22
22
23
RESCALE = $(shell hg root)/utils/rescale-pdf.sh
23
RESCALE = ../../../utils/rescale-pdf.sh
24
24
25
%.eps : %.dia; $(DIA) -t eps $< -e $@
25
%.eps : %.dia; $(DIA) -t eps $< -e $@
26
%.png : %.dia; $(DIA) -t png $< -e $@
26
%.png : %.dia; $(DIA) -t png $< -e $@
(-)ns-3.18/src/aodv/model/aodv-routing-protocol.cc (-6 lines)
 Lines 129-135    Link Here 
129
  AllowedHelloLoss (2),
129
  AllowedHelloLoss (2),
130
  DeletePeriod (Time (5 * std::max (ActiveRouteTimeout, HelloInterval))),
130
  DeletePeriod (Time (5 * std::max (ActiveRouteTimeout, HelloInterval))),
131
  NextHopWait (NodeTraversalTime + MilliSeconds (10)),
131
  NextHopWait (NodeTraversalTime + MilliSeconds (10)),
132
  TimeoutBuffer (2),
133
  BlackListTimeout (Time (RreqRetries * NetTraversalTime)),
132
  BlackListTimeout (Time (RreqRetries * NetTraversalTime)),
134
  MaxQueueLen (64),
133
  MaxQueueLen (64),
135
  MaxQueueTime (Seconds (30)),
134
  MaxQueueTime (Seconds (30)),
 Lines 202-212    Link Here 
202
                   TimeValue (Seconds (15)),
201
                   TimeValue (Seconds (15)),
203
                   MakeTimeAccessor (&RoutingProtocol::DeletePeriod),
202
                   MakeTimeAccessor (&RoutingProtocol::DeletePeriod),
204
                   MakeTimeChecker ())
203
                   MakeTimeChecker ())
205
    .AddAttribute ("TimeoutBuffer", "Its purpose is to provide a buffer for the timeout so that if the RREP is delayed"
206
                   " due to congestion, a timeout is less likely to occur while the RREP is still en route back to the source.",
207
                   UintegerValue (2),
208
                   MakeUintegerAccessor (&RoutingProtocol::TimeoutBuffer),
209
                   MakeUintegerChecker<uint16_t> ())
210
    .AddAttribute ("NetDiameter", "Net diameter measures the maximum possible number of hops between two nodes in the network",
204
    .AddAttribute ("NetDiameter", "Net diameter measures the maximum possible number of hops between two nodes in the network",
211
                   UintegerValue (35),
205
                   UintegerValue (35),
212
                   MakeUintegerAccessor (&RoutingProtocol::NetDiameter),
206
                   MakeUintegerAccessor (&RoutingProtocol::NetDiameter),
(-)ns-3.18/src/aodv/model/aodv-routing-protocol.h (-5 lines)
 Lines 129-139    Link Here 
129
   */
129
   */
130
  Time DeletePeriod;
130
  Time DeletePeriod;
131
  Time NextHopWait;                  ///< Period of our waiting for the neighbour's RREP_ACK
131
  Time NextHopWait;                  ///< Period of our waiting for the neighbour's RREP_ACK
132
  /**
133
   * The TimeoutBuffer is configurable.  Its purpose is to provide a buffer for the timeout so that if the RREP is delayed
134
   * due to congestion, a timeout is less likely to occur while the RREP is still en route back to the source.
135
   */
136
  uint16_t TimeoutBuffer;
137
  Time BlackListTimeout;             ///< Time for which the node is put into the blacklist
132
  Time BlackListTimeout;             ///< Time for which the node is put into the blacklist
138
  uint32_t MaxQueueLen;              ///< The maximum number of packets that we allow a routing protocol to buffer.
133
  uint32_t MaxQueueLen;              ///< The maximum number of packets that we allow a routing protocol to buffer.
139
  Time MaxQueueTime;                 ///< The maximum period of time that a routing protocol is allowed to buffer a packet for.
134
  Time MaxQueueTime;                 ///< The maximum period of time that a routing protocol is allowed to buffer a packet for.
(-)ns-3.18/src/buildings/doc/Makefile (-1 / +1 lines)
 Lines 20-26    Link Here 
20
20
21
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
21
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
22
22
23
RESCALE = $(shell hg root)/utils/rescale-pdf.sh
23
RESCALE = ../../../utils/rescale-pdf.sh
24
24
25
%.eps : %.dia; $(DIA) -t eps $< -e $@
25
%.eps : %.dia; $(DIA) -t eps $< -e $@
26
%.png : %.dia; $(DIA) -t png $< -e $@
26
%.png : %.dia; $(DIA) -t png $< -e $@
(-)ns-3.18/src/buildings/doc/source/buildings-user.rst (-8 / +164 lines)
 Lines 5-14    Link Here 
5
  User Documentation
5
  User Documentation
6
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7
7
8
How to use buildings in a simulation
9
====================================
8
10
11
In this section we explain the basic usage of the buildings model within a
12
simulation program.
9
13
10
Main configurable parameters
14
Include the headers
11
----------------------------
15
*******************
16
17
Add this at the beginning of your simulation program::
18
19
   #include <ns3/buildings-module.h>
20
21
22
Create a building
23
*****************
24
25
As an example, let's create a residential 10 x 20 x 10 building::
26
27
    double x_min = 0.0;
28
    double x_max = 10.0;
29
    double y_min = 0.0;
30
    double y_max = 20.0;
31
    double z_min = 0.0;
32
    double z_max = 10.0;
33
    Ptr<Building> b = CreateObject <Building> ();
34
    b->SetBoundaries (Box (x_min, x_max, y_min, y_max, z_min, z_max));
35
    b->SetBuildingType (Building::Residential);
36
    b->SetExtWallsType (Building::ConcreteWithWindows);
37
    b->SetNFloors (3);
38
    b->SetNRoomsX (3);
39
    b->SetNRoomsY (2);
40
41
This building has three floors and an internal 3 x 2  grid of rooms of equal size.
42
43
The helper class GridBuildingAllocator is also available to easily
44
create a set of buildings with identical characteristics placed on a
45
rectangular grid. Here's an example of how to use it::
46
47
  Ptr<GridBuildingAllocator>  gridBuildingAllocator;
48
  gridBuildingAllocator = CreateObject<GridBuildingAllocator> ();
49
  gridBuildingAllocator->SetAttribute ("GridWidth", UintegerValue (3));
50
  gridBuildingAllocator->SetAttribute ("LengthX", DoubleValue (7)); 
51
  gridBuildingAllocator->SetAttribute ("LengthY", DoubleValue (13));
52
  gridBuildingAllocator->SetAttribute ("DeltaX", DoubleValue (3));
53
  gridBuildingAllocator->SetAttribute ("DeltaY", DoubleValue (3));
54
  gridBuildingAllocator->SetAttribute ("Height", DoubleValue (6));
55
  gridBuildingAllocator->SetBuildingAttribute ("NRoomsX", UintegerValue (2));
56
  gridBuildingAllocator->SetBuildingAttribute ("NRoomsY", UintegerValue (4));
57
  gridBuildingAllocator->SetBuildingAttribute ("NFloors", UintegerValue (2));
58
  gridBuildingAllocator->SetAttribute ("MinX", DoubleValue (0));
59
  gridBuildingAllocator->SetAttribute ("MinY", DoubleValue (0));
60
  gridBuildingAllocator->Create (6);
61
62
63
This will create a 3x2 grid of 6 buildings, each 7 x 13 x 6 m with 2 x
64
4 rooms inside and 2 foors; the buildings are spaced by 3 m on both
65
the x and the y axis. 
66
67
68
Setup nodes and mobility models
69
*******************************
70
71
Nodes and mobility models are configured as usual, however in order to
72
use them with the buildings model you need an additional call to
73
``BuildingsHelper::Install()``, so as to let the mobility model include
74
the informtion on their position w.r.t. the buildings. Here is an example::
75
76
    MobilityHelper mobility;
77
    mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
78
    ueNodes.Create (2);
79
    mobility.Install (ueNodes);
80
    BuildingsHelper::Install (ueNodes);
81
82
It is to be noted that any mobility model can be used. However, the
83
user is advised to make sure that the behavior of the mobility model
84
being used is consistent with the presence of Buildings. For example,
85
using a simple random mobility over the whole simulation area in
86
presence of buildings might easily results in node moving in and out
87
of buildings, regardless of the presence of walls. 
88
89
90
Place some nodes
91
****************
92
93
You can place nodes in your simulation using several methods, which
94
are described in the following.
95
96
Legacy positioning methods
97
--------------------------
98
99
Any legacy ns-3 positioning method can be used to place node in the
100
simulation. The important additional step is to For example, you can
101
place nodes manually like this::
102
103
    Ptr<ConstantPositionMobilityModel> mm0 = enbNodes.Get (0)->GetObject<ConstantPositionMobilityModel> ();
104
    Ptr<ConstantPositionMobilityModel> mm1 = enbNodes.Get (1)->GetObject<ConstantPositionMobilityModel> ();
105
    mm0->SetPosition (Vector (5.0, 5.0, 1.5));
106
    mm1->SetPosition (Vector (30.0, 40.0, 1.5));
107
108
    MobilityHelper mobility;
109
    mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
110
    ueNodes.Create (2);
111
    mobility.Install (ueNodes);
112
    BuildingsHelper::Install (ueNodes);
113
    mm0->SetPosition (Vector (5.0, 5.0, 1.5));
114
    mm1->SetPosition (Vector (30.0, 40.0, 1.5));
115
116
Alternatively, you could use any existing PositionAllocator
117
class. The coordinates of the node will determine whether it is placed
118
outdoor or indoor and, if indoor, in which building and room it is placed.
119
120
121
Building-specific positioning methods
122
-------------------------------------
123
124
The following position allocator classes are available to place node
125
in special positions with respect to buildings:
126
127
 - ``RandomBuildingPositionAllocator``: Allocate each position by
128
   randomly chosing a building from the list of all buildings, and
129
   then randomly chosing a position inside the building. 
130
131
 - ``RandomRoomPositionAllocator``: Allocate each position by randomly
132
   chosing a room from the list of rooms in all buildings, and then
133
   randomly chosing a position inside the room. 
134
135
 - ``SameRoomPositionAllocator``: Walks a given NodeContainer
136
   sequentially, and for each node allocate a new position randomly in
137
   the same room of that node.  
138
139
 - ``FixedRoomPositionAllocator``: Generate a random position
140
   uniformly distributed in the volume of a chosen room inside a
141
   chosen building.   
142
143
144
145
Make the Mobility Model Consistent
146
**********************************
147
148
**Important**: whenever you use buildings, you have to issue the
149
following command after we have placed all nodes and buildings in the simulation::
150
151
    BuildingsHelper::MakeMobilityModelConsistent ();
152
153
This command will go through the lists of all nodes and of all
154
buildings, determine for each user if it is indoor or outdoor, and if
155
indoor it will also determine the building in which the user is
156
located and the corresponding floor and number inside the building. 
157
158
159
Building-aware pathloss model
160
*****************************
161
162
After you placed buildings and nodes in a simulation, you can use a
163
building-aware pathloss model in a simulation exactly in the same way
164
you would use any regular path loss model. How to do this is specific
165
for the wireless module that you are considering (lte, wifi, wimax,
166
etc.), so please refer to the documentation of that model for specific
167
instructions.
168
169
170
171
172
Main configurable attributes
173
============================
12
174
13
The ``Building`` class has the following configurable parameters:
175
The ``Building`` class has the following configurable parameters:
14
176
 Lines 42-53    Link Here 
42
The simple ``OhBuildingMobilityLossModel`` overcome this problem by using only the Okumura Hata model and the wall penetration losses.
204
The simple ``OhBuildingMobilityLossModel`` overcome this problem by using only the Okumura Hata model and the wall penetration losses.
43
205
44
206
45
Helper Functionalities
46
----------------------
47
48
The ``BuildingsHelper`` class defines a set of static function for assisting in the definition of the scenario with building module. In detail, it provides the method ``Install`` for installing the building information included in  ``MobilityBuildingInfo`` to a specific node (or set of nodes, i.e.,  the ``NodeContainer``). In order to synchronize the nodes information with their position, this helper provides the function ``MakeMobilityModelConsistent`` that puts all the ``Node``\s presents in the simulation in the right position (i.e., outdoor or indoor, in the latter also updating in terms of building, floor and room number).
49
50
51
207
52
208
53
209
(-)ns-3.18/src/buildings/helper/building-position-allocator.cc (-10 / +72 lines)
 Lines 77-89    Link Here 
77
    {
77
    {
78
      if (m_buildingListWithoutReplacement.empty ())
78
      if (m_buildingListWithoutReplacement.empty ())
79
        {
79
        {
80
            for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit)
80
          for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit)
81
              {
81
            {
82
                m_buildingListWithoutReplacement.push_back (*bit);
82
              m_buildingListWithoutReplacement.push_back (*bit);
83
              }
83
            }
84
        }
84
        }
85
      uint32_t n = m_rand->GetInteger (0, m_buildingListWithoutReplacement.size () - 1);
85
      uint32_t n = m_rand->GetInteger (0, m_buildingListWithoutReplacement.size () - 1);
86
      b = m_buildingListWithoutReplacement.at (n);      
86
      b = m_buildingListWithoutReplacement.at (n);
87
      m_buildingListWithoutReplacement.erase (m_buildingListWithoutReplacement.begin () + n);
87
      m_buildingListWithoutReplacement.erase (m_buildingListWithoutReplacement.begin () + n);
88
    }
88
    }
89
89
 Lines 152-159    Link Here 
152
        }
152
        }
153
    }
153
    }
154
  uint32_t n = m_rand->GetInteger (0,m_roomListWithoutReplacement.size () - 1);
154
  uint32_t n = m_rand->GetInteger (0,m_roomListWithoutReplacement.size () - 1);
155
  RoomInfo r = m_roomListWithoutReplacement.at (n);      
155
  RoomInfo r = m_roomListWithoutReplacement.at (n);
156
  m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n);  
156
  m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n);
157
  NS_LOG_LOGIC ("considering building " << r.b->GetId () << " room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")");
157
  NS_LOG_LOGIC ("considering building " << r.b->GetId () << " room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")");
158
158
159
  Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> ();
159
  Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> ();
 Lines 177-183    Link Here 
177
  double x = m_rand->GetValue (x1, x2);
177
  double x = m_rand->GetValue (x1, x2);
178
  double y = m_rand->GetValue (y1, y2);
178
  double y = m_rand->GetValue (y1, y2);
179
  double z = m_rand->GetValue (z1, z2);
179
  double z = m_rand->GetValue (z1, z2);
180
  
180
181
  return Vector (x, y, z);
181
  return Vector (x, y, z);
182
}
182
}
183
183
 Lines 234-240    Link Here 
234
    {
234
    {
235
      m_nodeIt  = m_nodes.Begin ();
235
      m_nodeIt  = m_nodes.Begin ();
236
    }
236
    }
237
  
237
238
  NS_ASSERT_MSG (m_nodeIt != m_nodes.End (), "no node in container");
238
  NS_ASSERT_MSG (m_nodeIt != m_nodes.End (), "no node in container");
239
239
240
  NS_LOG_LOGIC ("considering node " << (*m_nodeIt)->GetId ());
240
  NS_LOG_LOGIC ("considering node " << (*m_nodeIt)->GetId ());
 Lines 271-277    Link Here 
271
  double x = m_rand->GetValue (x1, x2);
271
  double x = m_rand->GetValue (x1, x2);
272
  double y = m_rand->GetValue (y1, y2);
272
  double y = m_rand->GetValue (y1, y2);
273
  double z = m_rand->GetValue (z1, z2);
273
  double z = m_rand->GetValue (z1, z2);
274
  
274
275
  return Vector (x, y, z);
275
  return Vector (x, y, z);
276
}
276
}
277
277
 Lines 282-287    Link Here 
282
  return 1;
282
  return 1;
283
}
283
}
284
284
285
NS_OBJECT_ENSURE_REGISTERED (FixedRoomPositionAllocator);
286
287
288
FixedRoomPositionAllocator::FixedRoomPositionAllocator (
289
  uint32_t x,
290
  uint32_t y,
291
  uint32_t z,
292
  Ptr<Building> pbtr)
293
{
294
  m_rand = CreateObject<UniformRandomVariable> ();
295
  roomx = x;
296
  roomy = y;
297
  floor = z;
298
  bptr = pbtr;
299
}
300
301
TypeId
302
FixedRoomPositionAllocator::GetTypeId (void)
303
{
304
  static TypeId tid = TypeId ("ns3::FixedRoomPositionAllocator")
305
    .SetParent<PositionAllocator> ()
306
    .SetGroupName ("Mobility")
307
    .AddConstructor<SameRoomPositionAllocator> ();
308
  return tid;
309
}
310
311
Vector
312
FixedRoomPositionAllocator::GetNext () const
313
{
314
315
  NS_LOG_LOGIC ("considering building " << bptr->GetId () << " room (" << roomx << ", " << roomy << ", " << floor << ")");
316
317
  Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> ();
318
319
  Box box = bptr->GetBoundaries ();
320
  double rdx =  (box.xMax - box.xMin) / bptr->GetNRoomsX ();
321
  double rdy =  (box.yMax - box.yMin) / bptr->GetNRoomsY ();
322
  double rdz =  (box.zMax - box.zMin) / bptr->GetNFloors ();
323
  double x1 = box.xMin + rdx * (roomx - 1);
324
  double x2 = box.xMin + rdx * roomx;
325
  double y1 = box.yMin + rdy * (roomy -1);
326
  double y2 = box.yMin + rdy * roomy;
327
  double z1 = box.zMin + rdz * (floor - 1);
328
  double z2 = box.zMin + rdz * floor;
329
  NS_LOG_LOGIC ("randomly allocating position in "
330
                << " (" << x1 << "," << x2 << ") "
331
                << "x (" << y1 << "," << y2 << ") "
332
                << "x (" << z1 << "," << z2 << ") ");
333
334
  double x = m_rand->GetValue (x1, x2);
335
  double y = m_rand->GetValue (y1, y2);
336
  double z = m_rand->GetValue (z1, z2);
337
  return Vector (x, y, z);
338
}
339
340
341
int64_t
342
FixedRoomPositionAllocator::AssignStreams (int64_t stream)
343
{
344
  m_rand->SetStream (stream);
345
  return 1;
346
}
285
347
286
348
287
} // namespace ns3
349
} // namespace ns3
(-)ns-3.18/src/buildings/helper/building-position-allocator.h (-20 / +68 lines)
 Lines 47-64    Link Here 
47
  // inherited from PositionAllocator
47
  // inherited from PositionAllocator
48
  virtual Vector GetNext (void) const;
48
  virtual Vector GetNext (void) const;
49
49
50
 /**
50
  /**
51
  * Assign a fixed random variable stream number to the random variables
51
   * Assign a fixed random variable stream number to the random variables
52
  * used by this model.  Return the number of streams (possibly zero) that
52
   * used by this model.  Return the number of streams (possibly zero) that
53
  * have been assigned.
53
   * have been assigned.
54
  *
54
   *
55
  * \param stream first stream index to use
55
   * \param stream first stream index to use
56
  * \return the number of stream indices assigned by this model
56
   * \return the number of stream indices assigned by this model
57
  */
57
   */
58
  int64_t AssignStreams (int64_t stream);
58
  int64_t AssignStreams (int64_t stream);
59
59
60
private:
60
private:
61
  
61
62
  bool m_withReplacement;
62
  bool m_withReplacement;
63
  mutable std::vector< Ptr<Building> > m_buildingListWithoutReplacement;
63
  mutable std::vector< Ptr<Building> > m_buildingListWithoutReplacement;
64
64
 Lines 95-102    Link Here 
95
  int64_t AssignStreams (int64_t stream);
95
  int64_t AssignStreams (int64_t stream);
96
96
97
private:
97
private:
98
  
98
99
  bool m_withReplacement;
100
  struct RoomInfo 
99
  struct RoomInfo 
101
  {
100
  {
102
    Ptr<Building> b;
101
    Ptr<Building> b;
 Lines 111-120    Link Here 
111
};
110
};
112
111
113
112
113
114
/**
114
/**
115
 * Walks a given NodeContainer sequentially, and for each node allocate a new
115
 * Walks a given NodeContainer sequentially, and for each node allocate a new
116
 * position randomly in the same room of that node
116
 * position randomly in the same room of that node
117
 * 
117
 *
118
 */
118
 */
119
class SameRoomPositionAllocator : public PositionAllocator
119
class SameRoomPositionAllocator : public PositionAllocator
120
{
120
{
 Lines 128-141    Link Here 
128
  // inherited from PositionAllocator
128
  // inherited from PositionAllocator
129
  virtual Vector GetNext (void) const;
129
  virtual Vector GetNext (void) const;
130
130
131
 /**
131
  /**
132
  * Assign a fixed random variable stream number to the random variables
132
   * Assign a fixed random variable stream number to the random variables
133
  * used by this model.  Return the number of streams (possibly zero) that
133
   * used by this model.  Return the number of streams (possibly zero) that
134
  * have been assigned.
134
   * have been assigned.
135
  *
135
   *
136
  * \param stream first stream index to use
136
   * \param stream first stream index to use
137
  * \return the number of stream indices assigned by this model
137
   * \return the number of stream indices assigned by this model
138
  */
138
   */
139
  int64_t AssignStreams (int64_t);
139
  int64_t AssignStreams (int64_t);
140
140
141
private:
141
private:
 Lines 147-152    Link Here 
147
  Ptr<UniformRandomVariable> m_rand;
147
  Ptr<UniformRandomVariable> m_rand;
148
};
148
};
149
149
150
/**
151
 * Generate a random position uniformly distributed in the volume of a
152
 * chosen room inside a chosen building.  
153
 */
154
class FixedRoomPositionAllocator : public PositionAllocator
155
{
156
public:
157
158
  /** 
159
   * 
160
   * 
161
   * \param x index of the room on the x-axis 
162
   * \param y index of the room on the y-axis 
163
   * \param z index of the room on the z-axis (i.e., floor number)
164
   * \param b pointer to the chosen building
165
   * 
166
   */
167
  FixedRoomPositionAllocator (uint32_t x,
168
                              uint32_t y,
169
                              uint32_t z,
170
                              Ptr<Building> b);
171
  // inherited from Object
172
  static TypeId GetTypeId (void);
173
  // inherited from PositionAllocator
174
  virtual Vector GetNext (void) const;
175
176
  /**
177
   * Assign a fixed random variable stream number to the random variables
178
   * used by this model.  Return the number of streams (possibly zero) that
179
   * have been assigned.
180
   *
181
   * \param stream first stream index to use
182
   * \return the number of stream indices assigned by this model
183
   */
184
  int64_t AssignStreams (int64_t);
185
186
private:
187
188
  uint32_t roomx;
189
  uint32_t roomy;
190
  uint32_t floor;
191
192
  Ptr<Building> bptr;
193
194
  /// Provides uniform random variables.
195
  Ptr<UniformRandomVariable> m_rand;
196
};
197
150
198
151
} // namespace ns3
199
} // namespace ns3
152
200
(-)ns-3.18/src/buildings/model/itu-r-1238-propagation-loss-model.h (-8 lines)
 Lines 60-73    Link Here 
60
  virtual int64_t DoAssignStreams (int64_t stream);
60
  virtual int64_t DoAssignStreams (int64_t stream);
61
  
61
  
62
  double m_frequency; ///< frequency in MHz
62
  double m_frequency; ///< frequency in MHz
63
  double m_lambda; ///< wavelength
64
  EnvironmentType m_environment;
65
  CitySize m_citySize;
66
  double m_rooftopHeight; ///< in meters
67
  double m_streetsOrientation; ///< in degrees [0,90]
68
  double m_streetsWidth; ///< in meters
69
  double m_buildingsExtend; ///< in meters
70
  double m_buildingSeparation; ///< in meters
71
63
72
};
64
};
73
65
(-)ns-3.18/src/click/model/ipv4-l3-click-protocol.cc (-1 / +1 lines)
 Lines 330-336    Link Here 
330
  // First check whether an existing LoopbackNetDevice exists on the node
330
  // First check whether an existing LoopbackNetDevice exists on the node
331
  for (uint32_t i = 0; i < m_node->GetNDevices (); i++)
331
  for (uint32_t i = 0; i < m_node->GetNDevices (); i++)
332
    {
332
    {
333
      if (device = DynamicCast<LoopbackNetDevice> (m_node->GetDevice (i)))
333
      if ((device = DynamicCast<LoopbackNetDevice> (m_node->GetDevice (i))))
334
        {
334
        {
335
          break;
335
          break;
336
        }
336
        }
(-)ns-3.18/src/core/model/hash-murmur3.cc (-33 / +21 lines)
 Lines 34-66    Link Here 
34
34
35
#include <iomanip>
35
#include <iomanip>
36
36
37
/*
38
 * \brief Silence erroneous strict alias warning from a gcc 4.4 bug
39
 *
40
 * Casting \c (void*) triggers a strict alias warning bug
41
 * in gcc 4.4 (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39390).
42
 *
43
 * In the murmur3 code, data is returned by
44
 * \code
45
 *   void Function (... , void * out)
46
 *   {
47
 *     ...
48
 *     *(uint32_t *)out = ...
49
 *   }
50
 * \endcode
51
 *
52
 * which triggers the erroneous warning.
53
 *
54
 * We suppress strict-alias warnings in this compilation unit.
55
 * (gcc 4.4 doesn't support the <tt>diagnostic push/pop</tt> pragmas,
56
 * so we can't narrow down the suppression any further.)
57
 */
58
// Test for gcc 4.4.x
59
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
60
#if (GCC_VERSION == 404)
61
#  pragma GCC diagnostic ignored "-Wstrict-aliasing"
62
#endif
63
 
64
namespace ns3 {
37
namespace ns3 {
65
38
66
NS_LOG_COMPONENT_DEFINE ("Hash-Murmur3");
39
NS_LOG_COMPONENT_DEFINE ("Hash-Murmur3");
 Lines 479-490    Link Here 
479
{
452
{
480
  using namespace Murmur3Implementation;
453
  using namespace Murmur3Implementation;
481
  MurmurHash3_x86_128_incr (buffer, size,
454
  MurmurHash3_x86_128_incr (buffer, size,
482
                            (uint32_t *)(void *)m_hash64, (void *)(m_hash64));
455
                            (uint32_t *)(void *)m_hash64, m_hash64);
483
  m_size64 += size;
456
  m_size64 += size;
484
  uint64_t hash[2];
457
458
  // Simpler would be:
459
  //
460
  //   uint64_t hash[2];
461
  //   MurmurHash3_x86_128_fin (m_size64, m_hash64, hash);
462
  //   return hash[0];
463
  //
464
  // but this triggers an aliasing bug in gcc-4.4 (perhaps related to
465
  // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39390).
466
  // In ns-3, this bug produces incorrect results in static optimized
467
  // builds only.
468
  //
469
  // Using uint32_t here avoids the bug, and continues to works with newer gcc.
470
  uint32_t hash[4];
471
  
485
  MurmurHash3_x86_128_fin (m_size64,
472
  MurmurHash3_x86_128_fin (m_size64,
486
                           (uint32_t*)(void *)m_hash64, (void *)hash);
473
                           (uint32_t *)(void *)m_hash64, hash);
487
  return hash[0];
474
  uint64_t result = hash[1];
475
  result = (result << 32) | hash[0];
476
  return result;
488
}
477
}
489
478
490
void
479
void
 Lines 492-499    Link Here 
492
{
481
{
493
  m_hash32 = (uint32_t)SEED;
482
  m_hash32 = (uint32_t)SEED;
494
  m_size32 = 0;
483
  m_size32 = 0;
495
  m_hash64[0] = ((uint64_t)(SEED) << 32) + (uint64_t)SEED;
484
  m_hash64[0] = m_hash64[1] = ((uint64_t)(SEED) << 32) + (uint64_t)SEED;
496
  m_hash64[1] = ((uint64_t)(SEED) << 32) + (uint64_t)SEED;
497
  m_size64 = 0;
485
  m_size64 = 0;
498
}
486
}
499
487
(-)ns-3.18/src/core/model/nstime.h (-48 / +26 lines)
 Lines 41-104    Link Here 
41
 * \ingroup time
41
 * \ingroup time
42
 * \brief keep track of time values and allow control of global simulation resolution
42
 * \brief keep track of time values and allow control of global simulation resolution
43
 *
43
 *
44
 * This class defines all the classic C++ arithmetic
44
 * This class defines all the classic C++ addition/subtraction
45
 * operators +, -, *, /, and all the classic comparison operators:
45
 * operators: +, -, +=, -=; and all the classic comparison operators:
46
 * ==, !=, <, >, <=, >=. It is thus easy to add, substract, or
46
 * ==, !=, <, >, <=, >=. It is thus easy to add, substract, or
47
 * multiply Time objects.
47
 * compare Time objects.
48
 *
48
 *
49
 * For example:
49
 * For example:
50
 * \code
50
 * \code
51
 * Time t1 = Seconds (10.0);
51
 * Time t1 = Seconds (10.0);
52
 * Time t2 = Seconds (10.0);
52
 * Time t2 = Seconds (10.0);
53
 * Time t3 = t1 * t2;
53
 * Time t3 = t1;
54
 * Time t4 = t1 / t2;
54
 * t3 += t2;
55
 * Time t5 = t3 * t1;
56
 * Time t6 = t1 / t5;
57
 * Time t7 = t3;
58
 * \endcode
55
 * \endcode
59
 *
56
 *
60
 * You can also use the following non-member functions to manipulate
57
 * You can also use the following non-member functions to manipulate
61
 * any of these ns3::Time object:
58
 * any of these ns3::Time object:
62
 *  - \ref ns3-Time-Abs ns3::Abs
59
 *  - \ref Abs()
63
 *  - \ref ns3-Time-Max ns3::Max
60
 *  - \ref Max()
64
 *  - \ref ns3-Time-Min ns3::Min
61
 *  - \ref Min()
65
 *
62
 *
66
 * This class also controls
63
 * This class also controls the resolution of the underlying time value.
67
 * the resolution of the underlying time value . The default resolution
64
 * The resolution is the smallest representable time interval.
68
 * is nanoseconds. That is, TimeStep (1).GetNanoSeconds () will return
65
 * The default resolution is nanoseconds.
69
 * 1. It is possible to either increase or decrease the resolution and the
66
 *
70
 * code tries really hard to make this easy.
67
 * To change the resolution, use SetResolution().  All Time objects created
71
 *
68
 * before the call to SetResolution() will be updated to the new resolution.
72
 * If your resolution is X (say, nanoseconds) and if you create Time objects
69
 * This can only be done once!  (Tracking each Time object uses 4 pointers.
73
 * with a lower resolution (say, picoseconds), don't expect that this
70
 * For speed, once we convert the existing instances we discard the recording
74
 * code will return 1: PicoSeconds (1).GetPicoSeconds (). It will most
71
 * data structure and stop tracking new instances, so we have no way
75
 * likely return 0 because the Time object has only 64 bits of fractional
72
 * to do a second conversion.)
76
 * precision which means that PicoSeconds (1) is stored as a 64-bit aproximation
73
 *
77
 * of 1/1000 in the Time object. If you later multiply it again by the exact
74
 * If you increase the global resolution, you also implicitly decrease
78
 * value 1000, the result is unlikely to be 1 exactly. It will be close to
75
 * the range of your simulation.  The global simulation time is stored
79
 * 1 but not exactly 1.
76
 * in a 64 bit integer, whose interpretation will depend on the global
80
 *
77
 * resolution.  Therefore the maximum duration of your simulation,
81
 * In general, it is thus a really bad idea to try to use time objects of a
78
 * if you use picoseconds, is 2^64 ps = 2^24 s = 7 months, whereas,
82
 * resolution higher than the global resolution controlled through
79
 * had you used nanoseconds, you could have run for 584 years.
83
 * Time::SetResolution. If you do need to use picoseconds, it's thus best
84
 * to switch the global resolution to picoseconds to avoid nasty surprises.
85
 *
86
 * Another important issue to keep in mind is that if you increase the
87
 * global resolution, you also implicitely decrease the range of your simulation.
88
 * i.e., the global simulation time is stored in a 64 bit integer whose interpretation
89
 * will depend on the global resolution so, 2^64 picoseconds which is the maximum
90
 * duration of your simulation if the global resolution is picoseconds
91
 * is smaller than 2^64 nanoseconds which is the maximum duration of your simulation
92
 * if the global resolution is nanoseconds.
93
 *
94
 * Finally, don't even think about ever changing the global resolution after
95
 * creating Time objects: all Time objects created before the call to SetResolution
96
 * will contain values which are not updated to the new resolution. In practice,
97
 * the default value for the attributes of many models is indeed calculated
98
 * before the main function of the main program enters. Because of this, if you
99
 * use one of these models (and it's likely), it's going to be hard to change
100
 * the global simulation resolution in a way which gives reasonable results. This
101
 * issue has been filed as bug 954 in the ns-3 bugzilla installation.
102
 */
80
 */
103
class Time
81
class Time
104
{
82
{
(-)ns-3.18/src/core/model/random-variable-stream.h (-4 lines)
 Lines 2012-2021    Link Here 
2012
2012
2013
  /// The upper bound on values that can be returned by this RNG stream.
2013
  /// The upper bound on values that can be returned by this RNG stream.
2014
  double m_max;
2014
  double m_max;
2015
2016
  /// It's easier to work with the mode internally instead of the
2017
  /// mean.  They are related by the simple: mean = (min+max+mode)/3.
2018
  double m_mode;
2019
};
2015
};
2020
2016
2021
/**
2017
/**
(-)ns-3.18/src/core/test/attribute-test-suite.cc (+12 lines)
 Lines 200-205    Link Here 
200
    return tid;
200
    return tid;
201
  }
201
  }
202
202
203
  AttributeObjectTest (void)
204
  {
205
    NS_UNUSED (m_boolTest);
206
    NS_UNUSED (m_int16);
207
    NS_UNUSED (m_int16WithBounds);
208
    NS_UNUSED (m_uint8);
209
    NS_UNUSED (m_float);
210
    NS_UNUSED (m_enum);
211
  }
212
213
  virtual ~AttributeObjectTest (void) {};
214
203
  void AddToVector1 (void) { m_vector1.push_back (CreateObject<Derived> ()); }
215
  void AddToVector1 (void) { m_vector1.push_back (CreateObject<Derived> ()); }
204
  void AddToVector2 (void) { m_vector2.push_back (CreateObject<Derived> ()); }
216
  void AddToVector2 (void) { m_vector2.push_back (CreateObject<Derived> ()); }
205
217
(-)ns-3.18/src/core/test/hash-test-suite.cc (-12 lines)
 Lines 376-397    Link Here 
376
HashTestSuite::HashTestSuite ()
376
HashTestSuite::HashTestSuite ()
377
  : TestSuite ("hash", UNIT)
377
  : TestSuite ("hash", UNIT)
378
{
378
{
379
// The below tests fail for static optimized builds in gcc-4.4.3 (64-bit)
380
// This is likely due to a compiler bug (see also the strict alias
381
// warning issue mentioned in hash-murmur3.cc).  It does not impact
382
// most users of the code, so we silence the test failure while we
383
// continue to use gcc-4.4.3 (python bindings) for other purposes
384
//
385
// This code can be removed once gcc-4.4.3 is no longer supported
386
//
387
// Test for gcc 4.4.x
388
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
389
#if (GCC_VERSION != 404)
390
  AddTestCase (new DefaultHashTestCase, QUICK);
379
  AddTestCase (new DefaultHashTestCase, QUICK);
391
  AddTestCase (new Murmur3TestCase, QUICK);
380
  AddTestCase (new Murmur3TestCase, QUICK);
392
  AddTestCase (new Fnv1aTestCase, QUICK);
381
  AddTestCase (new Fnv1aTestCase, QUICK);
393
  AddTestCase (new IncrementalTestCase, QUICK);
382
  AddTestCase (new IncrementalTestCase, QUICK);
394
#endif
395
  AddTestCase (new Hash32FunctionPtrTestCase, QUICK);
383
  AddTestCase (new Hash32FunctionPtrTestCase, QUICK);
396
  AddTestCase (new Hash64FunctionPtrTestCase, QUICK);
384
  AddTestCase (new Hash64FunctionPtrTestCase, QUICK);
397
}
385
}
(-)ns-3.18/src/core/wscript (-3 / +13 lines)
 Lines 12-17    Link Here 
12
                         'with the configure command.'),
12
                         'with the configure command.'),
13
                   action="store_true", default=False,
13
                   action="store_true", default=False,
14
                   dest='int64x64_as_double')
14
                   dest='int64x64_as_double')
15
    opt.add_option('--disable-pthread',
16
                   help=('Whether to enable the use of POSIX threads'),
17
                   action="store_true", default=False,
18
                   dest='disable_pthread')
15
19
16
20
17
21
 Lines 62-70    Link Here 
62
   return 0;
66
   return 0;
63
}
67
}
64
"""
68
"""
65
    have_pthread = conf.check_nonfatal(header_name='pthread.h', define_name='HAVE_PTHREAD_H',
69
    if Options.options.disable_pthread:
66
                                       env=test_env, fragment=fragment,
70
        conf.report_optional_feature("Threading", "Threading Primitives",
67
                                       errmsg='Could not find pthread support (build/config.log for details)')
71
                                     False,
72
                                     "Disabled by user request (--disable-pthread)")
73
        have_pthread = False
74
    else:
75
        have_pthread = conf.check_nonfatal(header_name='pthread.h', define_name='HAVE_PTHREAD_H',
76
                                           env=test_env, fragment=fragment,
77
                                           errmsg='Could not find pthread support (build/config.log for details)')
68
    if have_pthread:
78
    if have_pthread:
69
        # darwin accepts -pthread but prints a warning saying it is ignored
79
        # darwin accepts -pthread but prints a warning saying it is ignored
70
        if Options.platform != 'darwin' and Options.platform != 'cygwin':
80
        if Options.platform != 'darwin' and Options.platform != 'cygwin':
(-)ns-3.18/src/create-module.py (-1 / +2 lines)
 Lines 331-337    Link Here 
331
        print >> sys.stderr, "Module %r already exists" % (modname,)
331
        print >> sys.stderr, "Module %r already exists" % (modname,)
332
        return 2
332
        return 2
333
333
334
    print "Creating module %r" % (modname,)
334
    print("Creating module %r, "
335
          "run './waf configure' to include it in the build" % (modname,))
335
336
336
    os.mkdir(moduledir)
337
    os.mkdir(moduledir)
337
    wscript = file(os.path.join(moduledir, "wscript"), "wt")
338
    wscript = file(os.path.join(moduledir, "wscript"), "wt")
(-)ns-3.18/src/csma/model/csma-net-device.cc (-1 lines)
 Lines 699-705    Link Here 
699
      trailer.EnableFcs (true);
699
      trailer.EnableFcs (true);
700
    }
700
    }
701
701
702
  trailer.CheckFcs (packet);
703
  bool crcGood = trailer.CheckFcs (packet);
702
  bool crcGood = trailer.CheckFcs (packet);
704
  if (!crcGood)
703
  if (!crcGood)
705
    {
704
    {
(-)ns-3.18/src/dsr/model/dsr-maintain-buff.h (-2 lines)
 Lines 204-211    Link Here 
204
  Ipv4Address m_dst;
204
  Ipv4Address m_dst;
205
  // / The data ack id
205
  // / The data ack id
206
  uint16_t m_ackId;
206
  uint16_t m_ackId;
207
  // / The ipv4 id
208
  uint16_t m_id;
209
  // / The segments left field
207
  // / The segments left field
210
  uint8_t m_segsLeft;
208
  uint8_t m_segsLeft;
211
  // / Expire time for queue entry
209
  // / Expire time for queue entry
(-)ns-3.18/src/dsr/model/dsr-option-header.cc (-3 / +2 lines)
 Lines 675-681    Link Here 
675
675
676
DsrOptionRerrHeader::DsrOptionRerrHeader ()
676
DsrOptionRerrHeader::DsrOptionRerrHeader ()
677
  : m_errorType (0),
677
  : m_errorType (0),
678
    m_reserved (0),
679
    m_salvage (0),
678
    m_salvage (0),
680
    m_errorLength (4)
679
    m_errorLength (4)
681
{
680
{
 Lines 797-803    Link Here 
797
}
796
}
798
797
799
DsrOptionRerrUnreachHeader::DsrOptionRerrUnreachHeader ()
798
DsrOptionRerrUnreachHeader::DsrOptionRerrUnreachHeader ()
800
  :    m_reserved (0),
799
  :
801
    m_salvage (0)
800
    m_salvage (0)
802
{
801
{
803
  SetType (3);
802
  SetType (3);
 Lines 925-931    Link Here 
925
}
924
}
926
925
927
DsrOptionRerrUnsupportHeader::DsrOptionRerrUnsupportHeader ()
926
DsrOptionRerrUnsupportHeader::DsrOptionRerrUnsupportHeader ()
928
  :    m_reserved (0),
927
  :
929
    m_salvage (0)
928
    m_salvage (0)
930
{
929
{
931
  SetType (3);
930
  SetType (3);
(-)ns-3.18/src/dsr/model/dsr-option-header.h (-40 lines)
 Lines 377-386    Link Here 
377
377
378
private:
378
private:
379
  /**
379
  /**
380
   * \brief The data length.
381
   */
382
  uint32_t m_dataLength;
383
  /**
384
   * \brief Identifier of the packet.
380
   * \brief Identifier of the packet.
385
   */
381
   */
386
  uint16_t m_identification;
382
  uint16_t m_identification;
 Lines 817-834    Link Here 
817
813
818
private:
814
private:
819
  /**
815
  /**
820
   * \brief option data length
821
   */
822
  uint8_t        m_optDataLen;
823
  /**
824
   * \brief The error type or route error option
816
   * \brief The error type or route error option
825
   */
817
   */
826
  uint8_t        m_errorType;
818
  uint8_t        m_errorType;
827
  /**
819
  /**
828
   * \brief The reserved field
829
   */
830
  uint8_t        m_reserved;
831
  /**
832
   * \brief The salavage field
820
   * \brief The salavage field
833
   */
821
   */
834
  uint8_t        m_salvage;
822
  uint8_t        m_salvage;
 Lines 980-997    Link Here 
980
968
981
private:
969
private:
982
  /**
970
  /**
983
   * \brief option data length
984
   */
985
  uint8_t        m_optDataLen;
986
  /**
987
   * \brief The error type or route error option
971
   * \brief The error type or route error option
988
   */
972
   */
989
  uint8_t        m_errorType;
973
  uint8_t        m_errorType;
990
  /**
974
  /**
991
   * \brief The reserved field
992
   */
993
  uint8_t        m_reserved;
994
  /**
995
   * \brief The salavage field
975
   * \brief The salavage field
996
   */
976
   */
997
  uint8_t        m_salvage;
977
  uint8_t        m_salvage;
 Lines 1011-1020    Link Here 
1011
   * \brief The original destination address
991
   * \brief The original destination address
1012
   */
992
   */
1013
  Ipv4Address    m_originalDst;
993
  Ipv4Address    m_originalDst;
1014
  /**
1015
   * \brief The specific error type
1016
   */
1017
  uint16_t       m_typeSpecific;
1018
};
994
};
1019
995
1020
/**
996
/**
 Lines 1138-1155    Link Here 
1138
1114
1139
private:
1115
private:
1140
  /**
1116
  /**
1141
   * \brief option data length
1142
   */
1143
  uint8_t        m_optDataLen;
1144
  /**
1145
   * \brief The error type or route error option
1117
   * \brief The error type or route error option
1146
   */
1118
   */
1147
  uint8_t        m_errorType;
1119
  uint8_t        m_errorType;
1148
  /**
1120
  /**
1149
   * \brief The reserved field
1150
   */
1151
  uint8_t        m_reserved;
1152
  /**
1153
   * \brief The salavage field
1121
   * \brief The salavage field
1154
   */
1122
   */
1155
  uint8_t        m_salvage;
1123
  uint8_t        m_salvage;
 Lines 1245-1254    Link Here 
1245
1213
1246
private:
1214
private:
1247
  /*
1215
  /*
1248
   * The option data length
1249
   */
1250
  uint8_t  m_optDataLen;
1251
  /*
1252
   * The identification field
1216
   * The identification field
1253
   */
1217
   */
1254
  uint16_t m_identification;
1218
  uint16_t m_identification;
 Lines 1356-1365    Link Here 
1356
1320
1357
private:
1321
private:
1358
  /**
1322
  /**
1359
   * \brief option data length
1360
   */
1361
  uint8_t m_optDataLen;
1362
  /**
1363
   * \brief identification field
1323
   * \brief identification field
1364
   */
1324
   */
1365
  uint16_t m_identification;
1325
  uint16_t m_identification;
(-)ns-3.18/src/dsr/model/dsr-options.h (-20 lines)
 Lines 431-440    Link Here 
431
   */
431
   */
432
  Ptr<dsr::RouteCache> m_routeCache;
432
  Ptr<dsr::RouteCache> m_routeCache;
433
  /**
433
  /**
434
   * \brief The length of the packet.
435
   */
436
  uint32_t m_length;
437
  /**
438
   * \brief The ip layer 3.
434
   * \brief The ip layer 3.
439
   */
435
   */
440
  Ptr<Ipv4> m_ipv4;
436
  Ptr<Ipv4> m_ipv4;
 Lines 489-498    Link Here 
489
485
490
private:
486
private:
491
  /**
487
  /**
492
   * \brief The length of the packet.
493
   */
494
  uint32_t m_length;
495
  /**
496
   * \brief The ip layer 3.
488
   * \brief The ip layer 3.
497
   */
489
   */
498
  Ptr<Ipv4> m_ipv4;
490
  Ptr<Ipv4> m_ipv4;
 Lines 562-571    Link Here 
562
   */
554
   */
563
  Ptr<dsr::RouteCache> m_routeCache;
555
  Ptr<dsr::RouteCache> m_routeCache;
564
  /**
556
  /**
565
   * \brief The length of the packet.
566
   */
567
  uint32_t m_length;
568
  /**
569
   * \brief The ipv4 layer 3.
557
   * \brief The ipv4 layer 3.
570
   */
558
   */
571
  Ptr<Ipv4> m_ipv4;
559
  Ptr<Ipv4> m_ipv4;
 Lines 624-633    Link Here 
624
   */
612
   */
625
  Ptr<dsr::RouteCache> m_routeCache;
613
  Ptr<dsr::RouteCache> m_routeCache;
626
  /**
614
  /**
627
   * \brief The length of the packet.
628
   */
629
  uint32_t m_length;
630
  /**
631
   * \brief The ipv4 layer 3.
615
   * \brief The ipv4 layer 3.
632
   */
616
   */
633
  Ptr<Ipv4> m_ipv4;
617
  Ptr<Ipv4> m_ipv4;
 Lines 686-695    Link Here 
686
   */
670
   */
687
  Ptr<dsr::RouteCache> m_routeCache;
671
  Ptr<dsr::RouteCache> m_routeCache;
688
  /**
672
  /**
689
   * \brief The length of the packet.
690
   */
691
  uint32_t m_length;
692
  /**
693
   * \brief The ipv4 layer 3.
673
   * \brief The ipv4 layer 3.
694
   */
674
   */
695
  Ptr<Ipv4> m_ipv4;
675
  Ptr<Ipv4> m_ipv4;
(-)ns-3.18/src/dsr/model/dsr-rreq-table.h (-3 lines)
 Lines 238-246    Link Here 
238
  bool FindSourceEntry (Ipv4Address src, Ipv4Address dst, uint16_t id);
238
  bool FindSourceEntry (Ipv4Address src, Ipv4Address dst, uint16_t id);
239
239
240
private:
240
private:
241
242
  // / The max # of requests to retransmit
243
  uint32_t MaxRequestRexmt;
244
  // / The max request period among requests
241
  // / The max request period among requests
245
  Time  MaxRequestPeriod;
242
  Time  MaxRequestPeriod;
246
  // / The original request period
243
  // / The original request period
(-)ns-3.18/src/energy/model/rv-battery-model.h (-1 lines)
 Lines 225-231    Link Here 
225
  std::vector<double> m_load;     // load profile
225
  std::vector<double> m_load;     // load profile
226
  std::vector<Time> m_timeStamps; // time stamps of load profile
226
  std::vector<Time> m_timeStamps; // time stamps of load profile
227
  Time m_lastSampleTime;
227
  Time m_lastSampleTime;
228
  uint64_t m_counter;
229
228
230
  int m_numOfTerms; // # of terms for infinite sum in battery level estimation
229
  int m_numOfTerms; // # of terms for infinite sum in battery level estimation
231
230
(-)ns-3.18/src/internet/model/ipv6-option.h (-6 lines)
 Lines 225-236    Link Here 
225
   * \return the processed size
225
   * \return the processed size
226
   */
226
   */
227
  virtual uint8_t Process (Ptr<Packet> packet, uint8_t offset, Ipv6Header const& ipv6Header, bool& isDropped);
227
  virtual uint8_t Process (Ptr<Packet> packet, uint8_t offset, Ipv6Header const& ipv6Header, bool& isDropped);
228
229
private:
230
  /**
231
   * \brief The length of the packet.
232
   */
233
  uint32_t m_length;
234
};
228
};
235
229
236
/**
230
/**
(-)ns-3.18/src/internet/model/tcp-header.h (-1 lines)
 Lines 173-179    Link Here 
173
  Address m_destination;
173
  Address m_destination;
174
  uint8_t m_protocol;
174
  uint8_t m_protocol;
175
175
176
  uint16_t m_initialChecksum;
177
  bool m_calcChecksum;
176
  bool m_calcChecksum;
178
  bool m_goodChecksum;
177
  bool m_goodChecksum;
179
};
178
};
(-)ns-3.18/src/lte/doc/Makefile (-1 / +1 lines)
 Lines 148-154    Link Here 
148
148
149
IMAGES = $(IMAGES_NOBUILD) $(IMAGES_BUILD)
149
IMAGES = $(IMAGES_NOBUILD) $(IMAGES_BUILD)
150
150
151
RESCALE = $(shell hg root)/utils/rescale-pdf.sh
151
RESCALE = ../../../utils/rescale-pdf.sh
152
152
153
%.eps : %.dia; $(DIA) -t eps $< -e $@
153
%.eps : %.dia; $(DIA) -t eps $< -e $@
154
%.png : %.dia; $(DIA) -t png $< -e $@
154
%.png : %.dia; $(DIA) -t png $< -e $@
(-)ns-3.18/src/lte/doc/source/lte-user.rst (-5 / +6 lines)
 Lines 367-373    Link Here 
367
367
368
PHY KPIs are distributed in seven different files, configurable through the attributes
368
PHY KPIs are distributed in seven different files, configurable through the attributes
369
369
370
  1. ``ns3::PhyStatsCalculator::RsrpSinrFilename``
370
  1. ``ns3::PhyStatsCalculator::DlRsrpSinrFilename``
371
  2. ``ns3::PhyStatsCalculator::UeSinrFilename``
371
  2. ``ns3::PhyStatsCalculator::UeSinrFilename``
372
  3. ``ns3::PhyStatsCalculator::InterferenceFilename``
372
  3. ``ns3::PhyStatsCalculator::InterferenceFilename``
373
  4. ``ns3::PhyStatsCalculator::DlTxOutputFilename``
373
  4. ``ns3::PhyStatsCalculator::DlTxOutputFilename``
 Lines 535-543    Link Here 
535
#. Mobility model selection::
535
#. Mobility model selection::
536
536
537
    MobilityHelper mobility;
537
    MobilityHelper mobility;
538
    mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); // use any mobility model
538
    mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); 
539
539
540
It is to be noted that any mobility model can be used; however, based on the information at the time of this writing, only the ones defined in the building module are designed for considering the constraints introduced by the buildings.
540
    It is to be noted that any mobility model can be used. 
541
541
542
#. Building creation::
542
#. Building creation::
543
543
 Lines 569-579    Link Here 
569
    mm0->SetPosition (Vector (5.0, 5.0, 1.5));
569
    mm0->SetPosition (Vector (5.0, 5.0, 1.5));
570
    mm1->SetPosition (Vector (30.0, 40.0, 1.5));
570
    mm1->SetPosition (Vector (30.0, 40.0, 1.5));
571
571
572
This installs the building mobility informations to the nodes and positions the node on the scenario. Note that, in this example, node 0 will be in the building, and node 1 will be out of the building. Note that this alone is not sufficient to setup the topology correctly. What is left to be done is to issue the following command after we have placed all nodes in the simulation::
572
#. Finalize the building and mobility model configuration::
573
573
574
    BuildingsHelper::MakeMobilityModelConsistent ();
574
    BuildingsHelper::MakeMobilityModelConsistent ();
575
575
576
This command will go through the lists of all nodes and of all buildings, determine for each user if it is indoor or outdoor, and if indoor it will also determine the building in which the user is located and the corresponding floor and number inside the building.
576
See the documentation of the *buildings* module for more detailed information.
577
577
578
578
PHY Error Model
579
PHY Error Model
579
---------------
580
---------------
(-)ns-3.18/src/lte/model/epc-x2-header.h (-2 lines)
 Lines 69-76    Link Here 
69
  };
69
  };
70
70
71
private:
71
private:
72
  uint32_t m_headerLength;
73
74
  uint8_t m_messageType;
72
  uint8_t m_messageType;
75
  uint8_t m_procedureCode;
73
  uint8_t m_procedureCode;
76
74
(-)ns-3.18/src/lte/model/fdbet-ff-mac-scheduler.h (-4 lines)
 Lines 64-73    Link Here 
64
64
65
/**
65
/**
66
 * \ingroup ff-api
66
 * \ingroup ff-api
67
 * \defgroup FF-API FdBetFfMacScheduler
68
 */
69
/**
70
 * \ingroup FdBetFfMacScheduler
71
 * \brief Implements the SCHED SAP and CSCHED SAP for a Frequency Domain Blind Equal Throughput scheduler
67
 * \brief Implements the SCHED SAP and CSCHED SAP for a Frequency Domain Blind Equal Throughput scheduler
72
 *
68
 *
73
 * This class implements the interface defined by the FfMacScheduler abstract class
69
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/fdmt-ff-mac-scheduler.h (-4 lines)
 Lines 56-65    Link Here 
56
56
57
/**
57
/**
58
 * \ingroup ff-api
58
 * \ingroup ff-api
59
 * \defgroup FF-API FdMtFfMacScheduler
60
 */
61
/**
62
 * \ingroup FdMtFfMacScheduler
63
 * \brief Implements the SCHED SAP and CSCHED SAP for a Frequency Domain Maximize Throughput scheduler
59
 * \brief Implements the SCHED SAP and CSCHED SAP for a Frequency Domain Maximize Throughput scheduler
64
 *
60
 *
65
 * This class implements the interface defined by the FfMacScheduler abstract class
61
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/fdtbfq-ff-mac-scheduler.cc (-1 lines)
 Lines 217-223    Link Here 
217
FdTbfqFfMacScheduler::FdTbfqFfMacScheduler ()
217
FdTbfqFfMacScheduler::FdTbfqFfMacScheduler ()
218
  :   m_cschedSapUser (0),
218
  :   m_cschedSapUser (0),
219
    m_schedSapUser (0),
219
    m_schedSapUser (0),
220
    m_timeWindow (99.0),
221
    m_nextRntiUl (0),
220
    m_nextRntiUl (0),
222
    bankSize (0)
221
    bankSize (0)
223
{
222
{
(-)ns-3.18/src/lte/model/fdtbfq-ff-mac-scheduler.h (-6 lines)
 Lines 71-80    Link Here 
71
71
72
/**
72
/**
73
 * \ingroup ff-api
73
 * \ingroup ff-api
74
 * \defgroup FF-API FdTbfqFfMacScheduler
75
 */
76
/**
77
 * \ingroup FdTbfqFfMacScheduler
78
 * \brief Implements the SCHED SAP and CSCHED SAP for a Frequency Domain Token Bank Fair Queue  scheduler
74
 * \brief Implements the SCHED SAP and CSCHED SAP for a Frequency Domain Token Bank Fair Queue  scheduler
79
 *
75
 *
80
 * This class implements the interface defined by the FfMacScheduler abstract class
76
 * This class implements the interface defined by the FfMacScheduler abstract class
 Lines 256-263    Link Here 
256
  FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
252
  FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
257
253
258
254
259
  double m_timeWindow;
260
261
  uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
255
  uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
262
256
263
  uint32_t m_cqiTimersThreshold; // # of TTIs for which a CQI canbe considered valid
257
  uint32_t m_cqiTimersThreshold; // # of TTIs for which a CQI canbe considered valid
(-)ns-3.18/src/lte/model/ff-mac-csched-sap.h (-4 lines)
 Lines 30-39    Link Here 
30
30
31
/**
31
/**
32
 * \ingroup ff-api
32
 * \ingroup ff-api
33
 * \defgroup FF-API FfMacCschedSap
34
 */
35
/**
36
 * \ingroup FfMacCschedSap
37
 * \brief Provides the CSCHED SAP
33
 * \brief Provides the CSCHED SAP
38
 *
34
 *
39
 * This abstract class defines the MAC Scheduler interface specified in the
35
 * This abstract class defines the MAC Scheduler interface specified in the
(-)ns-3.18/src/lte/model/ff-mac-sched-sap.h (-4 lines)
 Lines 31-40    Link Here 
31
31
32
/**
32
/**
33
 * \ingroup ff-api
33
 * \ingroup ff-api
34
 * \defgroup FF-API FfMacSchedSap
35
 */
36
/**
37
 * \ingroup FfMacSchedSap
38
 * \brief Provides the SCHED SAP
34
 * \brief Provides the SCHED SAP
39
 *
35
 *
40
 * This abstract class defines the MAC Scheduler interface specified in the
36
 * This abstract class defines the MAC Scheduler interface specified in the
(-)ns-3.18/src/lte/model/ff-mac-scheduler.h (+7 lines)
 Lines 35-40    Link Here 
35
class FfMacSchedSapProvider;
35
class FfMacSchedSapProvider;
36
36
37
/**
37
/**
38
 * \ingroup lte
39
 * \defgroup ff-api FF MAC Schedulers
40
 */
41
     
42
/**
43
 * \ingroup ff-api
44
 *
38
 * This abstract base class identifies the interface by means of which
45
 * This abstract base class identifies the interface by means of which
39
 * the helper object can plug on the MAC a scheduler implementation based on the
46
 * the helper object can plug on the MAC a scheduler implementation based on the
40
 * FF MAC Sched API.
47
 * FF MAC Sched API.
(-)ns-3.18/src/lte/model/lte-mi-error-model.cc (-1 lines)
 Lines 31-37    Link Here 
31
31
32
32
33
#include <list>
33
#include <list>
34
#include <tr1/functional>
35
#include <vector>
34
#include <vector>
36
#include <ns3/log.h>
35
#include <ns3/log.h>
37
#include <ns3/pointer.h>
36
#include <ns3/pointer.h>
(-)ns-3.18/src/lte/model/lte-rrc-header.cc (+7 lines)
 Lines 2224-2229    Link Here 
2224
}
2224
}
2225
2225
2226
void
2226
void
2227
RrcAsn1Header::Print (std::ostream &os) const
2228
{
2229
  NS_LOG_FUNCTION (this << &os);
2230
  NS_FATAL_ERROR ("RrcAsn1Header Print() function must also specify LteRrcSap::RadioResourceConfigDedicated as a second argument");
2231
}
2232
2233
void
2227
RrcAsn1Header::Print (std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const
2234
RrcAsn1Header::Print (std::ostream &os, LteRrcSap::RadioResourceConfigDedicated radioResourceConfigDedicated) const
2228
{
2235
{
2229
  os << "   srbToAddModList: " << std::endl;
2236
  os << "   srbToAddModList: " << std::endl;
(-)ns-3.18/src/lte/model/lte-rrc-header.h (+1 lines)
 Lines 82-87    Link Here 
82
  Buffer::Iterator DeserializeQoffsetRange (int8_t * qOffsetRange, Buffer::Iterator bIterator);
82
  Buffer::Iterator DeserializeQoffsetRange (int8_t * qOffsetRange, Buffer::Iterator bIterator);
83
  Buffer::Iterator DeserializeThresholdEutra (LteRrcSap::ThresholdEutra * thresholdEutra, Buffer::Iterator bIterator);
83
  Buffer::Iterator DeserializeThresholdEutra (LteRrcSap::ThresholdEutra * thresholdEutra, Buffer::Iterator bIterator);
84
84
85
  void Print (std::ostream &os) const;
85
  /**
86
  /**
86
   * This function prints RadioResourceConfigDedicated IE, for debugging purposes.
87
   * This function prints RadioResourceConfigDedicated IE, for debugging purposes.
87
   * @param os The output stream to use (i.e. std::cout)
88
   * @param os The output stream to use (i.e. std::cout)
(-)ns-3.18/src/lte/model/pf-ff-mac-scheduler.h (-4 lines)
 Lines 63-72    Link Here 
63
63
64
/**
64
/**
65
 * \ingroup ff-api
65
 * \ingroup ff-api
66
 * \defgroup FF-API PfFfMacScheduler
67
 */
68
/**
69
 * \ingroup PfFfMacScheduler
70
 * \brief Implements the SCHED SAP and CSCHED SAP for a Proportional Fair scheduler
66
 * \brief Implements the SCHED SAP and CSCHED SAP for a Proportional Fair scheduler
71
 *
67
 *
72
 * This class implements the interface defined by the FfMacScheduler abstract class
68
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/pss-ff-mac-scheduler.h (-4 lines)
 Lines 72-81    Link Here 
72
72
73
/**
73
/**
74
 * \ingroup ff-api
74
 * \ingroup ff-api
75
 * \defgroup FF-API PssFfMacScheduler
76
 */
77
/**
78
 * \ingroup PssFfMacScheduler
79
 * \brief Implements the SCHED SAP and CSCHED SAP for a Priority Set scheduler
75
 * \brief Implements the SCHED SAP and CSCHED SAP for a Priority Set scheduler
80
 *
76
 *
81
 * This class implements the interface defined by the FfMacScheduler abstract class
77
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/rr-ff-mac-scheduler.cc (-1 / +2 lines)
 Lines 23-28    Link Here 
23
#include <ns3/math.h>
23
#include <ns3/math.h>
24
#include <cfloat>
24
#include <cfloat>
25
#include <set>
25
#include <set>
26
#include <climits>
26
27
27
#include <ns3/lte-amc.h>
28
#include <ns3/lte-amc.h>
28
#include <ns3/rr-ff-mac-scheduler.h>
29
#include <ns3/rr-ff-mac-scheduler.h>
 Lines 978-984    Link Here 
978
  // Divide the resource equally among the active users according to
979
  // Divide the resource equally among the active users according to
979
  // Resource allocation type 0 (see sec 7.1.6.1 of 36.213)
980
  // Resource allocation type 0 (see sec 7.1.6.1 of 36.213)
980
981
981
  int rbgPerTb = (nTbs > 0) ? ((rbgNum - rbgAllocatedNum) / nTbs) : DBL_MAX;
982
  int rbgPerTb = (nTbs > 0) ? ((rbgNum - rbgAllocatedNum) / nTbs) : INT_MAX;
982
  NS_LOG_INFO (this << " Flows to be transmitted " << nflows << " rbgPerTb " << rbgPerTb);
983
  NS_LOG_INFO (this << " Flows to be transmitted " << nflows << " rbgPerTb " << rbgPerTb);
983
  if (rbgPerTb == 0)
984
  if (rbgPerTb == 0)
984
    {
985
    {
(-)ns-3.18/src/lte/model/rr-ff-mac-scheduler.h (-4 lines)
 Lines 50-59    Link Here 
50
50
51
/**
51
/**
52
 * \ingroup ff-api
52
 * \ingroup ff-api
53
 * \defgroup FF-API RrFfMacScheduler
54
 */
55
/**
56
 * \ingroup RrFfMacScheduler
57
 * \brief Implements the SCHED SAP and CSCHED SAP for a Round Robin scheduler
53
 * \brief Implements the SCHED SAP and CSCHED SAP for a Round Robin scheduler
58
 *
54
 *
59
 * This class implements the interface defined by the FfMacScheduler abstract class
55
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/tdbet-ff-mac-scheduler.h (-4 lines)
 Lines 64-73    Link Here 
64
64
65
/**
65
/**
66
 * \ingroup ff-api
66
 * \ingroup ff-api
67
 * \defgroup FF-API TdBetFfMacScheduler
68
 */
69
/**
70
 * \ingroup TdBetFfMacScheduler
71
 * \brief Implements the SCHED SAP and CSCHED SAP for a Time Domain Blind Equal Throughput scheduler
67
 * \brief Implements the SCHED SAP and CSCHED SAP for a Time Domain Blind Equal Throughput scheduler
72
 *
68
 *
73
 * This class implements the interface defined by the FfMacScheduler abstract class
69
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/tdmt-ff-mac-scheduler.h (-4 lines)
 Lines 56-65    Link Here 
56
56
57
/**
57
/**
58
 * \ingroup ff-api
58
 * \ingroup ff-api
59
 * \defgroup FF-API TdMtFfMacScheduler
60
 */
61
/**
62
 * \ingroup TdMtFfMacScheduler
63
 * \brief Implements the SCHED SAP and CSCHED SAP for a Time Domain Maximize Throughput scheduler
59
 * \brief Implements the SCHED SAP and CSCHED SAP for a Time Domain Maximize Throughput scheduler
64
 *
60
 *
65
 * This class implements the interface defined by the FfMacScheduler abstract class
61
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/model/tdtbfq-ff-mac-scheduler.cc (-1 lines)
 Lines 217-223    Link Here 
217
TdTbfqFfMacScheduler::TdTbfqFfMacScheduler ()
217
TdTbfqFfMacScheduler::TdTbfqFfMacScheduler ()
218
  :   m_cschedSapUser (0),
218
  :   m_cschedSapUser (0),
219
    m_schedSapUser (0),
219
    m_schedSapUser (0),
220
    m_timeWindow (99.0),
221
    m_nextRntiUl (0),
220
    m_nextRntiUl (0),
222
    bankSize (0)
221
    bankSize (0)
223
{
222
{
(-)ns-3.18/src/lte/model/tdtbfq-ff-mac-scheduler.h (-6 lines)
 Lines 71-80    Link Here 
71
71
72
/**
72
/**
73
 * \ingroup ff-api
73
 * \ingroup ff-api
74
 * \defgroup FF-API TdTbfqFfMacScheduler
75
 */
76
/**
77
 * \ingroup TdTbfqFfMacScheduler
78
 * \brief Implements the SCHED SAP and CSCHED SAP for a Time Domain Token Bank Fair Queue  scheduler
74
 * \brief Implements the SCHED SAP and CSCHED SAP for a Time Domain Token Bank Fair Queue  scheduler
79
 *
75
 *
80
 * This class implements the interface defined by the FfMacScheduler abstract class
76
 * This class implements the interface defined by the FfMacScheduler abstract class
 Lines 256-263    Link Here 
256
  FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
252
  FfMacCschedSapProvider::CschedCellConfigReqParameters m_cschedCellConfig;
257
253
258
254
259
  double m_timeWindow;
260
261
  uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
255
  uint16_t m_nextRntiUl; // RNTI of the next user to be served next scheduling in UL
262
256
263
  uint32_t m_cqiTimersThreshold; // # of TTIs for which a CQI canbe considered valid
257
  uint32_t m_cqiTimersThreshold; // # of TTIs for which a CQI canbe considered valid
(-)ns-3.18/src/lte/model/tta-ff-mac-scheduler.h (-4 lines)
 Lines 56-65    Link Here 
56
56
57
/**
57
/**
58
 * \ingroup ff-api
58
 * \ingroup ff-api
59
 * \defgroup FF-API TtaFfMacScheduler
60
 */
61
/**
62
 * \ingroup TtaFfMacScheduler
63
 * \brief Implements the SCHED SAP and CSCHED SAP for a Throughput to Average scheduler
59
 * \brief Implements the SCHED SAP and CSCHED SAP for a Throughput to Average scheduler
64
 *
60
 *
65
 * This class implements the interface defined by the FfMacScheduler abstract class
61
 * This class implements the interface defined by the FfMacScheduler abstract class
(-)ns-3.18/src/lte/test/lte-test-fdbet-ff-mac-scheduler.cc (-22 / +21 lines)
 Lines 77-86    Link Here 
77
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
77
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
78
  // after the patch enforcing min 3 PRBs per UE:
78
  // after the patch enforcing min 3 PRBs per UE:
79
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
79
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
80
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,0,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
80
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,0,0,749000,749000, errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,0,749000,749000, errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,0,0,373000,373000, errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,0,373000,373000, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,0,0,185000,184670, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,0,185000,184670, errorModel), TestCase::EXTENSIVE);
84
84
85
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
85
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
86
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec
86
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec
 Lines 93-102    Link Here 
93
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
93
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
94
  // after the patch enforcing min 3 PRBs per UE:
94
  // after the patch enforcing min 3 PRBs per UE:
95
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
95
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
96
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,0,4800,1383000,807000, errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,4800,1383000,807000, errorModel), TestCase::EXTENSIVE);
97
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,0,4800,469000,253000, errorModel), TestCase::EXTENSIVE);
97
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,4800,469000,253000, errorModel), TestCase::EXTENSIVE);
98
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,0,4800,233500,125000, errorModel), TestCase::EXTENSIVE);
98
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,4800,233500,125000, errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,0,4800,113000,62000, errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,4800,113000,62000, errorModel), TestCase::EXTENSIVE);
100
100
101
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
101
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
102
  // 1 user -> 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec
102
  // 1 user -> 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec
 Lines 108-117    Link Here 
108
  // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 bytes/sec
108
  // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 bytes/sec
109
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
109
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
110
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
110
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
111
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,0,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
111
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
112
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,0,6000,389000,201000,errorModel), TestCase::EXTENSIVE);
112
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,6000,389000,201000,errorModel), TestCase::EXTENSIVE);
113
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,0,6000,193000,97000,errorModel), TestCase::EXTENSIVE);
113
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,6000,193000,97000,errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,0,6000,97000,48667,errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,6000,97000,48667,errorModel), TestCase::EXTENSIVE);
115
115
116
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
116
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
117
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec
117
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec
 Lines 124-133    Link Here 
124
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
124
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
125
  // after the patch enforcing min 3 PRBs per UE:
125
  // after the patch enforcing min 3 PRBs per UE:
126
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
126
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
127
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,0,10000,775000,421000,errorModel), TestCase::EXTENSIVE);
127
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,10000,775000,421000,errorModel), TestCase::EXTENSIVE);
128
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,0,10000,253000,137000,errorModel), TestCase::EXTENSIVE);
128
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,10000,253000,137000,errorModel), TestCase::EXTENSIVE);
129
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,0,10000,125000,67000,errorModel), TestCase::EXTENSIVE);
129
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,10000,125000,67000,errorModel), TestCase::EXTENSIVE);
130
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,0,10000,61000,32667,errorModel), TestCase::EXTENSIVE);
130
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,10000,61000,32667,errorModel), TestCase::EXTENSIVE);
131
131
132
  // DOWNLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
132
  // DOWNLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
133
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
133
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
 Lines 140-149    Link Here 
140
  // 6 users -> 4 PRB at Itbs 2 -> 22 -> 22000 bytes/sec
140
  // 6 users -> 4 PRB at Itbs 2 -> 22 -> 22000 bytes/sec
141
  // after the patch enforcing min 3 PRBs per UE:
141
  // after the patch enforcing min 3 PRBs per UE:
142
  // 12 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/12 UE/TTI -> 12000 bytes/sec
142
  // 12 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/12 UE/TTI -> 12000 bytes/sec
143
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
143
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
144
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,0,20000,137000,41000,errorModel), TestCase::EXTENSIVE);
144
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (3,20000,137000,41000,errorModel), TestCase::EXTENSIVE);
145
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,0,20000,67000,22000,errorModel), TestCase::EXTENSIVE);
145
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (6,20000,67000,22000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,0,20000,32000,12000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaFdBetFfMacSchedulerTestCase1 (12,20000,32000,12000,errorModel), TestCase::EXTENSIVE);
147
147
148
  // Test Case 2: fairness check
148
  // Test Case 2: fairness check
149
149
 Lines 182-191    Link Here 
182
  return oss.str ();
182
  return oss.str ();
183
}
183
}
184
184
185
LenaFdBetFfMacSchedulerTestCase1::LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
185
LenaFdBetFfMacSchedulerTestCase1::LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
186
  : TestCase (BuildNameString (nUser, dist)),
186
  : TestCase (BuildNameString (nUser, dist)),
187
    m_nUser (nUser),
187
    m_nUser (nUser),
188
    m_nLc (nLc),
189
    m_dist (dist),
188
    m_dist (dist),
190
    m_thrRefDl (thrRefDl),
189
    m_thrRefDl (thrRefDl),
191
    m_thrRefUl (thrRefUl),
190
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-fdbet-ff-mac-scheduler.h (-2 / +1 lines)
 Lines 42-55    Link Here 
42
class LenaFdBetFfMacSchedulerTestCase1 : public TestCase
42
class LenaFdBetFfMacSchedulerTestCase1 : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
45
  LenaFdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
46
  virtual ~LenaFdBetFfMacSchedulerTestCase1 ();
46
  virtual ~LenaFdBetFfMacSchedulerTestCase1 ();
47
47
48
private:
48
private:
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
50
  virtual void DoRun (void);
50
  virtual void DoRun (void);
51
  uint16_t m_nUser;
51
  uint16_t m_nUser;
52
  uint16_t m_nLc;
53
  uint16_t m_dist;
52
  uint16_t m_dist;
54
  double m_thrRefDl;
53
  double m_thrRefDl;
55
  double m_thrRefUl;
54
  double m_thrRefUl;
(-)ns-3.18/src/lte/test/lte-test-fdmt-ff-mac-scheduler.cc (-22 / +21 lines)
 Lines 79-88    Link Here 
79
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
79
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
80
  // after the patch enforcing min 3 PRBs per UE:
80
  // after the patch enforcing min 3 PRBs per UE:
81
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
81
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
82
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,0,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,0,0,2196000,749000,errorModel), TestCase::QUICK);
83
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,0,2196000,749000,errorModel), TestCase::QUICK);
84
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,0,0,2196000,373000, errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,0,2196000,373000, errorModel), TestCase::EXTENSIVE);
85
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,0,0,2196000,184670, errorModel), TestCase::EXTENSIVE);
85
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,0,2196000,184670, errorModel), TestCase::EXTENSIVE);
86
86
87
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
87
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
88
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 byte/secfor one UE; 0 bytes/sec for other UEs
88
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 byte/secfor one UE; 0 bytes/sec for other UEs
 Lines 95-104    Link Here 
95
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
95
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
96
  // after the patch enforcing min 3 PRBs per UE:
96
  // after the patch enforcing min 3 PRBs per UE:
97
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
97
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
98
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,0,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
98
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,0,4800,1383000,253000,errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,4800,1383000,253000,errorModel), TestCase::EXTENSIVE);
100
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,0,4800,1383000,125000,errorModel), TestCase::EXTENSIVE);
100
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,4800,1383000,125000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,0,4800,1383000,62000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,4800,1383000,62000,errorModel), TestCase::EXTENSIVE);
102
102
103
103
104
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
104
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
 Lines 112-121    Link Here 
112
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
112
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
113
  // after the patch enforcing min 3 PRBs per UE:
113
  // after the patch enforcing min 3 PRBs per UE:
114
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
114
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
115
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,0,6000,1191000,621000, errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,6000,1191000,621000, errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,0,6000,1191000,201000, errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,6000,1191000,201000, errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,0,6000,1191000,97000, errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,6000,1191000,97000, errorModel), TestCase::EXTENSIVE);
118
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,0,6000,1191000,48667, errorModel), TestCase::EXTENSIVE);
118
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,6000,1191000,48667, errorModel), TestCase::EXTENSIVE);
119
119
120
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
120
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
121
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec for one UE; 0 bytes/sec for other UEs
121
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec for one UE; 0 bytes/sec for other UEs
 Lines 128-137    Link Here 
128
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
128
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
129
  // after the patch enforcing min 3 PRBs per UE:
129
  // after the patch enforcing min 3 PRBs per UE:
130
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
130
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
131
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,0,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
131
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
132
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,0,10000,775000,137000,errorModel), TestCase::EXTENSIVE);
132
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,10000,775000,137000,errorModel), TestCase::EXTENSIVE);
133
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,0,10000,775000,67000,errorModel), TestCase::EXTENSIVE);
133
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,10000,775000,67000,errorModel), TestCase::EXTENSIVE);
134
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,0,10000,775000,32667,errorModel), TestCase::EXTENSIVE);
134
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,10000,775000,32667,errorModel), TestCase::EXTENSIVE);
135
 
135
 
136
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
136
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
137
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec for one UE; 0 bytes/sec for other UEs
137
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec for one UE; 0 bytes/sec for other UEs
 Lines 144-153    Link Here 
144
  // 6 users -> 4 PRB at Itbs 2 -> 32 -> 22000 bytes/sec
144
  // 6 users -> 4 PRB at Itbs 2 -> 32 -> 22000 bytes/sec
145
  // after the patch enforcing min 3 PRBs per UE:
145
  // after the patch enforcing min 3 PRBs per UE:
146
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
146
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
147
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
147
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
148
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,0,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
148
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (3,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,0,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (6,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
150
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,0,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
150
  AddTestCase (new LenaFdMtFfMacSchedulerTestCase (12,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
151
}
151
}
152
152
153
static LenaTestFdMtFfMacSchedulerSuite lenaTestFdMtFfMacSchedulerSuite;
153
static LenaTestFdMtFfMacSchedulerSuite lenaTestFdMtFfMacSchedulerSuite;
 Lines 163-172    Link Here 
163
  return oss.str ();
163
  return oss.str ();
164
}
164
}
165
165
166
LenaFdMtFfMacSchedulerTestCase::LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
166
LenaFdMtFfMacSchedulerTestCase::LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
167
  : TestCase (BuildNameString (nUser, dist)),
167
  : TestCase (BuildNameString (nUser, dist)),
168
    m_nUser (nUser),
168
    m_nUser (nUser),
169
    m_nLc (nLc),
170
    m_dist (dist),
169
    m_dist (dist),
171
    m_thrRefDl (thrRefDl),
170
    m_thrRefDl (thrRefDl),
172
    m_thrRefUl (thrRefUl),
171
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-fdmt-ff-mac-scheduler.h (-1 / +1 lines)
 Lines 42-48    Link Here 
42
class LenaFdMtFfMacSchedulerTestCase : public TestCase
42
class LenaFdMtFfMacSchedulerTestCase : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
45
  LenaFdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
46
  virtual ~LenaFdMtFfMacSchedulerTestCase ();
46
  virtual ~LenaFdMtFfMacSchedulerTestCase ();
47
47
48
private:
48
private:
(-)ns-3.18/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.cc (-18 / +17 lines)
 Lines 91-100    Link Here 
91
  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
91
  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
92
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
92
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
93
  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
93
  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
94
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
94
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
95
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
95
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
97
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,0,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
97
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
98
98
99
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
99
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
100
  // Traffic info
100
  // Traffic info
 Lines 111-120    Link Here 
111
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
111
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
112
  // after the patch enforcing min 3 PRBs per UE:
112
  // after the patch enforcing min 3 PRBs per UE:
113
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
113
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
114
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,0,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,0,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,0,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
117
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,0,4800,75250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
117
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,4800,75250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
118
118
119
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
119
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
120
  // Traffic info
120
  // Traffic info
 Lines 132-141    Link Here 
132
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
132
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
133
  // after the patch enforcing min 3 PRBs per UE:
133
  // after the patch enforcing min 3 PRBs per UE:
134
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
134
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
135
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,0,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
135
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,0,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
137
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,0,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
137
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
138
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,0,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
138
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
139
139
140
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
140
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
141
  // Traffic info
141
  // Traffic info
 Lines 152-161    Link Here 
152
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
152
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
153
  // after the patch enforcing min 3 PRBs per UE:
153
  // after the patch enforcing min 3 PRBs per UE:
154
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
154
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
155
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,0,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
155
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (1,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
156
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,0,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
156
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (3,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,0,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
158
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,0,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
158
  //AddTestCase (new LenaFdTbfqFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
159
159
160
  // Test Case 2: homogeneous flow test in FDTBFQ (different distance)
160
  // Test Case 2: homogeneous flow test in FDTBFQ (different distance)
161
  // Traffic1 info
161
  // Traffic1 info
 Lines 237-246    Link Here 
237
}
237
}
238
238
239
239
240
LenaFdTbfqFfMacSchedulerTestCase1::LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
240
LenaFdTbfqFfMacSchedulerTestCase1::LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
241
  : TestCase (BuildNameString (nUser, dist)),
241
  : TestCase (BuildNameString (nUser, dist)),
242
    m_nUser (nUser),
242
    m_nUser (nUser),
243
    m_nLc (nLc),
244
    m_dist (dist),
243
    m_dist (dist),
245
    m_packetSize (packetSize),
244
    m_packetSize (packetSize),
246
    m_interval (interval),
245
    m_interval (interval),
(-)ns-3.18/src/lte/test/lte-test-fdtbfq-ff-mac-scheduler.h (-2 / +1 lines)
 Lines 42-55    Link Here 
42
class LenaFdTbfqFfMacSchedulerTestCase1 : public TestCase
42
class LenaFdTbfqFfMacSchedulerTestCase1 : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
45
  LenaFdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
46
  virtual ~LenaFdTbfqFfMacSchedulerTestCase1 ();
46
  virtual ~LenaFdTbfqFfMacSchedulerTestCase1 ();
47
47
48
private:
48
private:
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
50
  virtual void DoRun (void);
50
  virtual void DoRun (void);
51
  uint16_t m_nUser;
51
  uint16_t m_nUser;
52
  uint16_t m_nLc;
53
  uint16_t m_dist;
52
  uint16_t m_dist;
54
  uint16_t m_packetSize;  // byte
53
  uint16_t m_packetSize;  // byte
55
  uint16_t m_interval;    // ms
54
  uint16_t m_interval;    // ms
(-)ns-3.18/src/lte/test/lte-test-harq.cc (-4 / +3 lines)
 Lines 82-99    Link Here 
82
static LenaTestHarqSuite lenaTestHarqSuite;
82
static LenaTestHarqSuite lenaTestHarqSuite;
83
83
84
std::string
84
std::string
85
LenaHarqTestCase::BuildNameString (uint16_t nUser, uint16_t dist)
85
LenaHarqTestCase::BuildNameString (uint16_t nUser, uint16_t dist, uint16_t tbSize)
86
{
86
{
87
  std::ostringstream oss;
87
  std::ostringstream oss;
88
  oss << nUser << " UEs, distance " << dist << " m";
88
  oss << nUser << " UEs, distance " << dist << " m, TB size " << tbSize;
89
  return oss.str ();
89
  return oss.str ();
90
}
90
}
91
91
92
LenaHarqTestCase::LenaHarqTestCase (uint16_t nUser, uint16_t dist, uint16_t tbSize, double amcBer, double thrRef)
92
LenaHarqTestCase::LenaHarqTestCase (uint16_t nUser, uint16_t dist, uint16_t tbSize, double amcBer, double thrRef)
93
  : TestCase (BuildNameString (nUser, dist)),
93
  : TestCase (BuildNameString (nUser, dist, tbSize)),
94
    m_nUser (nUser),
94
    m_nUser (nUser),
95
    m_dist (dist),
95
    m_dist (dist),
96
    m_tbSize (tbSize),
97
    m_amcBer (amcBer),
96
    m_amcBer (amcBer),
98
    m_throughputRef (thrRef)
97
    m_throughputRef (thrRef)
99
{
98
{
(-)ns-3.18/src/lte/test/lte-test-harq.h (-2 / +1 lines)
 Lines 43-52    Link Here 
43
43
44
private:
44
private:
45
  virtual void DoRun (void);
45
  virtual void DoRun (void);
46
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
46
  static std::string BuildNameString (uint16_t nUser, uint16_t dist, uint16_t tbSize);
47
  uint16_t m_nUser;
47
  uint16_t m_nUser;
48
  uint16_t m_dist;
48
  uint16_t m_dist;
49
  uint16_t m_tbSize;
50
  double m_amcBer;
49
  double m_amcBer;
51
  double m_throughputRef;
50
  double m_throughputRef;
52
51
(-)ns-3.18/src/lte/test/lte-test-interference.cc (-2 lines)
 Lines 98-105    Link Here 
98
    m_d2 (d2),
98
    m_d2 (d2),
99
    m_dlSinrDb (10 * std::log10 (dlSinr)),
99
    m_dlSinrDb (10 * std::log10 (dlSinr)),
100
    m_ulSinrDb (10 * std::log10 (ulSinr)),
100
    m_ulSinrDb (10 * std::log10 (ulSinr)),
101
    m_dlSe (dlSe),
102
    m_ulSe (ulSe),
103
    m_dlMcs (dlMcs),
101
    m_dlMcs (dlMcs),
104
    m_ulMcs (ulMcs)
102
    m_ulMcs (ulMcs)
105
{
103
{
(-)ns-3.18/src/lte/test/lte-test-interference.h (-2 lines)
 Lines 58-65    Link Here 
58
  double m_d2;
58
  double m_d2;
59
  double m_dlSinrDb;
59
  double m_dlSinrDb;
60
  double m_ulSinrDb;
60
  double m_ulSinrDb;
61
  double m_dlSe;
62
  double m_ulSe;
63
  uint16_t m_dlMcs;
61
  uint16_t m_dlMcs;
64
  uint16_t m_ulMcs;
62
  uint16_t m_ulMcs;
65
};
63
};
(-)ns-3.18/src/lte/test/lte-test-mimo.h (-2 lines)
 Lines 43-50    Link Here 
43
  void GetRlcBufferSample (Ptr<RadioBearerStatsCalculator> rlcStats, uint64_t imsi, uint8_t rnti);
43
  void GetRlcBufferSample (Ptr<RadioBearerStatsCalculator> rlcStats, uint64_t imsi, uint8_t rnti);
44
  
44
  
45
  static std::string BuildNameString (uint16_t dist, std::string schedulerType, bool useIdealRrc);
45
  static std::string BuildNameString (uint16_t dist, std::string schedulerType, bool useIdealRrc);
46
  uint16_t m_nUser;
47
  uint16_t m_nLc;
48
  uint16_t m_dist;
46
  uint16_t m_dist;
49
  std::vector<uint32_t> m_estThrDl;
47
  std::vector<uint32_t> m_estThrDl;
50
  std::string m_schedulerType;
48
  std::string m_schedulerType;
(-)ns-3.18/src/lte/test/lte-test-pf-ff-mac-scheduler.cc (-27 / +26 lines)
 Lines 77-87    Link Here 
77
  // after the patch enforcing min 3 PRBs per UE:
77
  // after the patch enforcing min 3 PRBs per UE:
78
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
78
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
79
  // 15 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/15 UE/TTI -> 147730 bytes/sec
79
  // 15 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/15 UE/TTI -> 147730 bytes/sec
80
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,0,2196000,2292000,errorModel), TestCase::EXTENSIVE);
80
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,2196000,2292000,errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,0,732000,749000,errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,732000,749000,errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,0,366000,373000,errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,366000,373000,errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,0,183000,184670,errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,183000,184670,errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,0,146400,147730,errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,146400,147730,errorModel), TestCase::EXTENSIVE);
85
  
85
  
86
 
86
 
87
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
87
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
 Lines 97-107    Link Here 
97
  // after the patch enforcing min 3 PRBs per UE:
97
  // after the patch enforcing min 3 PRBs per UE:
98
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
98
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
99
  // 15 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/15 UE/TTI  -> 49600 bytes/sec
99
  // 15 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/15 UE/TTI  -> 49600 bytes/sec
100
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
100
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,4800,461000,253000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,4800,461000,253000,errorModel), TestCase::EXTENSIVE);
102
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,4800,230500,125000,errorModel), TestCase::EXTENSIVE);
102
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,4800,230500,125000,errorModel), TestCase::EXTENSIVE);
103
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,4800,115250,62000,errorModel), TestCase::EXTENSIVE);
103
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,4800,115250,62000,errorModel), TestCase::EXTENSIVE);
104
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,4800,92200,49600,errorModel), TestCase::EXTENSIVE);
104
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,4800,92200,49600,errorModel), TestCase::EXTENSIVE);
105
  
105
  
106
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
106
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
107
  // 1 user -> 24 PRB at Itbs 20 -> 1191 -> 1191000 bytes/sec
107
  // 1 user -> 24 PRB at Itbs 20 -> 1191 -> 1191000 bytes/sec
 Lines 116-126    Link Here 
116
  // after the patch enforcing min 3 PRBs per UE:
116
  // after the patch enforcing min 3 PRBs per UE:
117
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
117
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
118
  // 15 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/15 UE/TTI -> 38993 bytes/sec
118
  // 15 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/15 UE/TTI -> 38993 bytes/sec
119
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
119
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
120
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,6000,397000,201000,errorModel), TestCase::EXTENSIVE);
120
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,6000,397000,201000,errorModel), TestCase::EXTENSIVE);
121
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,6000,198500,97000,errorModel), TestCase::EXTENSIVE);
121
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,6000,198500,97000,errorModel), TestCase::EXTENSIVE);
122
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,6000,99250,48667,errorModel), TestCase::EXTENSIVE);
122
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,6000,99250,48667,errorModel), TestCase::EXTENSIVE);
123
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,6000,79400,38993,errorModel), TestCase::EXTENSIVE);
123
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,6000,79400,38993,errorModel), TestCase::EXTENSIVE);
124
124
125
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
125
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
126
  // 1 user -> 24 PRB at Itbs 13 -> 871 -> 775000 bytes/sec
126
  // 1 user -> 24 PRB at Itbs 13 -> 871 -> 775000 bytes/sec
 Lines 135-145    Link Here 
135
  // after the patch enforcing min 3 PRBs per UE:
135
  // after the patch enforcing min 3 PRBs per UE:
136
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
136
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
137
  // 15 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/15 UE/TTI -> 26133 bytes/sec
137
  // 15 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/15 UE/TTI -> 26133 bytes/sec
138
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
138
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
139
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,10000,258333,137000,errorModel), TestCase::EXTENSIVE);
139
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,10000,258333,137000,errorModel), TestCase::EXTENSIVE);
140
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,10000,129167,67000,errorModel), TestCase::EXTENSIVE);
140
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,10000,129167,67000,errorModel), TestCase::EXTENSIVE);
141
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,10000,64583,32667,errorModel), TestCase::EXTENSIVE);
141
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,10000,64583,32667,errorModel), TestCase::EXTENSIVE);
142
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,10000,51667,26133,errorModel), TestCase::EXTENSIVE);
142
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,10000,51667,26133,errorModel), TestCase::EXTENSIVE);
143
 
143
 
144
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
144
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
145
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
145
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
 Lines 154-164    Link Here 
154
  // after the patch enforcing min 3 PRBs per UE:
154
  // after the patch enforcing min 3 PRBs per UE:
155
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
155
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
156
  // 15 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/15 UE/TTI -> 9600 bytes/sec
156
  // 15 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/15 UE/TTI -> 9600 bytes/sec
157
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
158
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,0,20000,140333,41000,errorModel), TestCase::EXTENSIVE);
158
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (3,20000,140333,41000,errorModel), TestCase::EXTENSIVE);
159
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,0,20000,70167,22000,errorModel), TestCase::EXTENSIVE);
159
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (6,20000,70167,22000,errorModel), TestCase::EXTENSIVE);
160
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,0,20000,35083,12000,errorModel), TestCase::EXTENSIVE);
160
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (12,20000,35083,12000,errorModel), TestCase::EXTENSIVE);
161
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,0,20000,28067,9600,errorModel), TestCase::EXTENSIVE);
161
  AddTestCase (new LenaPfFfMacSchedulerTestCase1 (15,20000,28067,9600,errorModel), TestCase::EXTENSIVE);
162
162
163
163
164
  // Test Case 2: fairness check
164
  // Test Case 2: fairness check
 Lines 200-209    Link Here 
200
  return oss.str ();
200
  return oss.str ();
201
}
201
}
202
202
203
LenaPfFfMacSchedulerTestCase1::LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
203
LenaPfFfMacSchedulerTestCase1::LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
204
  : TestCase (BuildNameString (nUser, dist)),
204
  : TestCase (BuildNameString (nUser, dist)),
205
    m_nUser (nUser),
205
    m_nUser (nUser),
206
    m_nLc (nLc),
207
    m_dist (dist),
206
    m_dist (dist),
208
    m_thrRefDl (thrRefDl),
207
    m_thrRefDl (thrRefDl),
209
    m_thrRefUl (thrRefUl),
208
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-pf-ff-mac-scheduler.h (-1 / +1 lines)
 Lines 41-47    Link Here 
41
class LenaPfFfMacSchedulerTestCase1 : public TestCase
41
class LenaPfFfMacSchedulerTestCase1 : public TestCase
42
{
42
{
43
public:
43
public:
44
  LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
44
  LenaPfFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
45
  virtual ~LenaPfFfMacSchedulerTestCase1 ();
45
  virtual ~LenaPfFfMacSchedulerTestCase1 ();
46
46
47
private:
47
private:
(-)ns-3.18/src/lte/test/lte-test-phy-error-model.cc (-3 / +1 lines)
 Lines 113-122    Link Here 
113
  : TestCase (BuildNameString (nUser, dist)),              
113
  : TestCase (BuildNameString (nUser, dist)),              
114
    m_nUser (nUser),
114
    m_nUser (nUser),
115
    m_dist (dist),
115
    m_dist (dist),
116
    m_tbSize (tbSize),
117
    m_blerRef (blerRef),
116
    m_blerRef (blerRef),
118
    m_toleranceRxPackets (toleranceRxPackets)
117
    m_toleranceRxPackets (toleranceRxPackets)
119
{
118
{  
120
}
119
}
121
120
122
LenaDataPhyErrorModelTestCase::~LenaDataPhyErrorModelTestCase ()
121
LenaDataPhyErrorModelTestCase::~LenaDataPhyErrorModelTestCase ()
 Lines 263-269    Link Here 
263
: TestCase (BuildNameString (nEnb, dist)),              
262
: TestCase (BuildNameString (nEnb, dist)),              
264
m_nEnb (nEnb),
263
m_nEnb (nEnb),
265
m_dist (dist),
264
m_dist (dist),
266
m_tbSize (tbSize),
267
m_blerRef (blerRef)
265
m_blerRef (blerRef)
268
{
266
{
269
}
267
}
(-)ns-3.18/src/lte/test/lte-test-phy-error-model.h (-2 lines)
 Lines 46-52    Link Here 
46
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
46
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
47
  uint16_t m_nUser;
47
  uint16_t m_nUser;
48
  uint16_t m_dist;
48
  uint16_t m_dist;
49
  uint16_t m_tbSize;
50
  double m_blerRef;
49
  double m_blerRef;
51
  uint16_t m_toleranceRxPackets;
50
  uint16_t m_toleranceRxPackets;
52
51
 Lines 65-71    Link Here 
65
    static std::string BuildNameString (uint16_t nUser, uint16_t dist);
64
    static std::string BuildNameString (uint16_t nUser, uint16_t dist);
66
    uint16_t m_nEnb;
65
    uint16_t m_nEnb;
67
    uint16_t m_dist;
66
    uint16_t m_dist;
68
    uint16_t m_tbSize;
69
    double m_blerRef;
67
    double m_blerRef;
70
    
68
    
71
};
69
};
(-)ns-3.18/src/lte/test/lte-test-pss-ff-mac-scheduler.cc (-18 / +17 lines)
 Lines 91-101    Link Here 
91
  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
91
  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
92
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
92
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
93
  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
93
  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
94
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
94
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
95
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
95
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
97
97
98
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
98
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
99
99
100
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
100
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
101
  // Traffic info
101
  // Traffic info
 Lines 112-121    Link Here 
112
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
112
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
113
  // after the patch enforcing min 3 PRBs per UE:
113
  // after the patch enforcing min 3 PRBs per UE:
114
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
114
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
115
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
118
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,4800,115250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
118
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,4800,115250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
119
119
120
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
120
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
121
  // Traffic info
121
  // Traffic info
 Lines 133-142    Link Here 
133
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
133
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
134
  // after the patch enforcing min 3 PRBs per UE:
134
  // after the patch enforcing min 3 PRBs per UE:
135
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
135
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
136
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
137
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
137
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
138
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
138
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
139
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
139
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
140
140
141
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
141
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
142
  // Traffic info
142
  // Traffic info
 Lines 153-162    Link Here 
153
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
153
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
154
  // after the patch enforcing min 3 PRBs per UE:
154
  // after the patch enforcing min 3 PRBs per UE:
155
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
155
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
156
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
156
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
158
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
158
  AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
159
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
159
  //AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
160
160
161
  // Test Case 2: homogeneous flow test in PSS (different distance)
161
  // Test Case 2: homogeneous flow test in PSS (different distance)
162
  // Traffic1 info
162
  // Traffic1 info
 Lines 238-247    Link Here 
238
}
238
}
239
239
240
240
241
LenaPssFfMacSchedulerTestCase1::LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
241
LenaPssFfMacSchedulerTestCase1::LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
242
  : TestCase (BuildNameString (nUser, dist)),
242
  : TestCase (BuildNameString (nUser, dist)),
243
    m_nUser (nUser),
243
    m_nUser (nUser),
244
    m_nLc (nLc),
245
    m_dist (dist),
244
    m_dist (dist),
246
    m_packetSize (packetSize),
245
    m_packetSize (packetSize),
247
    m_interval (interval),
246
    m_interval (interval),
(-)ns-3.18/src/lte/test/lte-test-pss-ff-mac-scheduler.h (-2 / +1 lines)
 Lines 42-55    Link Here 
42
class LenaPssFfMacSchedulerTestCase1 : public TestCase
42
class LenaPssFfMacSchedulerTestCase1 : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
45
  LenaPssFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
46
  virtual ~LenaPssFfMacSchedulerTestCase1 ();
46
  virtual ~LenaPssFfMacSchedulerTestCase1 ();
47
47
48
private:
48
private:
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
50
  virtual void DoRun (void);
50
  virtual void DoRun (void);
51
  uint16_t m_nUser;
51
  uint16_t m_nUser;
52
  uint16_t m_nLc;
53
  uint16_t m_dist;
52
  uint16_t m_dist;
54
  uint16_t m_packetSize;  // byte
53
  uint16_t m_packetSize;  // byte
55
  uint16_t m_interval;    // ms
54
  uint16_t m_interval;    // ms
(-)ns-3.18/src/lte/test/lte-test-rr-ff-mac-scheduler.cc (-26 / +25 lines)
 Lines 76-87    Link Here 
76
  // 9 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/9 UE/TTI ->  246220 bytes/sec
76
  // 9 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/9 UE/TTI ->  246220 bytes/sec
77
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
77
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
78
  // 15 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/15 UE/TTI -> 147730 bytes/sec
78
  // 15 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/15 UE/TTI -> 147730 bytes/sec
79
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,0,2196000,2292000,errorModel), TestCase::EXTENSIVE);
79
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,2196000,2292000,errorModel), TestCase::EXTENSIVE);
80
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,0,749000,749000,errorModel), TestCase::QUICK);
80
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,749000,749000,errorModel), TestCase::QUICK);
81
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,0,373000,373000,errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,373000,373000,errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,0,185000,246220,errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,185000,246220,errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,0,185000,184670,errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,185000,184670,errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,0,148000,147730,errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,148000,147730,errorModel), TestCase::EXTENSIVE);
85
85
86
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
86
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
87
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec
87
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec
 Lines 98-109    Link Here 
98
  // 9 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/9 UE/TTI  -> 82667 bytes/sec
98
  // 9 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/9 UE/TTI  -> 82667 bytes/sec
99
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
99
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
100
  // 15 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/15 UE/TTI  -> 49600 bytes/sec
100
  // 15 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/15 UE/TTI  -> 49600 bytes/sec
101
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
102
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,4800,469000,253000,errorModel), TestCase::EXTENSIVE);
102
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,4800,469000,253000,errorModel), TestCase::EXTENSIVE);
103
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,4800,233000,125000,errorModel), TestCase::EXTENSIVE);
103
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,4800,233000,125000,errorModel), TestCase::EXTENSIVE);
104
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,4800,113000,82667,errorModel), TestCase::EXTENSIVE);
104
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,4800,113000,82667,errorModel), TestCase::EXTENSIVE);
105
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,4800,113000,62000,errorModel), TestCase::EXTENSIVE);
105
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,4800,113000,62000,errorModel), TestCase::EXTENSIVE);
106
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,4800,90400,49600,errorModel), TestCase::EXTENSIVE);
106
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,4800,90400,49600,errorModel), TestCase::EXTENSIVE);
107
107
108
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
108
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
109
  // 1 user -> 24 PRB at Itbs 15 -> 1191 -> 1191000 bytes/sec
109
  // 1 user -> 24 PRB at Itbs 15 -> 1191 -> 1191000 bytes/sec
 Lines 119-130    Link Here 
119
  // 9 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/9 UE/TTI -> 64889 bytes/sec
119
  // 9 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/9 UE/TTI -> 64889 bytes/sec
120
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
120
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
121
  // 15 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/15 UE/TTI -> 38993 bytes/sec
121
  // 15 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/15 UE/TTI -> 38993 bytes/sec
122
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
122
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
123
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,6000,389000,201000,errorModel), TestCase::EXTENSIVE);
123
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,6000,389000,201000,errorModel), TestCase::EXTENSIVE);
124
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,6000,193000,97000,errorModel), TestCase::EXTENSIVE);
124
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,6000,193000,97000,errorModel), TestCase::EXTENSIVE);
125
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,6000,97000,64889,errorModel), TestCase::EXTENSIVE);
125
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,6000,97000,64889,errorModel), TestCase::EXTENSIVE);
126
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,6000,97000,48667,errorModel), TestCase::EXTENSIVE);
126
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,6000,97000,48667,errorModel), TestCase::EXTENSIVE);
127
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,6000,77600,38993,errorModel), TestCase::EXTENSIVE);
127
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,6000,77600,38993,errorModel), TestCase::EXTENSIVE);
128
128
129
  // DOWNLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
129
  // DOWNLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
130
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
130
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
 Lines 141-152    Link Here 
141
  // 9 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/9 UE/TTI -> 16000 bytes/sec
141
  // 9 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/9 UE/TTI -> 16000 bytes/sec
142
  // 12 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/12 UE/TTI -> 12000 bytes/sec
142
  // 12 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/12 UE/TTI -> 12000 bytes/sec
143
  // 15 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/15 UE/TTI -> 9600 bytes/sec
143
  // 15 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/15 UE/TTI -> 9600 bytes/sec
144
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
144
  AddTestCase (new LenaRrFfMacSchedulerTestCase (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
145
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,0,20000,137000,41000,errorModel), TestCase::EXTENSIVE);
145
  AddTestCase (new LenaRrFfMacSchedulerTestCase (3,20000,137000,41000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,0,20000,67000,22000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaRrFfMacSchedulerTestCase (6,20000,67000,22000,errorModel), TestCase::EXTENSIVE);
147
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,0,20000,32000,16000,errorModel), TestCase::EXTENSIVE);
147
  AddTestCase (new LenaRrFfMacSchedulerTestCase (9,20000,32000,16000,errorModel), TestCase::EXTENSIVE);
148
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,0,20000,32000,12000,errorModel), TestCase::EXTENSIVE);
148
  AddTestCase (new LenaRrFfMacSchedulerTestCase (12,20000,32000,12000,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,0,20000,25600,9600,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaRrFfMacSchedulerTestCase (15,20000,25600,9600,errorModel), TestCase::EXTENSIVE);
150
150
151
}
151
}
152
152
 Lines 160-169    Link Here 
160
  return oss.str ();
160
  return oss.str ();
161
}
161
}
162
162
163
LenaRrFfMacSchedulerTestCase::LenaRrFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
163
LenaRrFfMacSchedulerTestCase::LenaRrFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
164
  : TestCase (BuildNameString (nUser, dist)),              
164
  : TestCase (BuildNameString (nUser, dist)),              
165
    m_nUser (nUser),
165
    m_nUser (nUser),
166
    m_nLc (nLc),
167
    m_dist (dist),
166
    m_dist (dist),
168
    m_thrRefDl (thrRefDl),
167
    m_thrRefDl (thrRefDl),
169
    m_thrRefUl (thrRefUl),
168
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-rr-ff-mac-scheduler.h (-1 / +1 lines)
 Lines 40-46    Link Here 
40
class LenaRrFfMacSchedulerTestCase : public TestCase
40
class LenaRrFfMacSchedulerTestCase : public TestCase
41
{
41
{
42
public:
42
public:
43
  LenaRrFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
43
  LenaRrFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled);
44
  virtual ~LenaRrFfMacSchedulerTestCase ();
44
  virtual ~LenaRrFfMacSchedulerTestCase ();
45
45
46
private:
46
private:
(-)ns-3.18/src/lte/test/lte-test-tdbet-ff-mac-scheduler.cc (-22 / +21 lines)
 Lines 77-86    Link Here 
77
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
77
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
78
  // after the patch enforcing min 3 PRBs per UE:
78
  // after the patch enforcing min 3 PRBs per UE:
79
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
79
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
80
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,0,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
80
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,0,0,732000,749000, errorModel), TestCase::EXTENSIVE);
81
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,0,732000,749000, errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,0,0,366000,373000, errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,0,366000,373000, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,0,0,183000,184670, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,0,183000,184670, errorModel), TestCase::EXTENSIVE);
84
84
85
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
85
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
86
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec
86
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec
 Lines 93-102    Link Here 
93
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
93
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
94
  // after the patch enforcing min 3 PRBs per UE:
94
  // after the patch enforcing min 3 PRBs per UE:
95
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
95
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
96
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,0,4800,1383000,807000, errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,4800,1383000,807000, errorModel), TestCase::EXTENSIVE);
97
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,0,4800,461000,253000, errorModel), TestCase::EXTENSIVE);
97
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,4800,461000,253000, errorModel), TestCase::EXTENSIVE);
98
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,0,4800,230500,125000, errorModel), TestCase::EXTENSIVE);
98
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,4800,230500,125000, errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,0,4800,115250,62000, errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,4800,115250,62000, errorModel), TestCase::EXTENSIVE);
100
100
101
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
101
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
102
  // 1 user -> 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec
102
  // 1 user -> 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec
 Lines 108-117    Link Here 
108
  // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 bytes/sec
108
  // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 bytes/sec
109
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
109
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
110
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
110
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
111
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,0,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
111
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,6000,1191000,621000,errorModel), TestCase::EXTENSIVE);
112
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,0,6000,397000,201000,errorModel), TestCase::EXTENSIVE);
112
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,6000,397000,201000,errorModel), TestCase::EXTENSIVE);
113
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,0,6000,198500,97000,errorModel), TestCase::EXTENSIVE);
113
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,6000,198500,97000,errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,0,6000,99250,48667,errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,6000,99250,48667,errorModel), TestCase::EXTENSIVE);
115
  
115
  
116
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
116
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
117
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec
117
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec
 Lines 124-133    Link Here 
124
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
124
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
125
  // after the patch enforcing min 3 PRBs per UE:
125
  // after the patch enforcing min 3 PRBs per UE:
126
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
126
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
127
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,0,10000,775000,421000,errorModel), TestCase::EXTENSIVE);
127
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,10000,775000,421000,errorModel), TestCase::EXTENSIVE);
128
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,0,10000,258333,137000,errorModel), TestCase::EXTENSIVE);
128
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,10000,258333,137000,errorModel), TestCase::EXTENSIVE);
129
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,0,10000,129166,67000,errorModel), TestCase::EXTENSIVE);
129
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,10000,129166,67000,errorModel), TestCase::EXTENSIVE);
130
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,0,10000,64583,32667,errorModel), TestCase::EXTENSIVE);
130
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,10000,64583,32667,errorModel), TestCase::EXTENSIVE);
131
131
132
  // DOWNLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
132
  // DOWNLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
133
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
133
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec
 Lines 140-149    Link Here 
140
  // 6 users -> 4 PRB at Itbs 2 -> 22 -> 22000 bytes/sec
140
  // 6 users -> 4 PRB at Itbs 2 -> 22 -> 22000 bytes/sec
141
  // after the patch enforcing min 3 PRBs per UE:
141
  // after the patch enforcing min 3 PRBs per UE:
142
  // 12 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/12 UE/TTI -> 12000 bytes/sec
142
  // 12 users -> 3 PRB at Itbs 2 -> 18 bytes * 8/12 UE/TTI -> 12000 bytes/sec
143
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
143
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
144
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,0,20000,140333,41000,errorModel), TestCase::EXTENSIVE);
144
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (3,20000,140333,41000,errorModel), TestCase::EXTENSIVE);
145
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,0,20000,70166,22000,errorModel), TestCase::EXTENSIVE);
145
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (6,20000,70166,22000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,0,20000,35083,12000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaTdBetFfMacSchedulerTestCase1 (12,20000,35083,12000,errorModel), TestCase::EXTENSIVE);
147
147
148
  // Test Case 2: fairness check
148
  // Test Case 2: fairness check
149
149
 Lines 182-191    Link Here 
182
  return oss.str ();
182
  return oss.str ();
183
}
183
}
184
184
185
LenaTdBetFfMacSchedulerTestCase1::LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
185
LenaTdBetFfMacSchedulerTestCase1::LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
186
  : TestCase (BuildNameString (nUser, dist)),
186
  : TestCase (BuildNameString (nUser, dist)),
187
    m_nUser (nUser),
187
    m_nUser (nUser),
188
    m_nLc (nLc),
189
    m_dist (dist),
188
    m_dist (dist),
190
    m_thrRefDl (thrRefDl),
189
    m_thrRefDl (thrRefDl),
191
    m_thrRefUl (thrRefUl),
190
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-tdbet-ff-mac-scheduler.h (-2 / +1 lines)
 Lines 42-55    Link Here 
42
class LenaTdBetFfMacSchedulerTestCase1 : public TestCase
42
class LenaTdBetFfMacSchedulerTestCase1 : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
45
  LenaTdBetFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
46
  virtual ~LenaTdBetFfMacSchedulerTestCase1 ();
46
  virtual ~LenaTdBetFfMacSchedulerTestCase1 ();
47
47
48
private:
48
private:
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
50
  virtual void DoRun (void);
50
  virtual void DoRun (void);
51
  uint16_t m_nUser;
51
  uint16_t m_nUser;
52
  uint16_t m_nLc;
53
  uint16_t m_dist;
52
  uint16_t m_dist;
54
  double m_thrRefDl;
53
  double m_thrRefDl;
55
  double m_thrRefUl;
54
  double m_thrRefUl;
(-)ns-3.18/src/lte/test/lte-test-tdmt-ff-mac-scheduler.cc (-22 / +21 lines)
 Lines 79-88    Link Here 
79
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
79
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
80
  // after the patch enforcing min 3 PRBs per UE:
80
  // after the patch enforcing min 3 PRBs per UE:
81
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
81
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
82
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,0,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
82
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,0,0,2196000,749000,errorModel), TestCase::QUICK);
83
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,0,2196000,749000,errorModel), TestCase::QUICK);
84
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,0,0,2196000,373000, errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,0,2196000,373000, errorModel), TestCase::EXTENSIVE);
85
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,0,0,2196000,184670, errorModel), TestCase::EXTENSIVE);
85
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,0,2196000,184670, errorModel), TestCase::EXTENSIVE);
86
  
86
  
87
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
87
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
88
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec for one UE; 0 bytes/sec for other UEs
88
  // 1 user -> 24 PRB at Itbs 20 -> 1383 -> 1383000 bytes/sec for one UE; 0 bytes/sec for other UEs
 Lines 95-104    Link Here 
95
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
95
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
96
  // after the patch enforcing min 3 PRBs per UE:
96
  // after the patch enforcing min 3 PRBs per UE:
97
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
97
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
98
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,0,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
98
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,0,4800,1383000,253000,errorModel), TestCase::EXTENSIVE);
99
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,4800,1383000,253000,errorModel), TestCase::EXTENSIVE);
100
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,0,4800,1383000,125000,errorModel), TestCase::EXTENSIVE);
100
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,4800,1383000,125000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,0,4800,1383000,62000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,4800,1383000,62000,errorModel), TestCase::EXTENSIVE);
102
102
103
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
103
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
104
  // 1 user -> 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec for one UE; 0 bytes/sec for other UEs
104
  // 1 user -> 24 PRB at Itbs 18 -> 1191 -> 1191000 byte/sec for one UE; 0 bytes/sec for other UEs
 Lines 111-120    Link Here 
111
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
111
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
112
  // after the patch enforcing min 3 PRBs per UE:
112
  // after the patch enforcing min 3 PRBs per UE:
113
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
113
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
114
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,0,6000,1191000,621000, errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,6000,1191000,621000, errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,0,6000,1191000,201000, errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,6000,1191000,201000, errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,0,6000,1191000,97000, errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,6000,1191000,97000, errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,0,6000,1191000,48667, errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,6000,1191000,48667, errorModel), TestCase::EXTENSIVE);
118
118
119
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
119
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
120
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec for one UE; 0 bytes/sec for other UEs
120
  // 1 user -> 24 PRB at Itbs 13 -> 775 -> 775000 byte/sec for one UE; 0 bytes/sec for other UEs
 Lines 127-136    Link Here 
127
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
127
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
128
  // after the patch enforcing min 3 PRBs per UE:
128
  // after the patch enforcing min 3 PRBs per UE:
129
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
129
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
130
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,0,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
130
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
131
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,0,10000,775000,137000,errorModel), TestCase::EXTENSIVE);
131
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,10000,775000,137000,errorModel), TestCase::EXTENSIVE);
132
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,0,10000,775000,67000,errorModel), TestCase::EXTENSIVE);
132
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,10000,775000,67000,errorModel), TestCase::EXTENSIVE);
133
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,0,10000,775000,32667,errorModel), TestCase::EXTENSIVE);
133
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,10000,775000,32667,errorModel), TestCase::EXTENSIVE);
134
 
134
 
135
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
135
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
136
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec for one UE; 0 bytes/sec for other UEs
136
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec for one UE; 0 bytes/sec for other UEs
 Lines 143-152    Link Here 
143
  // 6 users -> 4 PRB at Itbs 2 -> 32 -> 22000 bytes/sec
143
  // 6 users -> 4 PRB at Itbs 2 -> 32 -> 22000 bytes/sec
144
  // after the patch enforcing min 3 PRBs per UE:
144
  // after the patch enforcing min 3 PRBs per UE:
145
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
145
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
146
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
146
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
147
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,0,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
147
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (3,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
148
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,0,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
148
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (6,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,0,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaTdMtFfMacSchedulerTestCase (12,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
150
150
151
}
151
}
152
152
 Lines 163-172    Link Here 
163
  return oss.str ();
163
  return oss.str ();
164
}
164
}
165
165
166
LenaTdMtFfMacSchedulerTestCase::LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
166
LenaTdMtFfMacSchedulerTestCase::LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
167
  : TestCase (BuildNameString (nUser, dist)),
167
  : TestCase (BuildNameString (nUser, dist)),
168
    m_nUser (nUser),
168
    m_nUser (nUser),
169
    m_nLc (nLc),
170
    m_dist (dist),
169
    m_dist (dist),
171
    m_thrRefDl (thrRefDl),
170
    m_thrRefDl (thrRefDl),
172
    m_thrRefUl (thrRefUl),
171
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-tdmt-ff-mac-scheduler.h (-1 / +1 lines)
 Lines 42-48    Link Here 
42
class LenaTdMtFfMacSchedulerTestCase : public TestCase
42
class LenaTdMtFfMacSchedulerTestCase : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
45
  LenaTdMtFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
46
  virtual ~LenaTdMtFfMacSchedulerTestCase ();
46
  virtual ~LenaTdMtFfMacSchedulerTestCase ();
47
47
48
private:
48
private:
(-)ns-3.18/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.cc (-18 / +17 lines)
 Lines 91-100    Link Here 
91
  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
91
  // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
92
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
92
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
93
  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
93
  // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
94
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
94
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
95
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
95
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,0,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
96
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,0,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
97
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,0,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
97
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,0,183000,185000,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
98
98
99
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
99
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
100
  // Traffic info
100
  // Traffic info
 Lines 111-120    Link Here 
111
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
111
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 < 232000 -> throughput = 125000 bytes/sec
112
  // after the patch enforcing min 3 PRBs per UE:
112
  // after the patch enforcing min 3 PRBs per UE:
113
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
113
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 < 232000 -> throughput = 62000  bytes/sec
114
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,0,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
114
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,0,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
115
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,4800,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,0,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
116
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,4800,230500,125000,200,1,errorModel), TestCase::EXTENSIVE);
117
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,0,4800,115250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
117
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,4800,115250,62000,200,1,errorModel)); // simulation time = 1.5, otherwise, ul test will fail
118
118
119
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
119
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
120
  // Traffic info
120
  // Traffic info
 Lines 132-141    Link Here 
132
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
132
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
133
  // after the patch enforcing min 3 PRBs per UE:
133
  // after the patch enforcing min 3 PRBs per UE:
134
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
134
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 < 232000 -> throughput = 48667 bytes/sec
135
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,0,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
135
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,6000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,0,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,6000,232000,201000,200,1,errorModel), TestCase::EXTENSIVE);
137
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,0,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
137
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,6000,198500,97000,200,1,errorModel), TestCase::EXTENSIVE);
138
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,0,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
138
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,6000,99250,48667,200,1, errorModel)); // simulation time = 1.5, otherwise, ul test will fail
139
139
140
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
140
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
141
  // Traffic info
141
  // Traffic info
 Lines 152-161    Link Here 
152
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
152
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
153
  // after the patch enforcing min 3 PRBs per UE:
153
  // after the patch enforcing min 3 PRBs per UE:
154
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
154
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 < 232000 -> throughput = 32667  bytes/sec
155
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,0,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
155
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (1,10000,232000,232000,200,1,errorModel), TestCase::EXTENSIVE);
156
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,0,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
156
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (3,10000,232000,137000,200,1,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,0,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
157
  AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (6,10000,129166,67000,200,1,errorModel), TestCase::EXTENSIVE);
158
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,0,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
158
  //AddTestCase (new LenaTdTbfqFfMacSchedulerTestCase1 (12,10000,64583,32667,200,1,errorModel));// simulation time = 1.5, otherwise, ul test will fail
159
159
160
  // Test Case 2: homogeneous flow test in TDTBFQ (different distance)
160
  // Test Case 2: homogeneous flow test in TDTBFQ (different distance)
161
  // Traffic1 info
161
  // Traffic1 info
 Lines 237-246    Link Here 
237
}
237
}
238
238
239
239
240
LenaTdTbfqFfMacSchedulerTestCase1::LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
240
LenaTdTbfqFfMacSchedulerTestCase1::LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval,bool errorModelEnabled)
241
  : TestCase (BuildNameString (nUser, dist)),
241
  : TestCase (BuildNameString (nUser, dist)),
242
    m_nUser (nUser),
242
    m_nUser (nUser),
243
    m_nLc (nLc),
244
    m_dist (dist),
243
    m_dist (dist),
245
    m_packetSize (packetSize),
244
    m_packetSize (packetSize),
246
    m_interval (interval),
245
    m_interval (interval),
(-)ns-3.18/src/lte/test/lte-test-tdtbfq-ff-mac-scheduler.h (-2 / +1 lines)
 Lines 42-55    Link Here 
42
class LenaTdTbfqFfMacSchedulerTestCase1 : public TestCase
42
class LenaTdTbfqFfMacSchedulerTestCase1 : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
45
  LenaTdTbfqFfMacSchedulerTestCase1 (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, uint16_t packetSize, uint16_t interval, bool  errorModelEnabled);
46
  virtual ~LenaTdTbfqFfMacSchedulerTestCase1 ();
46
  virtual ~LenaTdTbfqFfMacSchedulerTestCase1 ();
47
47
48
private:
48
private:
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
49
  static std::string BuildNameString (uint16_t nUser, uint16_t dist);
50
  virtual void DoRun (void);
50
  virtual void DoRun (void);
51
  uint16_t m_nUser;
51
  uint16_t m_nUser;
52
  uint16_t m_nLc;
53
  uint16_t m_dist;
52
  uint16_t m_dist;
54
  uint16_t m_packetSize;  // byte
53
  uint16_t m_packetSize;  // byte
55
  uint16_t m_interval;    // ms
54
  uint16_t m_interval;    // ms
(-)ns-3.18/src/lte/test/lte-test-tta-ff-mac-scheduler.cc (-23 / +22 lines)
 Lines 80-90    Link Here 
80
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
80
  // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 bytes/sec
81
  // after the patch enforcing min 3 PRBs per UE:
81
  // after the patch enforcing min 3 PRBs per UE:
82
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
82
  // 12 users -> 3 PRB at Itbs 26 -> 277 bytes * 8/12 UE/TTI -> 184670 bytes/sec
83
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,0,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
83
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,0,2196000,2292000, errorModel), TestCase::EXTENSIVE);
84
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,0,0,2196000,749000,errorModel), TestCase::QUICK);
84
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,0,2196000,749000,errorModel), TestCase::QUICK);
85
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,0,0,2196000,373000, errorModel), TestCase::EXTENSIVE);
85
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,0,2196000,373000, errorModel), TestCase::EXTENSIVE);
86
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,0,0,2196000,184670, errorModel), TestCase::EXTENSIVE);
86
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,0,2196000,184670, errorModel), TestCase::EXTENSIVE);
87
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (15,0,0,2196000,147730, errorModel), TestCase::EXTENSIVE);
87
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (15,0,2196000,147730, errorModel), TestCase::EXTENSIVE);
88
88
89
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
89
  // DOWNLINK - DISTANCE 4800 -> MCS 22 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
90
  // 1 user -> 24 PRB at Itbs 15 -> 1383 -> 1383000 bytes/sec for one UE; 0 bytes/sec for other UEs
90
  // 1 user -> 24 PRB at Itbs 15 -> 1383 -> 1383000 bytes/sec for one UE; 0 bytes/sec for other UEs
 Lines 97-106    Link Here 
97
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
97
  // 6 users -> 4 PRB at Itbs 13 -> 125 -> 125000 bytes/sec
98
  // after the patch enforcing min 3 PRBs per UE:
98
  // after the patch enforcing min 3 PRBs per UE:
99
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
99
  // 12 users -> 3 PRB at Itbs 13 -> 93  bytes * 8/12 UE/TTI  -> 62000 bytes/sec
100
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,0,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
100
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,4800,1383000,807000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,0,4800,1383000,253000,errorModel), TestCase::EXTENSIVE);
101
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,4800,1383000,253000,errorModel), TestCase::EXTENSIVE);
102
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,0,4800,1383000,125000,errorModel), TestCase::EXTENSIVE);
102
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,4800,1383000,125000,errorModel), TestCase::EXTENSIVE);
103
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,0,4800,1383000,62000,errorModel), TestCase::EXTENSIVE);
103
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,4800,1383000,62000,errorModel), TestCase::EXTENSIVE);
104
104
105
105
106
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
106
  // DOWNLINK - DISTANCE 6000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
 Lines 114-123    Link Here 
114
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
114
  // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 bytes/sec
115
  // after the patch enforcing min 3 PRBs per UE:
115
  // after the patch enforcing min 3 PRBs per UE:
116
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
116
  // 12 users -> 3 PRB at Itbs 11 -> 73 bytes * 8/12 UE/TTI -> 48667 bytes/sec
117
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,0,6000,1191000,621000, errorModel), TestCase::EXTENSIVE);
117
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,6000,1191000,621000, errorModel), TestCase::EXTENSIVE);
118
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,0,6000,1191000,201000, errorModel), TestCase::EXTENSIVE);
118
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,6000,1191000,201000, errorModel), TestCase::EXTENSIVE);
119
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,0,6000,1191000,97000, errorModel), TestCase::EXTENSIVE);
119
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,6000,1191000,97000, errorModel), TestCase::EXTENSIVE);
120
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,0,6000,1191000,48667, errorModel), TestCase::EXTENSIVE);
120
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,6000,1191000,48667, errorModel), TestCase::EXTENSIVE);
121
121
122
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
122
  // DOWNLINK - DISTANCE 10000 -> MCS 14 -> Itbs 13 (from table 7.1.7.2.1-1 of 36.213)
123
  // 1 user -> 24 PRB at Itbs 8 -> 775 -> 775000 bytes/sec for one UE; 0 bytes/sec for other UEs
123
  // 1 user -> 24 PRB at Itbs 8 -> 775 -> 775000 bytes/sec for one UE; 0 bytes/sec for other UEs
 Lines 130-139    Link Here 
130
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
130
  // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 bytes/sec
131
  // after the patch enforcing min 3 PRBs per UE:
131
  // after the patch enforcing min 3 PRBs per UE:
132
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
132
  // 12 users -> 3 PRB at Itbs 8 -> 49 bytes * 8/12 UE/TTI -> 32667 bytes/sec
133
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,0,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
133
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,10000,775000,437000,errorModel), TestCase::EXTENSIVE);
134
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,0,10000,775000,137000,errorModel), TestCase::EXTENSIVE);
134
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,10000,775000,137000,errorModel), TestCase::EXTENSIVE);
135
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,0,10000,775000,67000,errorModel), TestCase::EXTENSIVE);
135
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,10000,775000,67000,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,0,10000,775000,32667,errorModel), TestCase::EXTENSIVE);
136
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,10000,775000,32667,errorModel), TestCase::EXTENSIVE);
137
 
137
 
138
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
138
  // DONWLINK - DISTANCE 20000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
139
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec for one UE; 0 bytes/sec for other UEs
139
  // 1 user -> 24 PRB at Itbs 8 -> 421 -> 421000 bytes/sec for one UE; 0 bytes/sec for other UEs
 Lines 146-155    Link Here 
146
  // 6 users -> 4 PRB at Itbs 2 -> 32 -> 22000 bytes/sec
146
  // 6 users -> 4 PRB at Itbs 2 -> 32 -> 22000 bytes/sec
147
  // after the patch enforcing min 3 PRBs per UE:
147
  // after the patch enforcing min 3 PRBs per UE:
148
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
148
  // 12 users -> 3 PRB at Itbs 2 -> 26 bytes * 8/12 UE/TTI -> 12000 bytes/sec
149
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,0,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
149
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (1,20000,421000,137000,errorModel), TestCase::EXTENSIVE);
150
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,0,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
150
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (3,20000,421000,41000,errorModel), TestCase::EXTENSIVE);
151
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,0,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
151
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (6,20000,421000,22000,errorModel), TestCase::EXTENSIVE);
152
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,0,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
152
  AddTestCase (new LenaTtaFfMacSchedulerTestCase (12,20000,421000,12000,errorModel), TestCase::EXTENSIVE);
153
153
154
}
154
}
155
155
 Lines 166-175    Link Here 
166
  return oss.str ();
166
  return oss.str ();
167
}
167
}
168
168
169
LenaTtaFfMacSchedulerTestCase::LenaTtaFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
169
LenaTtaFfMacSchedulerTestCase::LenaTtaFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl, bool errorModelEnabled)
170
  : TestCase (BuildNameString (nUser, dist)),
170
  : TestCase (BuildNameString (nUser, dist)),
171
    m_nUser (nUser),
171
    m_nUser (nUser),
172
    m_nLc (nLc),
173
    m_dist (dist),
172
    m_dist (dist),
174
    m_thrRefDl (thrRefDl),
173
    m_thrRefDl (thrRefDl),
175
    m_thrRefUl (thrRefUl),
174
    m_thrRefUl (thrRefUl),
(-)ns-3.18/src/lte/test/lte-test-tta-ff-mac-scheduler.h (-1 / +1 lines)
 Lines 42-48    Link Here 
42
class LenaTtaFfMacSchedulerTestCase : public TestCase
42
class LenaTtaFfMacSchedulerTestCase : public TestCase
43
{
43
{
44
public:
44
public:
45
  LenaTtaFfMacSchedulerTestCase (uint16_t nUser, uint16_t nLc, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
45
  LenaTtaFfMacSchedulerTestCase (uint16_t nUser, uint16_t dist, double thrRefDl, double thrRefUl,bool errorModelEnabled);
46
  virtual ~LenaTtaFfMacSchedulerTestCase ();
46
  virtual ~LenaTtaFfMacSchedulerTestCase ();
47
47
48
private:
48
private:
(-)ns-3.18/src/mesh/bindings/modulegen__gcc_ILP32.py (-12 / +7 lines)
 Lines 27-33    Link Here 
27
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
27
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
28
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
28
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
29
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
29
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
30
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
30
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
32
    module.add_enum('WifiCodeRate', ['WIFI_CODE_RATE_UNDEFINED', 'WIFI_CODE_RATE_3_4', 'WIFI_CODE_RATE_2_3', 'WIFI_CODE_RATE_1_2', 'WIFI_CODE_RATE_5_6'], import_from_module='ns.wifi')
32
    module.add_enum('WifiCodeRate', ['WIFI_CODE_RATE_UNDEFINED', 'WIFI_CODE_RATE_3_4', 'WIFI_CODE_RATE_2_3', 'WIFI_CODE_RATE_1_2', 'WIFI_CODE_RATE_5_6'], import_from_module='ns.wifi')
33
    ## qos-utils.h (module 'wifi'): ns3::AcIndex [enumeration]
33
    ## qos-utils.h (module 'wifi'): ns3::AcIndex [enumeration]
 Lines 502-513    Link Here 
502
    module.add_enum('dot11sSynchronizationProtocolIdentifier', ['SYNC_NEIGHBOUR_OFFSET', 'SYNC_NULL'])
502
    module.add_enum('dot11sSynchronizationProtocolIdentifier', ['SYNC_NEIGHBOUR_OFFSET', 'SYNC_NULL'])
503
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sCongestionControlMode [enumeration]
503
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sCongestionControlMode [enumeration]
504
    module.add_enum('dot11sCongestionControlMode', ['CONGESTION_SIGNALING', 'CONGESTION_NULL'])
504
    module.add_enum('dot11sCongestionControlMode', ['CONGESTION_SIGNALING', 'CONGESTION_NULL'])
505
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
506
    module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
505
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sPathSelectionMetric [enumeration]
507
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sPathSelectionMetric [enumeration]
506
    module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
508
    module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
507
    ## ie-dot11s-peer-management.h (module 'mesh'): ns3::dot11s::PmpReasonCode [enumeration]
509
    ## ie-dot11s-peer-management.h (module 'mesh'): ns3::dot11s::PmpReasonCode [enumeration]
508
    module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
510
    module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
509
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
510
    module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
511
    ## ie-dot11s-preq.h (module 'mesh'): ns3::dot11s::DestinationAddressUnit [class]
511
    ## ie-dot11s-preq.h (module 'mesh'): ns3::dot11s::DestinationAddressUnit [class]
512
    module.add_class('DestinationAddressUnit', parent=root_module['ns3::SimpleRefCount< ns3::dot11s::DestinationAddressUnit, ns3::empty, ns3::DefaultDeleter<ns3::dot11s::DestinationAddressUnit> >'])
512
    module.add_class('DestinationAddressUnit', parent=root_module['ns3::SimpleRefCount< ns3::dot11s::DestinationAddressUnit, ns3::empty, ns3::DefaultDeleter<ns3::dot11s::DestinationAddressUnit> >'])
513
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::Dot11sMeshCapability [class]
513
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::Dot11sMeshCapability [class]
 Lines 3615-3620    Link Here 
3615
    return
3615
    return
3616
3616
3617
def register_Ns3Int64x64_t_methods(root_module, cls):
3617
def register_Ns3Int64x64_t_methods(root_module, cls):
3618
    cls.add_binary_comparison_operator('<=')
3618
    cls.add_binary_comparison_operator('!=')
3619
    cls.add_binary_comparison_operator('!=')
3619
    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
3620
    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
3620
    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
3621
    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
 Lines 3672-3678    Link Here 
3672
    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
3673
    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
3673
    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
3674
    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
3674
    cls.add_output_stream_operator()
3675
    cls.add_output_stream_operator()
3675
    cls.add_binary_comparison_operator('<=')
3676
    cls.add_binary_comparison_operator('==')
3676
    cls.add_binary_comparison_operator('==')
3677
    cls.add_binary_comparison_operator('>=')
3677
    cls.add_binary_comparison_operator('>=')
3678
    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
3678
    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
 Lines 4612-4617    Link Here 
4612
    return
4612
    return
4613
4613
4614
def register_Ns3Time_methods(root_module, cls):
4614
def register_Ns3Time_methods(root_module, cls):
4615
    cls.add_binary_comparison_operator('<=')
4615
    cls.add_binary_comparison_operator('!=')
4616
    cls.add_binary_comparison_operator('!=')
4616
    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
4617
    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
4617
    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
4618
    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
 Lines 4620-4626    Link Here 
4620
    cls.add_binary_comparison_operator('>')
4621
    cls.add_binary_comparison_operator('>')
4621
    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
4622
    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
4622
    cls.add_output_stream_operator()
4623
    cls.add_output_stream_operator()
4623
    cls.add_binary_comparison_operator('<=')
4624
    cls.add_binary_comparison_operator('==')
4624
    cls.add_binary_comparison_operator('==')
4625
    cls.add_binary_comparison_operator('>=')
4625
    cls.add_binary_comparison_operator('>=')
4626
    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
4626
    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
 Lines 5239-5249    Link Here 
5239
                   'bool', 
5239
                   'bool', 
5240
                   [], 
5240
                   [], 
5241
                   is_pure_virtual=True, is_const=True, is_virtual=True)
5241
                   is_pure_virtual=True, is_const=True, is_virtual=True)
5242
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureCCHDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
5243
    cls.add_method('ConfigureCCHDcf', 
5244
                   'void', 
5245
                   [param('ns3::Ptr< ns3::Dcf >', 'dcf'), param('uint32_t', 'cwmin'), param('uint32_t', 'cwmax'), param('ns3::AcIndex', 'ac')], 
5246
                   visibility='protected')
5247
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
5242
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
5248
    cls.add_method('ConfigureDcf', 
5243
    cls.add_method('ConfigureDcf', 
5249
                   'void', 
5244
                   'void', 
 Lines 11502-11509    Link Here 
11502
def register_Ns3FlameFlameProtocolMac_methods(root_module, cls):
11497
def register_Ns3FlameFlameProtocolMac_methods(root_module, cls):
11503
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(ns3::flame::FlameProtocolMac const & arg0) [copy constructor]
11498
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(ns3::flame::FlameProtocolMac const & arg0) [copy constructor]
11504
    cls.add_constructor([param('ns3::flame::FlameProtocolMac const &', 'arg0')])
11499
    cls.add_constructor([param('ns3::flame::FlameProtocolMac const &', 'arg0')])
11505
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(uint32_t arg0, ns3::Ptr<ns3::flame::FlameProtocol> arg1) [constructor]
11500
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(ns3::Ptr<ns3::flame::FlameProtocol> arg0) [constructor]
11506
    cls.add_constructor([param('uint32_t', 'arg0'), param('ns3::Ptr< ns3::flame::FlameProtocol >', 'arg1')])
11501
    cls.add_constructor([param('ns3::Ptr< ns3::flame::FlameProtocol >', 'arg0')])
11507
    ## flame-protocol-mac.h (module 'mesh'): int64_t ns3::flame::FlameProtocolMac::AssignStreams(int64_t stream) [member function]
11502
    ## flame-protocol-mac.h (module 'mesh'): int64_t ns3::flame::FlameProtocolMac::AssignStreams(int64_t stream) [member function]
11508
    cls.add_method('AssignStreams', 
11503
    cls.add_method('AssignStreams', 
11509
                   'int64_t', 
11504
                   'int64_t', 
(-)ns-3.18/src/mesh/bindings/modulegen__gcc_LP64.py (-12 / +7 lines)
 Lines 27-33    Link Here 
27
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
27
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
28
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
28
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
29
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
29
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
30
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
30
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
32
    module.add_enum('WifiCodeRate', ['WIFI_CODE_RATE_UNDEFINED', 'WIFI_CODE_RATE_3_4', 'WIFI_CODE_RATE_2_3', 'WIFI_CODE_RATE_1_2', 'WIFI_CODE_RATE_5_6'], import_from_module='ns.wifi')
32
    module.add_enum('WifiCodeRate', ['WIFI_CODE_RATE_UNDEFINED', 'WIFI_CODE_RATE_3_4', 'WIFI_CODE_RATE_2_3', 'WIFI_CODE_RATE_1_2', 'WIFI_CODE_RATE_5_6'], import_from_module='ns.wifi')
33
    ## qos-utils.h (module 'wifi'): ns3::AcIndex [enumeration]
33
    ## qos-utils.h (module 'wifi'): ns3::AcIndex [enumeration]
 Lines 500-513    Link Here 
500
    module.add_enum('dot11sSynchronizationProtocolIdentifier', ['SYNC_NEIGHBOUR_OFFSET', 'SYNC_NULL'])
500
    module.add_enum('dot11sSynchronizationProtocolIdentifier', ['SYNC_NEIGHBOUR_OFFSET', 'SYNC_NULL'])
501
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sCongestionControlMode [enumeration]
501
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sCongestionControlMode [enumeration]
502
    module.add_enum('dot11sCongestionControlMode', ['CONGESTION_SIGNALING', 'CONGESTION_NULL'])
502
    module.add_enum('dot11sCongestionControlMode', ['CONGESTION_SIGNALING', 'CONGESTION_NULL'])
503
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
504
    module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
503
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sPathSelectionMetric [enumeration]
505
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sPathSelectionMetric [enumeration]
504
    module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
506
    module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
505
    ## ie-dot11s-peer-management.h (module 'mesh'): ns3::dot11s::PmpReasonCode [enumeration]
507
    ## ie-dot11s-peer-management.h (module 'mesh'): ns3::dot11s::PmpReasonCode [enumeration]
506
    module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
508
    module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
507
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sPathSelectionProtocol [enumeration]
509
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sPathSelectionProtocol [enumeration]
508
    module.add_enum('dot11sPathSelectionProtocol', ['PROTOCOL_HWMP'])
510
    module.add_enum('dot11sPathSelectionProtocol', ['PROTOCOL_HWMP'])
509
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
510
    module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
511
    ## ie-dot11s-preq.h (module 'mesh'): ns3::dot11s::DestinationAddressUnit [class]
511
    ## ie-dot11s-preq.h (module 'mesh'): ns3::dot11s::DestinationAddressUnit [class]
512
    module.add_class('DestinationAddressUnit', parent=root_module['ns3::SimpleRefCount< ns3::dot11s::DestinationAddressUnit, ns3::empty, ns3::DefaultDeleter<ns3::dot11s::DestinationAddressUnit> >'])
512
    module.add_class('DestinationAddressUnit', parent=root_module['ns3::SimpleRefCount< ns3::dot11s::DestinationAddressUnit, ns3::empty, ns3::DefaultDeleter<ns3::dot11s::DestinationAddressUnit> >'])
513
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::Dot11sMeshCapability [class]
513
    ## ie-dot11s-configuration.h (module 'mesh'): ns3::dot11s::Dot11sMeshCapability [class]
 Lines 3615-3620    Link Here 
3615
    return
3615
    return
3616
3616
3617
def register_Ns3Int64x64_t_methods(root_module, cls):
3617
def register_Ns3Int64x64_t_methods(root_module, cls):
3618
    cls.add_binary_comparison_operator('<=')
3618
    cls.add_binary_comparison_operator('!=')
3619
    cls.add_binary_comparison_operator('!=')
3619
    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
3620
    cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
3620
    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
3621
    cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
 Lines 3672-3678    Link Here 
3672
    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
3673
    cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
3673
    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
3674
    cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
3674
    cls.add_output_stream_operator()
3675
    cls.add_output_stream_operator()
3675
    cls.add_binary_comparison_operator('<=')
3676
    cls.add_binary_comparison_operator('==')
3676
    cls.add_binary_comparison_operator('==')
3677
    cls.add_binary_comparison_operator('>=')
3677
    cls.add_binary_comparison_operator('>=')
3678
    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
3678
    ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
 Lines 4612-4617    Link Here 
4612
    return
4612
    return
4613
4613
4614
def register_Ns3Time_methods(root_module, cls):
4614
def register_Ns3Time_methods(root_module, cls):
4615
    cls.add_binary_comparison_operator('<=')
4615
    cls.add_binary_comparison_operator('!=')
4616
    cls.add_binary_comparison_operator('!=')
4616
    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
4617
    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
4617
    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
4618
    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
 Lines 4620-4626    Link Here 
4620
    cls.add_binary_comparison_operator('>')
4621
    cls.add_binary_comparison_operator('>')
4621
    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
4622
    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
4622
    cls.add_output_stream_operator()
4623
    cls.add_output_stream_operator()
4623
    cls.add_binary_comparison_operator('<=')
4624
    cls.add_binary_comparison_operator('==')
4624
    cls.add_binary_comparison_operator('==')
4625
    cls.add_binary_comparison_operator('>=')
4625
    cls.add_binary_comparison_operator('>=')
4626
    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
4626
    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
 Lines 5239-5249    Link Here 
5239
                   'bool', 
5239
                   'bool', 
5240
                   [], 
5240
                   [], 
5241
                   is_pure_virtual=True, is_const=True, is_virtual=True)
5241
                   is_pure_virtual=True, is_const=True, is_virtual=True)
5242
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureCCHDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
5243
    cls.add_method('ConfigureCCHDcf', 
5244
                   'void', 
5245
                   [param('ns3::Ptr< ns3::Dcf >', 'dcf'), param('uint32_t', 'cwmin'), param('uint32_t', 'cwmax'), param('ns3::AcIndex', 'ac')], 
5246
                   visibility='protected')
5247
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
5242
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
5248
    cls.add_method('ConfigureDcf', 
5243
    cls.add_method('ConfigureDcf', 
5249
                   'void', 
5244
                   'void', 
 Lines 11502-11509    Link Here 
11502
def register_Ns3FlameFlameProtocolMac_methods(root_module, cls):
11497
def register_Ns3FlameFlameProtocolMac_methods(root_module, cls):
11503
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(ns3::flame::FlameProtocolMac const & arg0) [copy constructor]
11498
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(ns3::flame::FlameProtocolMac const & arg0) [copy constructor]
11504
    cls.add_constructor([param('ns3::flame::FlameProtocolMac const &', 'arg0')])
11499
    cls.add_constructor([param('ns3::flame::FlameProtocolMac const &', 'arg0')])
11505
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(uint32_t arg0, ns3::Ptr<ns3::flame::FlameProtocol> arg1) [constructor]
11500
    ## flame-protocol-mac.h (module 'mesh'): ns3::flame::FlameProtocolMac::FlameProtocolMac(ns3::Ptr<ns3::flame::FlameProtocol> arg0) [constructor]
11506
    cls.add_constructor([param('uint32_t', 'arg0'), param('ns3::Ptr< ns3::flame::FlameProtocol >', 'arg1')])
11501
    cls.add_constructor([param('ns3::Ptr< ns3::flame::FlameProtocol >', 'arg0')])
11507
    ## flame-protocol-mac.h (module 'mesh'): int64_t ns3::flame::FlameProtocolMac::AssignStreams(int64_t stream) [member function]
11502
    ## flame-protocol-mac.h (module 'mesh'): int64_t ns3::flame::FlameProtocolMac::AssignStreams(int64_t stream) [member function]
11508
    cls.add_method('AssignStreams', 
11503
    cls.add_method('AssignStreams', 
11509
                   'int64_t', 
11504
                   'int64_t', 
(-)ns-3.18/src/mesh/model/dot11s/airtime-metric.cc (-9 / +1 lines)
 Lines 46-63    Link Here 
46
                      &AirtimeLinkMetricCalculator::SetHeaderTid),
46
                      &AirtimeLinkMetricCalculator::SetHeaderTid),
47
                    MakeUintegerChecker<uint8_t> (0)
47
                    MakeUintegerChecker<uint8_t> (0)
48
                    )
48
                    )
49
    .AddAttribute ( "Dot11sMeshHeaderLength",
50
                    "Length of the mesh header",
51
                    UintegerValue (6),
52
                    MakeUintegerAccessor (
53
                      &AirtimeLinkMetricCalculator::m_meshHeaderLength),
54
                    MakeUintegerChecker<uint16_t> (0)
55
                    )
56
  ;
49
  ;
57
  return tid;
50
  return tid;
58
}
51
}
59
AirtimeLinkMetricCalculator::AirtimeLinkMetricCalculator () :
52
AirtimeLinkMetricCalculator::AirtimeLinkMetricCalculator ()
60
  m_overheadNanosec (0)
61
{
53
{
62
}
54
}
63
void
55
void
(-)ns-3.18/src/mesh/model/dot11s/airtime-metric.h (-8 lines)
 Lines 47-60    Link Here 
47
  void SetTestLength (uint16_t testLength);
47
  void SetTestLength (uint16_t testLength);
48
  void SetHeaderTid (uint8_t tid);
48
  void SetHeaderTid (uint8_t tid);
49
private:
49
private:
50
  /// Overhead expressed in nanoseconds:DIFS + SIFS + 2 * PREAMBLE + ACK
51
  uint32_t m_overheadNanosec;
52
  /// Bt value
53
  uint32_t m_testLength;
54
  /// header length (used in overhead)
55
  uint16_t m_headerLength;
56
  /// meshHeader length (minimum 6 octets)
57
  uint16_t m_meshHeaderLength;
58
  Ptr<Packet> m_testFrame;
50
  Ptr<Packet> m_testFrame;
59
  WifiMacHeader m_testHeader;
51
  WifiMacHeader m_testHeader;
60
};
52
};
(-)ns-3.18/src/mesh/model/flame/flame-protocol-mac.cc (-2 / +2 lines)
 Lines 25-32    Link Here 
25
namespace ns3 {
25
namespace ns3 {
26
namespace flame {
26
namespace flame {
27
NS_LOG_COMPONENT_DEFINE ("FlameProtocolMac");
27
NS_LOG_COMPONENT_DEFINE ("FlameProtocolMac");
28
FlameProtocolMac::FlameProtocolMac (uint32_t ifIndex, Ptr<FlameProtocol> protocol) :
28
FlameProtocolMac::FlameProtocolMac (Ptr<FlameProtocol> protocol) :
29
  m_protocol (protocol), m_ifIndex (ifIndex)
29
  m_protocol (protocol)
30
{
30
{
31
}
31
}
32
FlameProtocolMac::~FlameProtocolMac ()
32
FlameProtocolMac::~FlameProtocolMac ()
(-)ns-3.18/src/mesh/model/flame/flame-protocol-mac.h (-2 / +1 lines)
 Lines 34-40    Link Here 
34
class FlameProtocolMac : public MeshWifiInterfaceMacPlugin
34
class FlameProtocolMac : public MeshWifiInterfaceMacPlugin
35
{
35
{
36
public:
36
public:
37
  FlameProtocolMac (uint32_t, Ptr<FlameProtocol>);
37
  FlameProtocolMac (Ptr<FlameProtocol>);
38
  ~FlameProtocolMac ();
38
  ~FlameProtocolMac ();
39
  ///\name Inherited from MAC plugin
39
  ///\name Inherited from MAC plugin
40
  //\{
40
  //\{
 Lines 56-62    Link Here 
56
   * \{
56
   * \{
57
   */
57
   */
58
  Ptr<FlameProtocol> m_protocol;
58
  Ptr<FlameProtocol> m_protocol;
59
  uint32_t m_ifIndex;
60
  Ptr<MeshWifiInterfaceMac> m_parent;
59
  Ptr<MeshWifiInterfaceMac> m_parent;
61
  ///\}
60
  ///\}
62
  ///\name Statistics:
61
  ///\name Statistics:
(-)ns-3.18/src/mesh/model/flame/flame-protocol.cc (-1 / +1 lines)
 Lines 305-311    Link Here 
305
          return false;
305
          return false;
306
        }
306
        }
307
      // Installing plugins:
307
      // Installing plugins:
308
      Ptr<FlameProtocolMac> flameMac = Create<FlameProtocolMac> (wifiNetDev->GetIfIndex (), this);
308
      Ptr<FlameProtocolMac> flameMac = Create<FlameProtocolMac> (this);
309
      m_interfaces[wifiNetDev->GetIfIndex ()] = flameMac;
309
      m_interfaces[wifiNetDev->GetIfIndex ()] = flameMac;
310
      mac->SetBeaconGeneration (false);
310
      mac->SetBeaconGeneration (false);
311
      mac->InstallPlugin (flameMac);
311
      mac->InstallPlugin (flameMac);
(-)ns-3.18/src/mesh/test/flame/flame-test-suite.cc (-3 lines)
 Lines 73-80    Link Here 
73
  void TestExpire ();
73
  void TestExpire ();
74
  ///\}
74
  ///\}
75
private:
75
private:
76
  bool error;
77
78
  Mac48Address dst;
76
  Mac48Address dst;
79
  Mac48Address hop;
77
  Mac48Address hop;
80
  uint32_t iface;
78
  uint32_t iface;
 Lines 88-94    Link Here 
88
86
89
FlameRtableTest::FlameRtableTest () :
87
FlameRtableTest::FlameRtableTest () :
90
  TestCase ("FlameRtable"), 
88
  TestCase ("FlameRtable"), 
91
  error (false), 
92
  dst ("01:00:00:01:00:01"), 
89
  dst ("01:00:00:01:00:01"), 
93
  hop ("01:00:00:01:00:03"),
90
  hop ("01:00:00:01:00:03"),
94
  iface (8010), 
91
  iface (8010), 
(-)ns-3.18/src/mpi/model/distributed-simulator-impl.cc (-3 / +1 lines)
 Lines 14-22    Link Here 
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 *
15
 *
16
 * Author: George Riley <riley@ece.gatech.edu>
16
 * Author: George Riley <riley@ece.gatech.edu>
17
 *
18
 * Some updates to this code were developed under a research contract
19
 * sponsored by the Army Research Laboratory. (April 30, 2013)
20
 */
17
 */
21
18
22
#include "distributed-simulator-impl.h"
19
#include "distributed-simulator-impl.h"
 Lines 99-104    Link Here 
99
  m_pLBTS = new LbtsMessage[m_systemCount];
96
  m_pLBTS = new LbtsMessage[m_systemCount];
100
  m_grantedTime = Seconds (0);
97
  m_grantedTime = Seconds (0);
101
#else
98
#else
99
  NS_UNUSED (m_systemCount);
102
  NS_FATAL_ERROR ("Can't use distributed simulator without MPI compiled in");
100
  NS_FATAL_ERROR ("Can't use distributed simulator without MPI compiled in");
103
#endif
101
#endif
104
102
(-)ns-3.18/src/mpi/model/distributed-simulator-impl.h (-3 lines)
 Lines 14-22    Link Here 
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15
 *
15
 *
16
 * Author: George Riley <riley@ece.gatech.edu>
16
 * Author: George Riley <riley@ece.gatech.edu>
17
 *
18
 * Some updates to this code were developed under a research contract
19
 * sponsored by the Army Research Laboratory. (April 30, 2013)
20
 */
17
 */
21
18
22
#ifndef DISTRIBUTED_SIMULATOR_IMPL_H
19
#ifndef DISTRIBUTED_SIMULATOR_IMPL_H
(-)ns-3.18/src/mpi/model/mpi-receiver.cc (+6 lines)
 Lines 46-49    Link Here 
46
  m_rxCallback (p);
46
  m_rxCallback (p);
47
}
47
}
48
48
49
void
50
MpiReceiver::DoDispose(void)
51
{
52
  m_rxCallback = MakeNullCallback<void, Ptr<Packet> >();
53
}
54
49
} // namespace ns3
55
} // namespace ns3
(-)ns-3.18/src/mpi/model/mpi-receiver.h (+2 lines)
 Lines 56-61    Link Here 
56
   */
56
   */
57
  void SetReceiveCallback (Callback<void, Ptr<Packet> > callback);
57
  void SetReceiveCallback (Callback<void, Ptr<Packet> > callback);
58
private:
58
private:
59
  virtual void DoDispose (void);
60
59
  Callback<void, Ptr<Packet> > m_rxCallback;
61
  Callback<void, Ptr<Packet> > m_rxCallback;
60
};
62
};
61
63
(-)ns-3.18/src/netanim/examples/wireless-animation.cc (+1 lines)
 Lines 157-162    Link Here 
157
  AnimationInterface::SetNodeColor (wifiApNode, 0, 255, 0); // Optional
157
  AnimationInterface::SetNodeColor (wifiApNode, 0, 255, 0); // Optional
158
  AnimationInterface::SetNodeColor (wifiStaNodes, 255, 0, 0); // Optional
158
  AnimationInterface::SetNodeColor (wifiStaNodes, 255, 0, 0); // Optional
159
  AnimationInterface::SetNodeColor (csmaNodes, 0, 0, 255); // Optional
159
  AnimationInterface::SetNodeColor (csmaNodes, 0, 0, 255); // Optional
160
  AnimationInterface::SetBoundary (0, 0, 35, 35); // Optional
160
161
161
  AnimationInterface anim ("wireless-animation.xml"); // Mandatory
162
  AnimationInterface anim ("wireless-animation.xml"); // Mandatory
162
163
(-)ns-3.18/src/netanim/model/animation-interface.cc (+28 lines)
 Lines 59-64    Link Here 
59
std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions;
59
std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions;
60
std::map <uint32_t, Rgb> AnimationInterface::nodeColors;
60
std::map <uint32_t, Rgb> AnimationInterface::nodeColors;
61
std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> AnimationInterface::linkProperties;
61
std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> AnimationInterface::linkProperties;
62
Rectangle * AnimationInterface::userBoundary = 0;
62
63
63
64
64
AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML)
65
AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML)
 Lines 78-83    Link Here 
78
79
79
AnimationInterface::~AnimationInterface ()
80
AnimationInterface::~AnimationInterface ()
80
{
81
{
82
  if (userBoundary)
83
    {
84
      delete userBoundary;
85
    }
81
  StopAnimation ();
86
  StopAnimation ();
82
}
87
}
83
88
 Lines 1701-1706    Link Here 
1701
1706
1702
}
1707
}
1703
1708
1709
void AnimationInterface::SetBoundary (double minX, double minY, double maxX, double maxY)
1710
{
1711
  if (initialized)
1712
    NS_FATAL_ERROR ("SetBoundary must be used prior to creating the AnimationInterface object");
1713
  NS_ASSERT (minX < maxX);
1714
  NS_ASSERT (minY < maxY);
1715
  if (!userBoundary)
1716
    {
1717
      userBoundary = new Rectangle;
1718
    }
1719
  userBoundary->xMax = maxX;
1720
  userBoundary->yMax = maxY;
1721
  userBoundary->xMin = minX;
1722
  userBoundary->yMin = minY;
1723
}
1724
1704
void AnimationInterface::SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
1725
void AnimationInterface::SetNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b)
1705
{
1726
{
1706
  if (initialized)
1727
  if (initialized)
 Lines 1855-1860    Link Here 
1855
}
1876
}
1856
std::string AnimationInterface::GetXMLOpen_topology (double minX, double minY, double maxX, double maxY)
1877
std::string AnimationInterface::GetXMLOpen_topology (double minX, double minY, double maxX, double maxY)
1857
{
1878
{
1879
  if (userBoundary)
1880
    {
1881
      minX = userBoundary->xMin;
1882
      minY = userBoundary->yMin;
1883
      maxX = userBoundary->xMax;
1884
      maxY = userBoundary->yMax;
1885
    }
1858
  std::ostringstream oss;
1886
  std::ostringstream oss;
1859
  oss << "<topology minX = \"" << minX << "\" minY = \"" << minY
1887
  oss << "<topology minX = \"" << minX << "\" minY = \"" << minY
1860
      << "\" maxX = \"" << maxX << "\" maxY = \"" << maxY
1888
      << "\" maxX = \"" << maxX << "\" maxY = \"" << maxY
(-)ns-3.18/src/netanim/model/animation-interface.h (-1 / +13 lines)
 Lines 38-43    Link Here 
38
#include "ns3/lte-ue-net-device.h"
38
#include "ns3/lte-ue-net-device.h"
39
#include "ns3/lte-enb-net-device.h"
39
#include "ns3/lte-enb-net-device.h"
40
#include "ns3/uan-phy-gen.h"
40
#include "ns3/uan-phy-gen.h"
41
#include "ns3/rectangle.h"
41
42
42
namespace ns3 {
43
namespace ns3 {
43
44
 Lines 58-64    Link Here 
58
59
59
struct LinkPairCompare
60
struct LinkPairCompare
60
{
61
{
61
  bool operator () (P2pLinkNodeIdPair first, P2pLinkNodeIdPair second)
62
  bool operator () (P2pLinkNodeIdPair first, P2pLinkNodeIdPair second) const
62
    {
63
    {
63
      //Check if they are the same node pairs but flipped
64
      //Check if they are the same node pairs but flipped
64
      if (  ((first.fromNode == second.fromNode) && (first.toNode == second.toNode)) ||
65
      if (  ((first.fromNode == second.fromNode) && (first.toNode == second.toNode)) ||
 Lines 228-233    Link Here 
228
  static void SetConstantPosition (Ptr <Node> n, double x, double y, double z=0);
229
  static void SetConstantPosition (Ptr <Node> n, double x, double y, double z=0);
229
230
230
  /**
231
  /**
232
   * \brief Helper function to set the topology boundary rectangle
233
   * \param minX X value of the lower left corner
234
   * \param minY Y value of the lower left corner
235
   * \param maxX X value of the upper right corner
236
   * \param maxX Y value of the upper right corner
237
   *
238
   */
239
  static void SetBoundary (double minX, double minY, double maxX, double maxY);
240
241
  /**
231
   * \brief Helper function to set a brief description for a given node
242
   * \brief Helper function to set a brief description for a given node
232
   * \param n Ptr to the node
243
   * \param n Ptr to the node
233
   * \param descr A string to briefly describe the node
244
   * \param descr A string to briefly describe the node
 Lines 618-623    Link Here 
618
  double m_topoMinY;
629
  double m_topoMinY;
619
  double m_topoMaxX;
630
  double m_topoMaxX;
620
  double m_topoMaxY;
631
  double m_topoMaxY;
632
  static Rectangle * userBoundary;
621
633
622
  std::string GetPacketMetadata (Ptr<const Packet> p);
634
  std::string GetPacketMetadata (Ptr<const Packet> p);
623
635
(-)ns-3.18/src/network/utils/crc32.cc (+80 lines)
Line 0    Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * Copyright (c) 2013 PIOTR JURKIEWICZ
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License version 2 as
7
 * published by the Free Software Foundation;
8
 *
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program; if not, write to the Free Software
16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 *
18
 * Author: Piotr Jurkiewicz <piotr.jerzy.jurkiewicz@gmail.com>
19
 */
20
/*
21
 * Note:  CRC tables such as below are found in many projects;
22
 * below is the oldest reference (and copyright) to original work 
23
 * of this nature that we could find.
24
 *
25
 * COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or
26
 * code or tables extracted from it, as desired without restriction.
27
 */
28
#include <stdint.h>
29
30
namespace ns3 {
31
32
static uint32_t crc32table[256] = {
33
0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,
34
0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,
35
0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7,
36
0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,
37
0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,
38
0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,
39
0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
40
0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D,
41
0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433,
42
0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01,
43
0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,
44
0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,
45
0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,
46
0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
47
0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F,
48
0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD,
49
0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683,
50
0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,
51
0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,
52
0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,
53
0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
54
0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79,
55
0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F,
56
0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,
57
0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,
58
0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,
59
0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,
60
0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
61
0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB,
62
0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9,
63
0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,0xCDD70693,0x54DE5729,0x23D967BF,
64
0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D 
65
};
66
67
uint32_t
68
CRC32Calculate (const uint8_t *data, int length)
69
{
70
  uint32_t crc = 0xffffffff;
71
72
  while (length--)
73
    {
74
      crc = (crc >> 8) ^ crc32table[(crc & 0xFF) ^ *data++];
75
    }
76
  return ~crc;
77
}
78
79
} // namespace ns3
80
(-)ns-3.18/src/network/utils/crc32.h (+36 lines)
Line 0    Link Here 
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
 * Copyright (c) 2013 PIOTR JURKIEWICZ
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License version 2 as
7
 * published by the Free Software Foundation;
8
 *
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program; if not, write to the Free Software
16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 *
18
 * Author: Piotr Jurkiewicz <piotr.jerzy.jurkiewicz@gmail.com>
19
 */
20
#ifndef CRC32_H
21
#define CRC32_H
22
#include <stdint.h>
23
24
namespace ns3 {
25
26
/**
27
 * \param data buffer to calculate the checksum for
28
 * \param length the length of the buffer (bytes)
29
 * \returns the computed crc.
30
 *
31
 */
32
uint32_t CRC32Calculate (const uint8_t *data, int length);
33
34
} // namespace ns3
35
36
#endif
(-)ns-3.18/src/network/utils/ethernet-trailer.cc (-22 / +3 lines)
 Lines 22-27    Link Here 
22
#include "ns3/log.h"
22
#include "ns3/log.h"
23
#include "ns3/trailer.h"
23
#include "ns3/trailer.h"
24
#include "ethernet-trailer.h"
24
#include "ethernet-trailer.h"
25
#include "crc32.h"
25
26
26
NS_LOG_COMPONENT_DEFINE ("EthernetTrailer");
27
NS_LOG_COMPONENT_DEFINE ("EthernetTrailer");
27
28
 Lines 58-64    Link Here 
58
59
59
  buffer = new uint8_t[len];
60
  buffer = new uint8_t[len];
60
  p->CopyData (buffer, len);
61
  p->CopyData (buffer, len);
61
  crc = DoCalcFcs (buffer, len);
62
  crc = CRC32Calculate (buffer, len);
62
  delete[] buffer;
63
  delete[] buffer;
63
  return (m_fcs == crc);
64
  return (m_fcs == crc);
64
}
65
}
 Lines 77-83    Link Here 
77
78
78
  buffer = new uint8_t[len];
79
  buffer = new uint8_t[len];
79
  p->CopyData (buffer, len);
80
  p->CopyData (buffer, len);
80
  m_fcs = DoCalcFcs (buffer, len);
81
  m_fcs = CRC32Calculate (buffer, len);
81
  delete[] buffer;
82
  delete[] buffer;
82
}
83
}
83
84
 Lines 151-174    Link Here 
151
  return size;
152
  return size;
152
}
153
}
153
154
154
// This code is copied from /lib/crc32.c in the linux kernel.
155
// It assumes little endian ordering.
156
uint32_t
157
EthernetTrailer::DoCalcFcs (uint8_t const *buffer, size_t len) const
158
{
159
  NS_LOG_FUNCTION (this << &buffer << len);
160
  uint32_t crc = 0xffffffff;
161
  int i;
162
163
  while (len--)
164
    {
165
      crc ^= *buffer++;
166
      for (i = 0; i < 8; i++)
167
        {
168
          crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0);
169
        }
170
    }
171
  return ~crc;
172
}
173
174
} // namespace ns3
155
} // namespace ns3
(-)ns-3.18/src/network/utils/ethernet-trailer.h (-2 lines)
 Lines 104-111    Link Here 
104
  bool m_calcFcs;
104
  bool m_calcFcs;
105
  uint32_t m_fcs; /// Value of the fcs contained in the trailer
105
  uint32_t m_fcs; /// Value of the fcs contained in the trailer
106
106
107
  uint32_t DoCalcFcs (uint8_t const *buffer, size_t len) const;
108
109
};
107
};
110
108
111
} // namespace ns3
109
} // namespace ns3
(-)ns-3.18/src/network/wscript (+2 lines)
 Lines 25-30    Link Here 
25
        'model/trailer.cc',
25
        'model/trailer.cc',
26
        'utils/address-utils.cc',
26
        'utils/address-utils.cc',
27
        'utils/ascii-file.cc',
27
        'utils/ascii-file.cc',
28
        'utils/crc32.cc',
28
        'utils/data-rate.cc',
29
        'utils/data-rate.cc',
29
        'utils/drop-tail-queue.cc',
30
        'utils/drop-tail-queue.cc',
30
        'utils/error-model.cc',
31
        'utils/error-model.cc',
 Lines 102-107    Link Here 
102
        'utils/address-utils.h',
103
        'utils/address-utils.h',
103
        'utils/ascii-file.h',
104
        'utils/ascii-file.h',
104
        'utils/ascii-test.h',
105
        'utils/ascii-test.h',
106
        'utils/crc32.h',
105
        'utils/data-rate.h',
107
        'utils/data-rate.h',
106
        'utils/drop-tail-queue.h',
108
        'utils/drop-tail-queue.h',
107
        'utils/error-model.h',
109
        'utils/error-model.h',
(-)ns-3.18/src/uan/examples/uan-rc-example.cc (-3 / +1 lines)
 Lines 174-180    Link Here 
174
              "NumberOfRates", UintegerValue (m_numRates),
174
              "NumberOfRates", UintegerValue (m_numRates),
175
              "NumberOfNodes", UintegerValue (nNodes),
175
              "NumberOfNodes", UintegerValue (nNodes),
176
              "MaxReservations", UintegerValue (a),
176
              "MaxReservations", UintegerValue (a),
177
              "RetryRate", DoubleValue (1/30.0),
178
              "SIFS", TimeValue (m_sifs),
177
              "SIFS", TimeValue (m_sifs),
179
              "MaxPropDelay", TimeValue (pDelay),
178
              "MaxPropDelay", TimeValue (pDelay),
180
              "FrameSize", UintegerValue (m_pktSize));
179
              "FrameSize", UintegerValue (m_pktSize));
 Lines 186-193    Link Here 
186
185
187
  uan.SetMac ("ns3::UanMacRc",
186
  uan.SetMac ("ns3::UanMacRc",
188
              "NumberOfRates", UintegerValue (m_numRates),
187
              "NumberOfRates", UintegerValue (m_numRates),
189
              "MaxPropDelay", TimeValue (pDelay),
188
              "MaxPropDelay", TimeValue (pDelay));
190
              "RetryRate", DoubleValue (1.0/100.0));
191
  NodeContainer nodes;
189
  NodeContainer nodes;
192
  nodes.Create (nNodes);
190
  nodes.Create (nNodes);
193
  NetDeviceContainer devices = uan.Install (nodes, chan);
191
  NetDeviceContainer devices = uan.Install (nodes, chan);
(-)ns-3.18/src/uan/model/uan-mac-rc-gw.cc (-10 lines)
 Lines 122-132    Link Here 
122
                   UintegerValue (1023),
122
                   UintegerValue (1023),
123
                   MakeUintegerAccessor (&UanMacRcGw::m_numRates),
123
                   MakeUintegerAccessor (&UanMacRcGw::m_numRates),
124
                   MakeUintegerChecker<uint32_t> ())
124
                   MakeUintegerChecker<uint32_t> ())
125
    .AddAttribute ("RetryRate",
126
                   "Number of retry rates per second at non-gateway nodes",
127
                   DoubleValue (1 / 10.0),
128
                   MakeDoubleAccessor (&UanMacRcGw::m_retryRate),
129
                   MakeDoubleChecker<double> ())
130
    .AddAttribute ("MaxPropDelay",
125
    .AddAttribute ("MaxPropDelay",
131
                   "Maximum propagation delay between gateway and non-gateway nodes",
126
                   "Maximum propagation delay between gateway and non-gateway nodes",
132
                   TimeValue (Seconds (2)),
127
                   TimeValue (Seconds (2)),
 Lines 152-162    Link Here 
152
                   DoubleValue (0.01),
147
                   DoubleValue (0.01),
153
                   MakeDoubleAccessor (&UanMacRcGw::m_retryStep),
148
                   MakeDoubleAccessor (&UanMacRcGw::m_retryStep),
154
                   MakeDoubleChecker<double> ())
149
                   MakeDoubleChecker<double> ())
155
    .AddAttribute ("NumberOfRetryRates",
156
                   "Number of retry rates",
157
                   UintegerValue (100),
158
                   MakeUintegerAccessor (&UanMacRcGw::m_numRetryRates),
159
                   MakeUintegerChecker<uint16_t> ())
160
    .AddAttribute ("TotalRate",
150
    .AddAttribute ("TotalRate",
161
                   "Total available channel rate in bps (for a single channel, without splitting reservation channel)",
151
                   "Total available channel rate in bps (for a single channel, without splitting reservation channel)",
162
                   UintegerValue (4096),
152
                   UintegerValue (4096),
(-)ns-3.18/src/uan/model/uan-mac-rc-gw.h (-2 lines)
 Lines 116-122    Link Here 
116
  uint32_t m_ctsSizeN;
116
  uint32_t m_ctsSizeN;
117
  uint32_t m_ctsSizeG;
117
  uint32_t m_ctsSizeG;
118
  uint32_t m_ackSize;
118
  uint32_t m_ackSize;
119
  double m_retryRate;
120
  uint16_t m_currentRetryRate;
119
  uint16_t m_currentRetryRate;
121
  uint32_t m_currentRateNum;
120
  uint32_t m_currentRateNum;
122
  uint32_t m_numNodes;
121
  uint32_t m_numNodes;
 Lines 124-130    Link Here 
124
  uint32_t m_rateStep;
123
  uint32_t m_rateStep;
125
  uint32_t m_frameSize;
124
  uint32_t m_frameSize;
126
125
127
  uint16_t m_numRetryRates;
128
  double m_minRetryRate;
126
  double m_minRetryRate;
129
  double m_retryStep;
127
  double m_retryStep;
130
128
(-)ns-3.18/src/uan/model/uan-mac-rc.cc (-5 lines)
 Lines 244-254    Link Here 
244
                   DoubleValue (0.01),
244
                   DoubleValue (0.01),
245
                   MakeDoubleAccessor (&UanMacRc::m_retryStep),
245
                   MakeDoubleAccessor (&UanMacRc::m_retryStep),
246
                   MakeDoubleChecker<double> ())
246
                   MakeDoubleChecker<double> ())
247
    .AddAttribute ("NumberOfRetryRates",
248
                   "Number of retry rates",
249
                   UintegerValue (100),
250
                   MakeUintegerAccessor (&UanMacRc::m_numRetryRates),
251
                   MakeUintegerChecker<uint16_t> ())
252
    .AddAttribute ("MaxPropDelay",
247
    .AddAttribute ("MaxPropDelay",
253
                   "Maximum possible propagation delay to gateway",
248
                   "Maximum possible propagation delay to gateway",
254
                   TimeValue (Seconds (2)),
249
                   TimeValue (Seconds (2)),
(-)ns-3.18/src/uan/model/uan-mac-rc.h (-1 lines)
 Lines 185-191    Link Here 
185
  Time m_sifs;
185
  Time m_sifs;
186
  Time m_learnedProp;
186
  Time m_learnedProp;
187
187
188
  uint16_t m_numRetryRates;
189
  double m_minRetryRate;
188
  double m_minRetryRate;
190
  double m_retryStep;
189
  double m_retryStep;
191
190
(-)ns-3.18/src/wifi/bindings/modulegen__gcc_ILP32.py (-6 / +1 lines)
 Lines 31-37    Link Here 
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
32
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'])
32
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'])
33
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
33
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
34
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'])
34
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'])
35
    ## qos-tag.h (module 'wifi'): ns3::UserPriority [enumeration]
35
    ## qos-tag.h (module 'wifi'): ns3::UserPriority [enumeration]
36
    module.add_enum('UserPriority', ['UP_BK', 'UP_BE', 'UP_EE', 'UP_CL', 'UP_VI', 'UP_VO', 'UP_NC'])
36
    module.add_enum('UserPriority', ['UP_BK', 'UP_BE', 'UP_EE', 'UP_CL', 'UP_VI', 'UP_VO', 'UP_NC'])
37
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
37
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
 Lines 6491-6501    Link Here 
6491
                   'bool', 
6491
                   'bool', 
6492
                   [], 
6492
                   [], 
6493
                   is_pure_virtual=True, is_const=True, is_virtual=True)
6493
                   is_pure_virtual=True, is_const=True, is_virtual=True)
6494
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureCCHDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
6495
    cls.add_method('ConfigureCCHDcf', 
6496
                   'void', 
6497
                   [param('ns3::Ptr< ns3::Dcf >', 'dcf'), param('uint32_t', 'cwmin'), param('uint32_t', 'cwmax'), param('ns3::AcIndex', 'ac')], 
6498
                   visibility='protected')
6499
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
6494
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
6500
    cls.add_method('ConfigureDcf', 
6495
    cls.add_method('ConfigureDcf', 
6501
                   'void', 
6496
                   'void', 
(-)ns-3.18/src/wifi/bindings/modulegen__gcc_LP64.py (-6 / +1 lines)
 Lines 31-37    Link Here 
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
31
    ## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
32
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'])
32
    module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'])
33
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
33
    ## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
34
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'])
34
    module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'])
35
    ## qos-tag.h (module 'wifi'): ns3::UserPriority [enumeration]
35
    ## qos-tag.h (module 'wifi'): ns3::UserPriority [enumeration]
36
    module.add_enum('UserPriority', ['UP_BK', 'UP_BE', 'UP_EE', 'UP_CL', 'UP_VI', 'UP_VO', 'UP_NC'])
36
    module.add_enum('UserPriority', ['UP_BK', 'UP_BE', 'UP_EE', 'UP_CL', 'UP_VI', 'UP_VO', 'UP_NC'])
37
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
37
    ## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
 Lines 6491-6501    Link Here 
6491
                   'bool', 
6491
                   'bool', 
6492
                   [], 
6492
                   [], 
6493
                   is_pure_virtual=True, is_const=True, is_virtual=True)
6493
                   is_pure_virtual=True, is_const=True, is_virtual=True)
6494
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureCCHDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
6495
    cls.add_method('ConfigureCCHDcf', 
6496
                   'void', 
6497
                   [param('ns3::Ptr< ns3::Dcf >', 'dcf'), param('uint32_t', 'cwmin'), param('uint32_t', 'cwmax'), param('ns3::AcIndex', 'ac')], 
6498
                   visibility='protected')
6499
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
6494
    ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr<ns3::Dcf> dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
6500
    cls.add_method('ConfigureDcf', 
6495
    cls.add_method('ConfigureDcf', 
6501
                   'void', 
6496
                   'void', 
(-)ns-3.18/src/wifi/helper/wifi-helper.cc (+8 lines)
 Lines 26-31    Link Here 
26
#include "ns3/dca-txop.h"
26
#include "ns3/dca-txop.h"
27
#include "ns3/edca-txop-n.h"
27
#include "ns3/edca-txop-n.h"
28
#include "ns3/minstrel-wifi-manager.h"
28
#include "ns3/minstrel-wifi-manager.h"
29
#include "ns3/ap-wifi-mac.h"
29
#include "ns3/wifi-phy.h"
30
#include "ns3/wifi-phy.h"
30
#include "ns3/wifi-remote-station-manager.h"
31
#include "ns3/wifi-remote-station-manager.h"
31
#include "ns3/wifi-channel.h"
32
#include "ns3/wifi-channel.h"
 Lines 215-220    Link Here 
215
              rmac->GetAttribute ("BK_EdcaTxopN", ptr);
216
              rmac->GetAttribute ("BK_EdcaTxopN", ptr);
216
              Ptr<EdcaTxopN> bk_edcaTxopN = ptr.Get<EdcaTxopN> ();
217
              Ptr<EdcaTxopN> bk_edcaTxopN = ptr.Get<EdcaTxopN> ();
217
              currentStream += bk_edcaTxopN->AssignStreams (currentStream);
218
              currentStream += bk_edcaTxopN->AssignStreams (currentStream);
219
220
              // if an AP, handle any beacon jitter
221
              Ptr<ApWifiMac> apmac = DynamicCast<ApWifiMac> (rmac);
222
              if (apmac)
223
                {
224
                  currentStream += apmac->AssignStreams (currentStream);
225
                }
218
            }
226
            }
219
        }
227
        }
220
    }
228
    }
(-)ns-3.18/src/wifi/model/aarfcd-wifi-manager.h (-1 lines)
 Lines 77-83    Link Here 
77
  // aarf-cd fields below
77
  // aarf-cd fields below
78
  uint32_t m_minRtsWnd;
78
  uint32_t m_minRtsWnd;
79
  uint32_t m_maxRtsWnd;
79
  uint32_t m_maxRtsWnd;
80
  bool m_rtsFailsAsDataFails;
81
  bool m_turnOffRtsAfterRateDecrease;
80
  bool m_turnOffRtsAfterRateDecrease;
82
  bool m_turnOnRtsAfterRateIncrease;
81
  bool m_turnOnRtsAfterRateIncrease;
83
};
82
};
(-)ns-3.18/src/wifi/model/ap-wifi-mac.cc (-1 / +27 lines)
 Lines 55-60    Link Here 
55
                   MakeTimeAccessor (&ApWifiMac::GetBeaconInterval,
55
                   MakeTimeAccessor (&ApWifiMac::GetBeaconInterval,
56
                                     &ApWifiMac::SetBeaconInterval),
56
                                     &ApWifiMac::SetBeaconInterval),
57
                   MakeTimeChecker ())
57
                   MakeTimeChecker ())
58
    .AddAttribute ("BeaconJitter", "A uniform random variable to cause the initial beacon starting time (after simulation time 0) to be distributed between 0 and the BeaconInterval.",
59
                   StringValue ("ns3::UniformRandomVariable"),
60
                   MakePointerAccessor (&ApWifiMac::m_beaconJitter),
61
                   MakePointerChecker<UniformRandomVariable> ())
62
    .AddAttribute ("EnableBeaconJitter", "If beacons are enabled, whether to jitter the initial send event.",
63
                   BooleanValue (false),
64
                   MakeBooleanAccessor (&ApWifiMac::m_enableBeaconJitter),
65
                   MakeBooleanChecker ())
58
    .AddAttribute ("BeaconGeneration", "Whether or not beacons are generated.",
66
    .AddAttribute ("BeaconGeneration", "Whether or not beacons are generated.",
59
                   BooleanValue (true),
67
                   BooleanValue (true),
60
                   MakeBooleanAccessor (&ApWifiMac::SetBeaconGeneration,
68
                   MakeBooleanAccessor (&ApWifiMac::SetBeaconGeneration,
 Lines 172-177    Link Here 
172
  SendOneBeacon ();
180
  SendOneBeacon ();
173
}
181
}
174
182
183
int64_t
184
ApWifiMac::AssignStreams (int64_t stream)
185
{
186
  NS_LOG_FUNCTION (this << stream);
187
  m_beaconJitter->SetStream (stream);
188
  return 1;
189
}
190
175
void
191
void
176
ApWifiMac::ForwardDown (Ptr<const Packet> packet, Mac48Address from,
192
ApWifiMac::ForwardDown (Ptr<const Packet> packet, Mac48Address from,
177
                        Mac48Address to)
193
                        Mac48Address to)
 Lines 648-654    Link Here 
648
  m_beaconEvent.Cancel ();
664
  m_beaconEvent.Cancel ();
649
  if (m_enableBeaconGeneration)
665
  if (m_enableBeaconGeneration)
650
    {
666
    {
651
      m_beaconEvent = Simulator::ScheduleNow (&ApWifiMac::SendOneBeacon, this);
667
      if (m_enableBeaconJitter)
668
        {
669
          int64_t jitter = m_beaconJitter->GetValue (0, m_beaconInterval.GetMicroSeconds ());
670
          NS_LOG_DEBUG ("Scheduling initial beacon for access point " << GetAddress() << " at time " << jitter << " microseconds");
671
          m_beaconEvent = Simulator::Schedule (MicroSeconds (jitter), &ApWifiMac::SendOneBeacon, this);
672
        }
673
      else
674
        {
675
          NS_LOG_DEBUG ("Scheduling initial beacon for access point " << GetAddress() << " at time 0");
676
          m_beaconEvent = Simulator::ScheduleNow (&ApWifiMac::SendOneBeacon, this);
677
        }
652
    }
678
    }
653
  RegularWifiMac::DoInitialize ();
679
  RegularWifiMac::DoInitialize ();
654
}
680
}
(-)ns-3.18/src/wifi/model/ap-wifi-mac.h (+13 lines)
 Lines 26-31    Link Here 
26
#include "ht-capabilities.h"
26
#include "ht-capabilities.h"
27
#include "amsdu-subframe-header.h"
27
#include "amsdu-subframe-header.h"
28
#include "supported-rates.h"
28
#include "supported-rates.h"
29
#include "ns3/random-variable-stream.h"
29
30
30
namespace ns3 {
31
namespace ns3 {
31
32
 Lines 95-100    Link Here 
95
   */
96
   */
96
  void StartBeaconing (void);
97
  void StartBeaconing (void);
97
98
99
 /**
100
  * Assign a fixed random variable stream number to the random variables
101
  * used by this model.  Return the number of streams (possibly zero) that
102
  * have been assigned.
103
  *
104
  * \param stream first stream index to use
105
  * \return the number of stream indices assigned by this model
106
  */
107
  int64_t AssignStreams (int64_t stream);
108
98
private:
109
private:
99
  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr);
110
  virtual void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr);
100
  virtual void TxOk (const WifiMacHeader &hdr);
111
  virtual void TxOk (const WifiMacHeader &hdr);
 Lines 128-133    Link Here 
128
  Time m_beaconInterval;
139
  Time m_beaconInterval;
129
  bool m_enableBeaconGeneration;
140
  bool m_enableBeaconGeneration;
130
  EventId m_beaconEvent;
141
  EventId m_beaconEvent;
142
  Ptr<UniformRandomVariable> m_beaconJitter;
143
  bool m_enableBeaconJitter;
131
};
144
};
132
145
133
} // namespace ns3
146
} // namespace ns3
(-)ns-3.18/src/wifi/model/dcf-manager.cc (-1 / +9 lines)
 Lines 287-292    Link Here 
287
DcfManager::SetupPhyListener (Ptr<WifiPhy> phy)
287
DcfManager::SetupPhyListener (Ptr<WifiPhy> phy)
288
{
288
{
289
  NS_LOG_FUNCTION (this << phy);
289
  NS_LOG_FUNCTION (this << phy);
290
  if (m_phyListener != 0)
291
    {
292
      delete m_phyListener;
293
    }
290
  m_phyListener = new PhyListener (this);
294
  m_phyListener = new PhyListener (this);
291
  phy->RegisterListener (m_phyListener);
295
  phy->RegisterListener (m_phyListener);
292
}
296
}
 Lines 294-299    Link Here 
294
DcfManager::SetupLowListener (Ptr<MacLow> low)
298
DcfManager::SetupLowListener (Ptr<MacLow> low)
295
{
299
{
296
  NS_LOG_FUNCTION (this << low);
300
  NS_LOG_FUNCTION (this << low);
301
  if (m_lowListener != 0)
302
    {
303
      delete m_lowListener;
304
    }
297
  m_lowListener = new LowDcfListener (this);
305
  m_lowListener = new LowDcfListener (this);
298
  low->RegisterDcfListener (m_lowListener);
306
  low->RegisterDcfListener (m_lowListener);
299
}
307
}
 Lines 748-754    Link Here 
748
DcfManager::NotifyNavStartNow (Time duration)
756
DcfManager::NotifyNavStartNow (Time duration)
749
{
757
{
750
  NS_LOG_FUNCTION (this << duration);
758
  NS_LOG_FUNCTION (this << duration);
751
  NS_ASSERT (m_lastNavStart < Simulator::Now ());
759
  NS_ASSERT (m_lastNavStart <= Simulator::Now ());
752
  MY_DEBUG ("nav start for=" << duration);
760
  MY_DEBUG ("nav start for=" << duration);
753
  UpdateBackoff ();
761
  UpdateBackoff ();
754
  Time newNavEnd = Simulator::Now () + duration;
762
  Time newNavEnd = Simulator::Now () + duration;
(-)ns-3.18/src/wifi/model/dcf-manager.h (-1 lines)
 Lines 324-330    Link Here 
324
  Time m_lastSwitchingStart;
324
  Time m_lastSwitchingStart;
325
  Time m_lastSwitchingDuration;
325
  Time m_lastSwitchingDuration;
326
  bool m_rxing;
326
  bool m_rxing;
327
  bool m_sleeping;
328
  Time m_eifsNoDifs;
327
  Time m_eifsNoDifs;
329
  EventId m_accessTimeout;
328
  EventId m_accessTimeout;
330
  uint32_t m_slotTimeUs;
329
  uint32_t m_slotTimeUs;
(-)ns-3.18/src/wifi/model/ideal-wifi-manager.h (-2 lines)
 Lines 77-84    Link Here 
77
77
78
  double m_ber;
78
  double m_ber;
79
  Thresholds m_thresholds;
79
  Thresholds m_thresholds;
80
  double m_minSnr;
81
  double m_maxSnr;
82
};
80
};
83
81
84
} // namespace ns3
82
} // namespace ns3
(-)ns-3.18/src/wifi/model/mac-low.cc (-10 / +16 lines)
 Lines 1053-1073    Link Here 
1053
{
1053
{
1054
  WifiPreamble preamble;
1054
  WifiPreamble preamble;
1055
  Time txTime = Seconds (0);
1055
  Time txTime = Seconds (0);
1056
  WifiTxVector rtsTxVector = GetRtsTxVector (packet, hdr);
1057
  WifiTxVector dataTxVector = GetDataTxVector (packet, hdr);
1058
   //standard says RTS packets can have GF format sec 9.6.0e.1 page 110 bullet b 2
1059
  if ( m_phy->GetGreenfield()&& m_stationManager->GetGreenfieldSupported (m_currentHdr.GetAddr1 ()))
1060
    preamble= WIFI_PREAMBLE_HT_GF;
1061
  else if (rtsTxVector.GetMode().GetModulationClass () == WIFI_MOD_CLASS_HT)
1062
    preamble= WIFI_PREAMBLE_HT_MF;
1063
  else
1064
    preamble=WIFI_PREAMBLE_LONG;
1065
  if (params.MustSendRts ())
1056
  if (params.MustSendRts ())
1066
    {
1057
    {
1058
      WifiTxVector rtsTxVector = GetRtsTxVector (packet, hdr);
1059
      //standard says RTS packets can have GF format sec 9.6.0e.1 page 110 bullet b 2
1060
      if (m_phy->GetGreenfield () && m_stationManager->GetGreenfieldSupported (m_currentHdr.GetAddr1 ()))
1061
        {
1062
          preamble = WIFI_PREAMBLE_HT_GF;
1063
        }
1064
      else if (rtsTxVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_HT)
1065
        {
1066
          preamble = WIFI_PREAMBLE_HT_MF;
1067
        }
1068
      else
1069
        {
1070
          preamble = WIFI_PREAMBLE_LONG;
1071
        }
1067
      txTime += m_phy->CalculateTxDuration (GetRtsSize (), rtsTxVector, preamble);
1072
      txTime += m_phy->CalculateTxDuration (GetRtsSize (), rtsTxVector, preamble);
1068
      txTime += GetCtsDuration (hdr->GetAddr1 (), rtsTxVector);
1073
      txTime += GetCtsDuration (hdr->GetAddr1 (), rtsTxVector);
1069
      txTime += Time (GetSifs () * 2);
1074
      txTime += Time (GetSifs () * 2);
1070
    }
1075
    }
1076
  WifiTxVector dataTxVector = GetDataTxVector (packet, hdr);
1071
  //standard says RTS packets can have GF format sec 9.6.0e.1 page 110 bullet b 2
1077
  //standard says RTS packets can have GF format sec 9.6.0e.1 page 110 bullet b 2
1072
  if ( m_phy->GetGreenfield()&& m_stationManager->GetGreenfieldSupported (m_currentHdr.GetAddr1 ()))
1078
  if ( m_phy->GetGreenfield()&& m_stationManager->GetGreenfieldSupported (m_currentHdr.GetAddr1 ()))
1073
    preamble= WIFI_PREAMBLE_HT_GF;
1079
    preamble= WIFI_PREAMBLE_HT_GF;
 Lines 1153-1159    Link Here 
1153
void
1159
void
1154
MacLow::NavCounterResetCtsMissed (Time rtsEndRxTime)
1160
MacLow::NavCounterResetCtsMissed (Time rtsEndRxTime)
1155
{
1161
{
1156
  if (m_phy->GetLastRxStartTime () > rtsEndRxTime)
1162
  if (m_phy->GetLastRxStartTime () < rtsEndRxTime)
1157
    {
1163
    {
1158
      DoNavResetNow (Seconds (0.0));
1164
      DoNavResetNow (Seconds (0.0));
1159
    }
1165
    }
(-)ns-3.18/src/wifi/model/mac-low.h (-4 / +1 lines)
 Lines 519-526    Link Here 
519
  uint32_t GetRtsSize (void) const;
519
  uint32_t GetRtsSize (void) const;
520
  uint32_t GetCtsSize (void) const;
520
  uint32_t GetCtsSize (void) const;
521
  uint32_t GetSize (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
521
  uint32_t GetSize (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
522
  Time NowUs (void) const;
522
  void ForwardDown (Ptr<const Packet> packet, const WifiMacHeader *hdr,
523
void ForwardDown (Ptr<const Packet> packet, const WifiMacHeader *hdr,
524
                    WifiTxVector txVector, WifiPreamble preamble);
523
                    WifiTxVector txVector, WifiPreamble preamble);
525
  WifiTxVector GetRtsTxVector (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
524
  WifiTxVector GetRtsTxVector (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
526
  WifiTxVector GetDataTxVector (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
525
  WifiTxVector GetDataTxVector (Ptr<const Packet> packet, const WifiMacHeader *hdr) const;
 Lines 552-558    Link Here 
552
  void NotifyAckTimeoutResetNow ();
551
  void NotifyAckTimeoutResetNow ();
553
  void NotifyCtsTimeoutStartNow (Time duration);
552
  void NotifyCtsTimeoutStartNow (Time duration);
554
  void NotifyCtsTimeoutResetNow ();
553
  void NotifyCtsTimeoutResetNow ();
555
  void MaybeCancelPrevious (void);
556
554
557
  void NavCounterResetCtsMissed (Time rtsEndRxTime);
555
  void NavCounterResetCtsMissed (Time rtsEndRxTime);
558
  void NormalAckTimeout (void);
556
  void NormalAckTimeout (void);
 Lines 570-576    Link Here 
570
568
571
  void SendRtsForPacket (void);
569
  void SendRtsForPacket (void);
572
  void SendDataPacket (void);
570
  void SendDataPacket (void);
573
  void SendCurrentTxPacket (void);
574
  void StartDataTxTimers (WifiTxVector dataTxVector);
571
  void StartDataTxTimers (WifiTxVector dataTxVector);
575
  virtual void DoDispose (void);
572
  virtual void DoDispose (void);
576
  /**
573
  /**
(-)ns-3.18/src/wifi/model/minstrel-wifi-manager.cc (-5 lines)
 Lines 101-111    Link Here 
101
                   DoubleValue (75),
101
                   DoubleValue (75),
102
                   MakeDoubleAccessor (&MinstrelWifiManager::m_ewmaLevel),
102
                   MakeDoubleAccessor (&MinstrelWifiManager::m_ewmaLevel),
103
                   MakeDoubleChecker<double> ())
103
                   MakeDoubleChecker<double> ())
104
    .AddAttribute ("SegmentSize",
105
                   "The largest allowable segment size packet",
106
                   DoubleValue (6000),
107
                   MakeDoubleAccessor (&MinstrelWifiManager::m_segmentSize),
108
                   MakeDoubleChecker <double> ())
109
    .AddAttribute ("SampleColumn",
104
    .AddAttribute ("SampleColumn",
110
                   "The number of columns used for sampling",
105
                   "The number of columns used for sampling",
111
                   DoubleValue (10),
106
                   DoubleValue (10),
(-)ns-3.18/src/wifi/model/minstrel-wifi-manager.h (-1 lines)
 Lines 161-167    Link Here 
161
  Time m_updateStats;  ///< how frequent do we calculate the stats(1/10 seconds)
161
  Time m_updateStats;  ///< how frequent do we calculate the stats(1/10 seconds)
162
  double m_lookAroundRate;  ///< the % to try other rates than our current rate
162
  double m_lookAroundRate;  ///< the % to try other rates than our current rate
163
  double m_ewmaLevel;  ///< exponential weighted moving average
163
  double m_ewmaLevel;  ///< exponential weighted moving average
164
  uint32_t m_segmentSize;  ///< largest allowable segment size
165
  uint32_t m_sampleCol;  ///< number of sample columns
164
  uint32_t m_sampleCol;  ///< number of sample columns
166
  uint32_t m_pktLen;  ///< packet length used  for calculate mode TxTime
165
  uint32_t m_pktLen;  ///< packet length used  for calculate mode TxTime
167
  uint32_t m_nsupported;  ///< modes supported
166
  uint32_t m_nsupported;  ///< modes supported
(-)ns-3.18/src/wifi/model/regular-wifi-mac.cc (-23 / +9 lines)
 Lines 92-117    Link Here 
92
{
92
{
93
  NS_LOG_FUNCTION (this);
93
  NS_LOG_FUNCTION (this);
94
  delete m_rxMiddle;
94
  delete m_rxMiddle;
95
  m_rxMiddle = NULL;
95
  m_rxMiddle = 0;
96
96
97
  delete m_txMiddle;
97
  delete m_txMiddle;
98
  m_txMiddle = NULL;
98
  m_txMiddle = 0;
99
99
100
  delete m_dcfManager;
100
  delete m_dcfManager;
101
  m_dcfManager = NULL;
101
  m_dcfManager = 0;
102
102
103
  m_low->Dispose ();
103
  m_low->Dispose ();
104
  m_low = NULL;
104
  m_low = 0;
105
105
106
  m_phy = NULL;
106
  m_phy = 0;
107
  m_stationManager = NULL;
107
  m_stationManager = 0;
108
108
109
  m_dca->Dispose ();
109
  m_dca->Dispose ();
110
  m_dca = NULL;
110
  m_dca = 0;
111
111
112
  for (EdcaQueues::iterator i = m_edca.begin (); i != m_edca.end (); ++i)
112
  for (EdcaQueues::iterator i = m_edca.begin (); i != m_edca.end (); ++i)
113
    {
113
    {
114
      i->second = NULL;
114
      i->second = 0;
115
    }
115
    }
116
}
116
}
117
117
 Lines 701-712    Link Here 
701
701
702
  switch (standard)
702
  switch (standard)
703
    {
703
    {
704
    case WIFI_PHY_STANDARD_80211p_CCH:
705
    case WIFI_PHY_STANDARD_80211p_SCH:
706
      cwmin = 15;
707
      cwmax = 511;
708
      break;
709
710
    case WIFI_PHY_STANDARD_holland:
704
    case WIFI_PHY_STANDARD_holland:
711
    case WIFI_PHY_STANDARD_80211a:
705
    case WIFI_PHY_STANDARD_80211a:
712
    case WIFI_PHY_STANDARD_80211g:
706
    case WIFI_PHY_STANDARD_80211g:
 Lines 734-748    Link Here 
734
  // Now we configure the EDCA functions
728
  // Now we configure the EDCA functions
735
  for (EdcaQueues::iterator i = m_edca.begin (); i != m_edca.end (); ++i)
729
  for (EdcaQueues::iterator i = m_edca.begin (); i != m_edca.end (); ++i)
736
    {
730
    {
737
      // Special configuration for 802.11p CCH
731
      ConfigureDcf (i->second, cwmin, cwmax, i->first);
738
      if (standard == WIFI_PHY_STANDARD_80211p_CCH)
739
        {
740
          ConfigureCCHDcf (i->second, cwmin, cwmax, i->first);
741
        }
742
      else
743
        {
744
          ConfigureDcf (i->second, cwmin, cwmax, i->first);
745
        }
746
    }
732
    }
747
}
733
}
748
734
(-)ns-3.18/src/wifi/model/wifi-mac-header.cc (-1 / +1 lines)
 Lines 46-52    Link Here 
46
};
46
};
47
47
48
WifiMacHeader::WifiMacHeader ()
48
WifiMacHeader::WifiMacHeader ()
49
  : m_ctrlPwrMgt (0),
49
  :
50
    m_ctrlMoreData (0),
50
    m_ctrlMoreData (0),
51
    m_ctrlWep (0),
51
    m_ctrlWep (0),
52
    m_ctrlOrder (1),
52
    m_ctrlOrder (1),
(-)ns-3.18/src/wifi/model/wifi-mac-header.h (-1 lines)
 Lines 208-214    Link Here 
208
  uint8_t m_ctrlFromDs;
208
  uint8_t m_ctrlFromDs;
209
  uint8_t m_ctrlMoreFrag;
209
  uint8_t m_ctrlMoreFrag;
210
  uint8_t m_ctrlRetry;
210
  uint8_t m_ctrlRetry;
211
  uint8_t m_ctrlPwrMgt;
212
  uint8_t m_ctrlMoreData;
211
  uint8_t m_ctrlMoreData;
213
  uint8_t m_ctrlWep;
212
  uint8_t m_ctrlWep;
214
  uint8_t m_ctrlOrder;
213
  uint8_t m_ctrlOrder;
(-)ns-3.18/src/wifi/model/wifi-mac-queue.cc (-3 lines)
 Lines 167-173    Link Here 
167
  if (!m_queue.empty ())
167
  if (!m_queue.empty ())
168
    {
168
    {
169
      PacketQueueI it;
169
      PacketQueueI it;
170
      NS_ASSERT (type <= 4);
171
      for (it = m_queue.begin (); it != m_queue.end (); ++it)
170
      for (it = m_queue.begin (); it != m_queue.end (); ++it)
172
        {
171
        {
173
          if (it->hdr.IsQosData ())
172
          if (it->hdr.IsQosData ())
 Lines 195-201    Link Here 
195
  if (!m_queue.empty ())
194
  if (!m_queue.empty ())
196
    {
195
    {
197
      PacketQueueI it;
196
      PacketQueueI it;
198
      NS_ASSERT (type <= 4);
199
      for (it = m_queue.begin (); it != m_queue.end (); ++it)
197
      for (it = m_queue.begin (); it != m_queue.end (); ++it)
200
        {
198
        {
201
          if (it->hdr.IsQosData ())
199
          if (it->hdr.IsQosData ())
 Lines 288-294    Link Here 
288
  if (!m_queue.empty ())
286
  if (!m_queue.empty ())
289
    {
287
    {
290
      PacketQueueI it;
288
      PacketQueueI it;
291
      NS_ASSERT (type <= 4);
292
      for (it = m_queue.begin (); it != m_queue.end (); it++)
289
      for (it = m_queue.begin (); it != m_queue.end (); it++)
293
        {
290
        {
294
          if (GetAddressForPacket (type, it) == addr)
291
          if (GetAddressForPacket (type, it) == addr)
(-)ns-3.18/src/wifi/model/wifi-mac-queue.h (-1 lines)
 Lines 141-147    Link Here 
141
  };
141
  };
142
142
143
  PacketQueue m_queue;
143
  PacketQueue m_queue;
144
  WifiMacParameters *m_parameters;
145
  uint32_t m_size;
144
  uint32_t m_size;
146
  uint32_t m_maxSize;
145
  uint32_t m_maxSize;
147
  Time m_maxDelay;
146
  Time m_maxDelay;
(-)ns-3.18/src/wifi/model/wifi-mac.cc (-54 lines)
 Lines 293-304    Link Here 
293
    case WIFI_PHY_STANDARD_holland:
293
    case WIFI_PHY_STANDARD_holland:
294
      Configure80211a ();
294
      Configure80211a ();
295
      break;
295
      break;
296
    case WIFI_PHY_STANDARD_80211p_CCH:
297
      Configure80211p_CCH ();
298
      break;
299
    case WIFI_PHY_STANDARD_80211p_SCH:
300
      Configure80211p_SCH ();
301
      break;
302
    case WIFI_PHY_STANDARD_80211n_2_4GHZ:
296
    case WIFI_PHY_STANDARD_80211n_2_4GHZ:
303
      Configure80211n_2_4Ghz ();
297
      Configure80211n_2_4Ghz ();
304
      break;
298
      break;
 Lines 369-385    Link Here 
369
}
363
}
370
364
371
void
365
void
372
WifiMac::Configure80211p_CCH (void)
373
{
374
  Configure80211_10Mhz ();
375
}
376
377
void
378
WifiMac::Configure80211p_SCH (void)
379
{
380
  Configure80211_10Mhz ();
381
}
382
void
383
WifiMac::Configure80211n_2_4Ghz (void)
366
WifiMac::Configure80211n_2_4Ghz (void)
384
{
367
{
385
  Configure80211g ();
368
  Configure80211g ();
 Lines 432-472    Link Here 
432
      break;
415
      break;
433
    }
416
    }
434
}
417
}
435
436
void
437
WifiMac::ConfigureCCHDcf (Ptr<Dcf> dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac)
438
{
439
  /* see IEEE 1609.4-2006 section 6.3.1, Table 1 */
440
  switch (ac)
441
    {
442
    case AC_VO:
443
      dcf->SetMinCw ((cwmin + 1) / 4 - 1);
444
      dcf->SetMaxCw ((cwmin + 1) / 2 - 1);
445
      dcf->SetAifsn (2);
446
      break;
447
    case AC_VI:
448
      dcf->SetMinCw ((cwmin + 1) / 4 - 1);
449
      dcf->SetMaxCw ((cwmin + 1) / 2 - 1);
450
      dcf->SetAifsn (3);
451
      break;
452
    case AC_BE:
453
      dcf->SetMinCw ((cwmin + 1) / 2 - 1);
454
      dcf->SetMaxCw (cwmin);
455
      dcf->SetAifsn (6);
456
      break;
457
    case AC_BK:
458
      dcf->SetMinCw (cwmin);
459
      dcf->SetMaxCw (cwmax);
460
      dcf->SetAifsn (9);
461
      break;
462
    case AC_BE_NQOS:
463
      dcf->SetMinCw (cwmin);
464
      dcf->SetMaxCw (cwmax);
465
      dcf->SetAifsn (2);
466
      break;
467
    case AC_UNDEF:
468
      NS_FATAL_ERROR ("I don't know what to do with this");
469
      break;
470
    }
471
}
472
} // namespace ns3
418
} // namespace ns3
(-)ns-3.18/src/wifi/model/wifi-mac.h (-3 lines)
 Lines 238-244    Link Here 
238
238
239
protected:
239
protected:
240
  void ConfigureDcf (Ptr<Dcf> dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac);
240
  void ConfigureDcf (Ptr<Dcf> dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac);
241
  void ConfigureCCHDcf (Ptr<Dcf> dcf, uint32_t cwmin, uint32_t cwmax, enum AcIndex ac);
242
private:
241
private:
243
  static Time GetDefaultMaxPropagationDelay (void);
242
  static Time GetDefaultMaxPropagationDelay (void);
244
  static Time GetDefaultSlot (void);
243
  static Time GetDefaultSlot (void);
 Lines 268-275    Link Here 
268
  void Configure80211g (void);
267
  void Configure80211g (void);
269
  void Configure80211_10Mhz (void);
268
  void Configure80211_10Mhz (void);
270
  void Configure80211_5Mhz ();
269
  void Configure80211_5Mhz ();
271
  void Configure80211p_CCH (void);
272
  void Configure80211p_SCH (void);
273
  void Configure80211n_2_4Ghz (void);
270
  void Configure80211n_2_4Ghz (void);
274
  void Configure80211n_5Ghz (void);
271
  void Configure80211n_5Ghz (void);
275
272
(-)ns-3.18/src/wifi/model/wifi-net-device.h (-1 lines)
 Lines 119-125    Link Here 
119
  void ForwardUp (Ptr<Packet> packet, Mac48Address from, Mac48Address to);
119
  void ForwardUp (Ptr<Packet> packet, Mac48Address from, Mac48Address to);
120
  void LinkUp (void);
120
  void LinkUp (void);
121
  void LinkDown (void);
121
  void LinkDown (void);
122
  void Setup (void);
123
  Ptr<WifiChannel> DoGetChannel (void) const;
122
  Ptr<WifiChannel> DoGetChannel (void) const;
124
  void CompleteConfig (void);
123
  void CompleteConfig (void);
125
124
(-)ns-3.18/src/wifi/model/wifi-phy-standard.h (-4 lines)
 Lines 45-54    Link Here 
45
   *  ACM MOBICOM, 2001.
45
   *  ACM MOBICOM, 2001.
46
   */
46
   */
47
  WIFI_PHY_STANDARD_holland,
47
  WIFI_PHY_STANDARD_holland,
48
  /** \deprecated see <A HREF="http://www.nsnam.org/bugzilla/show_bug.cgi?id=945">bug 945</A> */
49
  WIFI_PHY_STANDARD_80211p_CCH,
50
  /** \deprecated see <A HREF="http://www.nsnam.org/bugzilla/show_bug.cgi?id=945">bug 945</A> */
51
  WIFI_PHY_STANDARD_80211p_SCH,
52
  // 11n support
48
  // 11n support
53
  WIFI_PHY_STANDARD_80211n_2_4GHZ,
49
  WIFI_PHY_STANDARD_80211n_2_4GHZ,
54
  // needed for different mac parameters
50
  // needed for different mac parameters
(-)ns-3.18/src/wifi/model/wifi-phy-state-helper.cc (-1 / +4 lines)
 Lines 420-426    Link Here 
420
    case WifiPhy::TX:
420
    case WifiPhy::TX:
421
      break;
421
      break;
422
    }
422
    }
423
  m_startCcaBusy = now;
423
  if (GetState () != WifiPhy::CCA_BUSY)
424
    {
425
      m_startCcaBusy = now;
426
    }
424
  m_endCcaBusy = std::max (m_endCcaBusy, now + duration);
427
  m_endCcaBusy = std::max (m_endCcaBusy, now + duration);
425
}
428
}
426
429
(-)ns-3.18/src/wifi/model/wifi-remote-station-manager.cc (-41 / +41 lines)
 Lines 871-897    Link Here 
871
    }
871
    }
872
  if(HasHtSupported())
872
  if(HasHtSupported())
873
      {
873
      {
874
  if (!found)
874
        if (!found)
875
    {
875
          {
876
     uint8_t mcs = GetDefaultMcs (); 
876
            uint8_t mcs = GetDefaultMcs (); 
877
      mode=  m_wifiPhy->McsToWifiMode (mcs); 
877
            mode=  m_wifiPhy->McsToWifiMode (mcs); 
878
    }
878
          }
879
  for (WifiMcsListIterator i = m_bssBasicMcsSet.begin ();
879
        for (WifiMcsListIterator i = m_bssBasicMcsSet.begin ();
880
       i != m_bssBasicMcsSet.end (); i++)
880
             i != m_bssBasicMcsSet.end (); i++)
881
    {
881
          {
882
       WifiMode thismode=  m_wifiPhy->McsToWifiMode (*i); 
882
            WifiMode thismode=  m_wifiPhy->McsToWifiMode (*i); 
883
      if ((!found || thismode.GetPhyRate () > mode.GetPhyRate ())
883
            if ((!found || thismode.GetPhyRate () > mode.GetPhyRate ())
884
          && thismode.GetPhyRate () <= reqMode.GetPhyRate ()
884
                && thismode.GetPhyRate () <= reqMode.GetPhyRate ()
885
          && thismode.GetModulationClass () == reqMode.GetModulationClass ())
885
                && thismode.GetModulationClass () == reqMode.GetModulationClass ())
886
        {
886
              {
887
          mode = thismode;
887
                mode = thismode;
888
          // We've found a potentially-suitable transmit rate, but we
888
                // We've found a potentially-suitable transmit rate, but we
889
          // need to continue and consider all the basic rates before
889
                // need to continue and consider all the basic rates before
890
          // we can be sure we've got the right one.
890
                // we can be sure we've got the right one.
891
          found = true;
891
                found = true;
892
        }
892
              }
893
    }
893
          }
894
}
894
      }
895
  // If we found a suitable rate in the BSSBasicRateSet, then we are
895
  // If we found a suitable rate in the BSSBasicRateSet, then we are
896
  // done and can return that mode.
896
  // done and can return that mode.
897
  if (found)
897
  if (found)
 Lines 942-968    Link Here 
942
          found = true;
942
          found = true;
943
        }
943
        }
944
    }
944
    }
945
    if(HasHtSupported())
945
  if(HasHtSupported())
946
      {
946
    {
947
        for (uint32_t idx = 0; idx < m_wifiPhy->GetNMcs (); idx++)
947
      for (uint32_t idx = 0; idx < m_wifiPhy->GetNMcs (); idx++)
948
          {
949
            uint8_t thismcs = m_wifiPhy->GetMcs (idx);
950
            WifiMode thismode=  m_wifiPhy->McsToWifiMode (thismcs);
951
             if (thismode.IsMandatory ()
952
          && (!found || thismode.GetPhyRate () > mode.GetPhyRate ())
953
          && thismode.GetPhyRate () <= reqMode.GetPhyRate ()
954
          && thismode.GetModulationClass () == reqMode.GetModulationClass ())
955
        {
948
        {
956
          mode = thismode;
949
          uint8_t thismcs = m_wifiPhy->GetMcs (idx);
957
          // As above; we've found a potentially-suitable transmit
950
          WifiMode thismode=  m_wifiPhy->McsToWifiMode (thismcs);
958
          // rate, but we need to continue and consider all the
951
          if (thismode.IsMandatory ()
959
          // mandatory rates before we can be sure we've got the right
952
              && (!found || thismode.GetPhyRate () > mode.GetPhyRate ())
960
          // one.
953
              && thismode.GetPhyRate () <= reqMode.GetPhyRate ()
961
          found = true;
954
              && thismode.GetModulationClass () == reqMode.GetModulationClass ())
962
        }
955
            {
956
              mode = thismode;
957
              // As above; we've found a potentially-suitable transmit
958
              // rate, but we need to continue and consider all the
959
              // mandatory rates before we can be sure we've got the right
960
              // one.
961
              found = true;
962
            }
963
            
963
            
964
          }
964
        }
965
      }
965
    }
966
966
967
  /**
967
  /**
968
   * If we still haven't found a suitable rate for the response then
968
   * If we still haven't found a suitable rate for the response then
 Lines 977-983    Link Here 
977
  if (!found)
977
  if (!found)
978
    {
978
    {
979
      NS_FATAL_ERROR ("Can't find response rate for " << reqMode
979
      NS_FATAL_ERROR ("Can't find response rate for " << reqMode
980
                                                      << ". Check standard and selected rates match.");
980
                      << ". Check standard and selected rates match.");
981
    }
981
    }
982
982
983
  return mode;
983
  return mode;
(-)ns-3.18/src/wifi/model/wifi-remote-station-manager.h (-2 / +1 lines)
 Lines 524-537    Link Here 
524
  WifiMcsList m_bssBasicMcsSet;
524
  WifiMcsList m_bssBasicMcsSet;
525
525
526
  bool m_htSupported;
526
  bool m_htSupported;
527
  bool m_isLowLatency;
528
  uint32_t m_maxSsrc;
527
  uint32_t m_maxSsrc;
529
  uint32_t m_maxSlrc;
528
  uint32_t m_maxSlrc;
530
  uint32_t m_rtsCtsThreshold;
529
  uint32_t m_rtsCtsThreshold;
531
  uint32_t m_fragmentationThreshold;
530
  uint32_t m_fragmentationThreshold;
532
  uint8_t m_defaultTxPowerLevel;
531
  uint8_t m_defaultTxPowerLevel;
533
  WifiMode m_nonUnicastMode;
532
  WifiMode m_nonUnicastMode;
534
  double m_avgSlrcCoefficient;
533
535
  /**
534
  /**
536
   * The trace source fired when the transmission of a single RTS has failed
535
   * The trace source fired when the transmission of a single RTS has failed
537
   */
536
   */
(-)ns-3.18/src/wifi/model/yans-wifi-phy.cc (-38 lines)
 Lines 218-229    Link Here 
218
    case WIFI_PHY_STANDARD_holland:
218
    case WIFI_PHY_STANDARD_holland:
219
      ConfigureHolland ();
219
      ConfigureHolland ();
220
      break;
220
      break;
221
    case WIFI_PHY_STANDARD_80211p_CCH:
222
      Configure80211p_CCH ();
223
      break;
224
    case WIFI_PHY_STANDARD_80211p_SCH:
225
      Configure80211p_SCH ();
226
      break;
227
    case WIFI_PHY_STANDARD_80211n_2_4GHZ:
221
    case WIFI_PHY_STANDARD_80211n_2_4GHZ:
228
      m_channelStartingFrequency=2407;
222
      m_channelStartingFrequency=2407;
229
      Configure80211n ();
223
      Configure80211n ();
 Lines 685-722    Link Here 
685
}
679
}
686
680
687
void
681
void
688
YansWifiPhy::Configure80211p_CCH (void)
689
{
690
  NS_LOG_FUNCTION (this);
691
  m_channelStartingFrequency = 5e3; // 802.11p works over the 5Ghz freq range
692
693
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate3MbpsBW10MHz ());
694
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate4_5MbpsBW10MHz ());
695
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate6MbpsBW10MHz ());
696
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate9MbpsBW10MHz ());
697
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate12MbpsBW10MHz ());
698
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate18MbpsBW10MHz ());
699
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate24MbpsBW10MHz ());
700
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate27MbpsBW10MHz ());
701
}
702
703
void
704
YansWifiPhy::Configure80211p_SCH (void)
705
{
706
  NS_LOG_FUNCTION (this);
707
  m_channelStartingFrequency = 5e3; // 802.11p works over the 5Ghz freq range
708
709
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate3MbpsBW10MHz ());
710
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate4_5MbpsBW10MHz ());
711
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate6MbpsBW10MHz ());
712
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate9MbpsBW10MHz ());
713
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate12MbpsBW10MHz ());
714
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate18MbpsBW10MHz ());
715
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate24MbpsBW10MHz ());
716
  m_deviceRateSet.push_back (WifiPhy::GetOfdmRate27MbpsBW10MHz ());
717
}
718
719
void
720
YansWifiPhy::RegisterListener (WifiPhyListener *listener)
682
YansWifiPhy::RegisterListener (WifiPhyListener *listener)
721
{
683
{
722
  m_state->RegisterListener (listener);
684
  m_state->RegisterListener (listener);
(-)ns-3.18/src/wifi/model/yans-wifi-phy.h (-5 / +3 lines)
 Lines 166-176    Link Here 
166
  virtual void SetNumberOfTransmitAntennas (uint32_t tx);
166
  virtual void SetNumberOfTransmitAntennas (uint32_t tx);
167
  virtual uint32_t GetNumberOfTransmitAntennas (void) const;
167
  virtual uint32_t GetNumberOfTransmitAntennas (void) const;
168
  /**
168
  /**
169
   * \param the number of recievers on this node.
169
   * \param the number of receivers on this node.
170
   */
170
   */
171
  virtual void SetNumberOfReceiveAntennas (uint32_t rx) ;
171
  virtual void SetNumberOfReceiveAntennas (uint32_t rx) ;
172
  /**
172
  /**
173
   * \returns the number of recievers on this node.
173
   * \returns the number of receivers on this node.
174
   */
174
   */
175
  virtual uint32_t GetNumberOfReceiveAntennas (void) const;
175
  virtual uint32_t GetNumberOfReceiveAntennas (void) const;
176
  /**
176
  /**
 Lines 245-252    Link Here 
245
  void Configure80211_10Mhz (void);
245
  void Configure80211_10Mhz (void);
246
  void Configure80211_5Mhz ();
246
  void Configure80211_5Mhz ();
247
  void ConfigureHolland (void);
247
  void ConfigureHolland (void);
248
  void Configure80211p_CCH (void);
249
  void Configure80211p_SCH (void);
250
  void Configure80211n (void);
248
  void Configure80211n (void);
251
  double GetEdThresholdW (void) const;
249
  double GetEdThresholdW (void) const;
252
  double DbmToW (double dbm) const;
250
  double DbmToW (double dbm) const;
 Lines 272-278    Link Here 
272
270
273
  // number of transmitters
271
  // number of transmitters
274
  uint32_t m_numberOfTransmitters;
272
  uint32_t m_numberOfTransmitters;
275
  // number of recievers
273
  // number of receivers
276
  uint32_t m_numberOfReceivers;
274
  uint32_t m_numberOfReceivers;
277
  //if true use LDPC
275
  //if true use LDPC
278
  bool     m_ldpc;
276
  bool     m_ldpc;
(-)ns-3.18/src/wifi/test/wifi-test.cc (-1 / +46 lines)
 Lines 38-46    Link Here 
38
#include "ns3/mac-rx-middle.h"
38
#include "ns3/mac-rx-middle.h"
39
#include "ns3/pointer.h"
39
#include "ns3/pointer.h"
40
#include "ns3/rng-seed-manager.h"
40
#include "ns3/rng-seed-manager.h"
41
#include "ns3/edca-txop-n.h"
42
#include "ns3/config.h"
43
#include "ns3/boolean.h"
41
44
42
namespace ns3 {
45
namespace ns3 {
43
46
47
// helper function to assign streams to random variables, to control 
48
// randomness in the tests
49
static void
50
AssignWifiRandomStreams (Ptr<WifiMac> mac, int64_t stream)
51
{
52
  int64_t currentStream = stream;
53
  Ptr<RegularWifiMac> rmac = DynamicCast<RegularWifiMac> (mac);
54
  if (rmac)
55
    {
56
      PointerValue ptr;
57
      rmac->GetAttribute ("DcaTxop", ptr);
58
      Ptr<DcaTxop> dcaTxop = ptr.Get<DcaTxop> ();
59
      currentStream += dcaTxop->AssignStreams (currentStream);
60
61
      rmac->GetAttribute ("VO_EdcaTxopN", ptr);
62
      Ptr<EdcaTxopN> vo_edcaTxopN = ptr.Get<EdcaTxopN> ();
63
      currentStream += vo_edcaTxopN->AssignStreams (currentStream);
64
65
      rmac->GetAttribute ("VI_EdcaTxopN", ptr);
66
      Ptr<EdcaTxopN> vi_edcaTxopN = ptr.Get<EdcaTxopN> ();
67
      currentStream += vi_edcaTxopN->AssignStreams (currentStream);
68
69
      rmac->GetAttribute ("BE_EdcaTxopN", ptr);
70
      Ptr<EdcaTxopN> be_edcaTxopN = ptr.Get<EdcaTxopN> ();
71
      currentStream += be_edcaTxopN->AssignStreams (currentStream);
72
73
      rmac->GetAttribute ("BK_EdcaTxopN", ptr);
74
      Ptr<EdcaTxopN> bk_edcaTxopN = ptr.Get<EdcaTxopN> ();
75
      currentStream += bk_edcaTxopN->AssignStreams (currentStream);
76
    }
77
}
78
44
class WifiTest : public TestCase
79
class WifiTest : public TestCase
45
{
80
{
46
public:
81
public:
 Lines 378-387    Link Here 
378
  m_propDelay.SetTypeId ("ns3::ConstantSpeedPropagationDelayModel");
413
  m_propDelay.SetTypeId ("ns3::ConstantSpeedPropagationDelayModel");
379
  m_manager.SetTypeId ("ns3::ConstantRateWifiManager");
414
  m_manager.SetTypeId ("ns3::ConstantRateWifiManager");
380
415
381
  //The simulation with the following seed and run numbers expe
416
  // Assign a seed and run number, and later fix the assignment of streams to
417
  // WiFi random variables, so that the first backoff used is zero slots
382
  RngSeedManager::SetSeed (1);
418
  RngSeedManager::SetSeed (1);
383
  RngSeedManager::SetRun (17);
419
  RngSeedManager::SetRun (17);
384
420
421
  // Disable the initial jitter of AP beacons (test case was written before
422
  // beacon jitter was added)
423
  Config::SetDefault ("ns3::ApWifiMac::EnableBeaconJitter", BooleanValue (false));
424
385
  Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
425
  Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> ();
386
  Ptr<PropagationDelayModel> propDelay = m_propDelay.Create<PropagationDelayModel> ();
426
  Ptr<PropagationDelayModel> propDelay = m_propDelay.Create<PropagationDelayModel> ();
387
  Ptr<PropagationLossModel> propLoss = CreateObject<RandomPropagationLossModel> ();
427
  Ptr<PropagationLossModel> propLoss = CreateObject<RandomPropagationLossModel> ();
 Lines 392-397    Link Here 
392
  Ptr<WifiNetDevice> txDev = CreateObject<WifiNetDevice> ();
432
  Ptr<WifiNetDevice> txDev = CreateObject<WifiNetDevice> ();
393
  Ptr<WifiMac> txMac = m_mac.Create<WifiMac> ();
433
  Ptr<WifiMac> txMac = m_mac.Create<WifiMac> ();
394
  txMac->ConfigureStandard (WIFI_PHY_STANDARD_80211a);
434
  txMac->ConfigureStandard (WIFI_PHY_STANDARD_80211a);
435
  // Fix the stream assignment to the Dcf Txop objects (backoffs)
436
  // The below stream assignment will result in the DcaTxop object
437
  // using a backoff value of zero for this test when the 
438
  // DcaTxop::EndTxNoAck() calls to StartBackoffNow()
439
  AssignWifiRandomStreams (txMac, 23);
395
440
396
  Ptr<ConstantPositionMobilityModel> txMobility = CreateObject<ConstantPositionMobilityModel> ();
441
  Ptr<ConstantPositionMobilityModel> txMobility = CreateObject<ConstantPositionMobilityModel> ();
397
  Ptr<YansWifiPhy> txPhy = CreateObject<YansWifiPhy> ();
442
  Ptr<YansWifiPhy> txPhy = CreateObject<YansWifiPhy> ();
(-)ns-3.18/src/wimax/model/snr-to-block-error-rate-manager.h (-1 lines)
 Lines 92-98    Link Here 
92
  void ActivateLoss (bool loss);
92
  void ActivateLoss (bool loss);
93
private:
93
private:
94
  void ClearRecords (void);
94
  void ClearRecords (void);
95
  double m_speed; // in m/s
96
  uint8_t m_activateLoss;
95
  uint8_t m_activateLoss;
97
  static const unsigned int TRACE_FILE_PATH_SIZE = 1024;
96
  static const unsigned int TRACE_FILE_PATH_SIZE = 1024;
98
  char m_traceFilePath[TRACE_FILE_PATH_SIZE];
97
  char m_traceFilePath[TRACE_FILE_PATH_SIZE];
(-)ns-3.18/src/wimax/model/ss-service-flow-manager.cc (-1 lines)
 Lines 44-50    Link Here 
44
44
45
SsServiceFlowManager::SsServiceFlowManager (Ptr<SubscriberStationNetDevice> device)
45
SsServiceFlowManager::SsServiceFlowManager (Ptr<SubscriberStationNetDevice> device)
46
  : m_device (device),
46
  : m_device (device),
47
    m_sfidIndex (100),
48
    m_maxDsaReqRetries (100),
47
    m_maxDsaReqRetries (100),
49
    m_dsaReq (DsaReq ()),
48
    m_dsaReq (DsaReq ()),
50
    m_dsaAck (DsaAck ()),
49
    m_dsaAck (DsaAck ()),
(-)ns-3.18/src/wimax/model/ss-service-flow-manager.h (-2 lines)
 Lines 91-98    Link Here 
91
private:
91
private:
92
  Ptr<SubscriberStationNetDevice> m_device;
92
  Ptr<SubscriberStationNetDevice> m_device;
93
93
94
  uint32_t m_sfidIndex;
95
96
  uint8_t m_maxDsaReqRetries;
94
  uint8_t m_maxDsaReqRetries;
97
95
98
  EventId m_dsaRspTimeoutEvent;
96
  EventId m_dsaRspTimeoutEvent;

Return to bug 1784