doc: Convert tabs to spaces
This commit is contained in:
@@ -168,17 +168,17 @@ This is defined in the ``node.cc`` file as follows::
|
||||
.SetGroupName ("Network")
|
||||
.AddConstructor<Node> ()
|
||||
.AddAttribute ("DeviceList",
|
||||
"The list of devices associated to this Node.",
|
||||
"The list of devices associated to this Node.",
|
||||
ObjectVectorValue (),
|
||||
MakeObjectVectorAccessor (&Node::m_devices),
|
||||
MakeObjectVectorChecker<NetDevice> ())
|
||||
.AddAttribute ("ApplicationList",
|
||||
"The list of applications associated to this Node.",
|
||||
"The list of applications associated to this Node.",
|
||||
ObjectVectorValue (),
|
||||
MakeObjectVectorAccessor (&Node::m_applications),
|
||||
MakeObjectVectorChecker<Application> ())
|
||||
.AddAttribute ("Id",
|
||||
"The id (unique integer) of this Node.",
|
||||
"The id (unique integer) of this Node.",
|
||||
TypeId::ATTR_GET, // allow only getting it.
|
||||
UintegerValue (0),
|
||||
MakeUintegerAccessor (&Node::m_id),
|
||||
|
||||
@@ -225,7 +225,7 @@ the basics here, instead focusing on preferred usage for |ns3|.
|
||||
| | |
|
||||
| .. sourcecode:: bash | .. sourcecode:: bash |
|
||||
| | |
|
||||
| $ ls | $ ls |
|
||||
| $ ls | $ ls |
|
||||
+--------------------------------------+------------------------------------+
|
||||
|
||||
* Shorthand Notations:
|
||||
|
||||
@@ -19,19 +19,21 @@ add (or provide at run time) alternative hash function implementations.
|
||||
Basic Usage
|
||||
***********
|
||||
|
||||
The simplest way to get a hash value of a data buffer or string is just::
|
||||
The simplest way to get a hash value of a data buffer or string is just
|
||||
|
||||
.. sourcecode:: cpp
|
||||
|
||||
#include "ns3/hash.h"
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
char * buffer = ...
|
||||
size_t buffer_size = ...
|
||||
char* buffer = ...;
|
||||
size_t buffer_size = ...;
|
||||
|
||||
uint32_t buffer_hash = Hash32 ( buffer, buffer_size);
|
||||
uint32_t buffer_hash = Hash32(buffer, buffer_size);
|
||||
|
||||
std::string s;
|
||||
uint32_t string_hash = Hash32 (s);
|
||||
uint32_t string_hash = Hash32(s);
|
||||
|
||||
Equivalent functions are defined for 64-bit hash values.
|
||||
|
||||
@@ -43,31 +45,35 @@ as if they had been joined together. (For example, you might want
|
||||
the hash of a packet stream, but not want to assemble a single buffer
|
||||
with the combined contents of all the packets.)
|
||||
|
||||
This is almost as straight-forward as the first example::
|
||||
This is almost as straight-forward as the first example
|
||||
|
||||
.. sourcecode:: cpp
|
||||
|
||||
#include "ns3/hash.h"
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
char * buffer;
|
||||
char* buffer;
|
||||
size_t buffer_size;
|
||||
|
||||
Hasher hasher; // Use default hash function
|
||||
|
||||
for (<every buffer>)
|
||||
{
|
||||
buffer = get_next_buffer ();
|
||||
hasher (buffer, buffer_size);
|
||||
}
|
||||
uint32_t combined_hash = hasher.GetHash32 ();
|
||||
{
|
||||
buffer = get_next_buffer();
|
||||
hasher(buffer, buffer_size);
|
||||
}
|
||||
uint32_t combined_hash = hasher.GetHash32();
|
||||
|
||||
By default ``Hasher`` preserves internal state to enable incremental
|
||||
hashing. If you want to reuse a ``Hasher`` object (for example
|
||||
because it's configured with a non-default hash function), but don't
|
||||
want to add to the previously computed hash, you need to ``clear()``
|
||||
first::
|
||||
first
|
||||
|
||||
hasher.clear ().GetHash32 (buffer, buffer_size);
|
||||
.. sourcecode:: cpp
|
||||
|
||||
hasher.clear().GetHash32(buffer, buffer_size);
|
||||
|
||||
This reinitializes the internal state before hashing the buffer.
|
||||
|
||||
@@ -76,9 +82,11 @@ Using an Alternative Hash Function
|
||||
**********************************
|
||||
|
||||
The default hash function is murmur3_. FNV1a_ is also available. To specify
|
||||
the hash function explicitly, use this constructor::
|
||||
the hash function explicitly, use this constructor
|
||||
|
||||
Hasher hasher = Hasher ( Create<Hash::Function::Fnv1a> () );
|
||||
.. sourcecode:: cpp
|
||||
|
||||
Hasher hasher = Hasher(Create<Hash::Function::Fnv1a>());
|
||||
|
||||
|
||||
Adding New Hash Function Implementations
|
||||
@@ -95,16 +103,19 @@ To add the hash function ``foo``, follow the ``hash-murmur3.h``/``.cc`` pattern:
|
||||
|
||||
|
||||
If your hash function is a single function, e.g. ``hashf``, you don't
|
||||
even need to create a new class derived from HashImplementation::
|
||||
even need to create a new class derived from HashImplementation
|
||||
|
||||
Hasher hasher =
|
||||
Hasher ( Create<Hash::Function::Hash32> (&hashf) );
|
||||
.. sourcecode:: cpp
|
||||
|
||||
Hasher hasher = Hasher(Create<Hash::Function::Hash32>(&hashf));
|
||||
|
||||
For this to compile, your ``hashf`` has to match one of the function pointer
|
||||
signatures::
|
||||
signatures
|
||||
|
||||
typedef uint32_t (*Hash32Function_ptr) (const char *, const size_t);
|
||||
typedef uint64_t (*Hash64Function_ptr) (const char *, const size_t);
|
||||
.. sourcecode:: cpp
|
||||
|
||||
typedef uint32_t (*Hash32Function_ptr) (const char*, const size_t);
|
||||
typedef uint64_t (*Hash64Function_ptr) (const char*, const size_t);
|
||||
|
||||
|
||||
Sources for Hash Functions
|
||||
|
||||
@@ -81,19 +81,19 @@ and ``.rst`` files. The complete module with skeleton files looks like this:
|
||||
src/
|
||||
new-module/
|
||||
doc/
|
||||
new-module.rst
|
||||
examples/
|
||||
new-module-example.cc
|
||||
CMakeLists.txt
|
||||
helper/
|
||||
new-module-helper.cc
|
||||
new-module-helper.h
|
||||
model/
|
||||
new-module.cc
|
||||
new-module.h
|
||||
test/
|
||||
new-module-test-suite.cc
|
||||
CMakeLists.txt
|
||||
new-module.rst
|
||||
examples/
|
||||
new-module-example.cc
|
||||
CMakeLists.txt
|
||||
helper/
|
||||
new-module-helper.cc
|
||||
new-module-helper.h
|
||||
model/
|
||||
new-module.cc
|
||||
new-module.h
|
||||
test/
|
||||
new-module-test-suite.cc
|
||||
CMakeLists.txt
|
||||
|
||||
(If required the ``bindings/`` directory listed in
|
||||
:ref:`Step-0 <Step-0>` will be created automatically during
|
||||
|
||||
@@ -93,22 +93,22 @@ Command-line Arguments
|
||||
to be ascii, giving the relative event times in ns.
|
||||
|
||||
Program Options:
|
||||
--all: use all schedulers [false]
|
||||
--cal: use CalendarSheduler [false]
|
||||
--calrev: reverse ordering in the CalendarScheduler [false]
|
||||
--heap: use HeapScheduler [false]
|
||||
--list: use ListSheduler [false]
|
||||
--map: use MapScheduler (default) [true]
|
||||
--pri: use PriorityQueue [false]
|
||||
--debug: enable debugging output [false]
|
||||
--pop: event population size (default 1E5) [100000]
|
||||
--total: total number of events to run (default 1E6) [1000000]
|
||||
--runs: number of runs (default 1) [1]
|
||||
--file: file of relative event times
|
||||
--prec: printed output precision [6]
|
||||
--all: use all schedulers [false]
|
||||
--cal: use CalendarSheduler [false]
|
||||
--calrev: reverse ordering in the CalendarScheduler [false]
|
||||
--heap: use HeapScheduler [false]
|
||||
--list: use ListSheduler [false]
|
||||
--map: use MapScheduler (default) [true]
|
||||
--pri: use PriorityQueue [false]
|
||||
--debug: enable debugging output [false]
|
||||
--pop: event population size (default 1E5) [100000]
|
||||
--total: total number of events to run (default 1E6) [1000000]
|
||||
--runs: number of runs (default 1) [1]
|
||||
--file: file of relative event times
|
||||
--prec: printed output precision [6]
|
||||
|
||||
General Arguments:
|
||||
...
|
||||
...
|
||||
|
||||
You can change the Scheduler being benchmarked by passing
|
||||
the appropriate flags, for example if you want to
|
||||
@@ -143,7 +143,7 @@ It will show something like this depending upon the scheduler being benchmarked:
|
||||
|
||||
ns3::MapScheduler (default)
|
||||
Run # Initialization: Simulation:
|
||||
Time (s) Rate (ev/s) Per (s/ev) Time (s) Rate (ev/s) Per (s/ev)
|
||||
Time (s) Rate (ev/s) Per (s/ev) Time (s) Rate (ev/s) Per (s/ev)
|
||||
----------- ----------- ----------- ----------- ----------- ----------- -----------
|
||||
prime 0.01 1e+06 1e-06 5.51 1.81488e+06 5.51e-07
|
||||
0 0 inf 0 6.25 1.6e+06 6.25e-07
|
||||
@@ -170,7 +170,7 @@ And the output would look something like this::
|
||||
|
||||
ns3::CalendarScheduler: insertion order: normal
|
||||
Run # Initialization: Simulation:
|
||||
Time (s) Rate (ev/s) Per (s/ev) Time (s) Rate (ev/s) Per (s/ev)
|
||||
Time (s) Rate (ev/s) Per (s/ev) Time (s) Rate (ev/s) Per (s/ev)
|
||||
----------- ----------- ----------- ----------- ----------- ----------- -----------
|
||||
prime 0.01 1e+06 1e-06 8.14 1.2285e+06 8.14e-07
|
||||
0 0.01 1e+06 1e-06 17.14 583431 1.714e-06
|
||||
|
||||
@@ -413,7 +413,7 @@ Recall its commit hash of ``9df8ef4`` from above.
|
||||
|
||||
$ git reset 9df8ef4 VERSION
|
||||
Unstaged changes after reset:
|
||||
M VERSION
|
||||
M VERSION
|
||||
$ sed -i 's/3.34/3-dev/g' VERSION
|
||||
$ cat VERSION
|
||||
3-dev
|
||||
@@ -525,8 +525,8 @@ And we can then do::
|
||||
Which leaves us with::
|
||||
|
||||
Unstaged changes after reset:
|
||||
M VERSION
|
||||
M a
|
||||
M VERSION
|
||||
M a
|
||||
|
||||
We can next hand-edit these files to restore them to original state, so that::
|
||||
|
||||
|
||||
@@ -56,14 +56,14 @@ function say
|
||||
function usage
|
||||
{
|
||||
cat <<-EOF
|
||||
Usage: $me [-p] normal versioning
|
||||
$me [-n] [-d] [-t] test options
|
||||
-p build public urls, NS3_WWW_URLS=public is an alternative
|
||||
Usage: $me [-p] normal versioning
|
||||
$me [-n] [-d] [-t] test options
|
||||
-p build public urls, NS3_WWW_URLS=public is an alternative
|
||||
|
||||
Testing options:
|
||||
-n pretend we are on nsnam.org
|
||||
-d pretend we are in the automated build directory
|
||||
-t pretend we are at a repo tag
|
||||
Testing options:
|
||||
-n pretend we are on nsnam.org
|
||||
-d pretend we are in the automated build directory
|
||||
-t pretend we are at a repo tag
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
@@ -79,16 +79,16 @@ tag=0
|
||||
|
||||
while getopts :pndth option ; do
|
||||
case $option in
|
||||
(p) public=1 ;;
|
||||
(n) nsnam=1 ;;
|
||||
(p) public=1 ;;
|
||||
(n) nsnam=1 ;;
|
||||
|
||||
(d) daily=1 ;;
|
||||
(d) daily=1 ;;
|
||||
|
||||
(t) tag=1 ;;
|
||||
(t) tag=1 ;;
|
||||
|
||||
(h) usage ;;
|
||||
(:) say "Missing argument to -$OPTARG" ; usage ;;
|
||||
(\?) say "Invalid option: -$OPTARG" ; usage ;;
|
||||
(h) usage ;;
|
||||
(:) say "Missing argument to -$OPTARG" ; usage ;;
|
||||
(\?) say "Invalid option: -$OPTARG" ; usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -159,11 +159,11 @@ else
|
||||
changes=1
|
||||
fi
|
||||
if [ $changes ] ; then
|
||||
say "beyond latest tag, last commit: $version, dirty"
|
||||
dirty="(+)"
|
||||
say "beyond latest tag, last commit: $version, dirty"
|
||||
dirty="(+)"
|
||||
else
|
||||
say "beyond latest tag, last commit: $version, clean"
|
||||
dirty=
|
||||
say "beyond latest tag, last commit: $version, clean"
|
||||
dirty=
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -174,18 +174,18 @@ if [ $PUBLIC -eq 1 ]; then
|
||||
echo "var ns3_host = \"/\";" >> $outf
|
||||
|
||||
if [ $distance -eq 1 ]; then
|
||||
# Like "http://www.nsnam.org/ns-3-14"
|
||||
vers_href="https://www.nsnam.org/ns-3-${version#ns-3.}"
|
||||
vers_href="<a href=\\\"$vers_href\\\">$version$dirty</a>"
|
||||
# Like "http://www.nsnam.org/ns-3-14"
|
||||
vers_href="https://www.nsnam.org/ns-3-${version#ns-3.}"
|
||||
vers_href="<a href=\\\"$vers_href\\\">$version$dirty</a>"
|
||||
|
||||
echo "var ns3_version = \"Release $vers_href\";" >> $outf
|
||||
echo "var ns3_release = \"docs/release/${version#ns-}/\";" >> $outf
|
||||
echo "var ns3_version = \"Release $vers_href\";" >> $outf
|
||||
echo "var ns3_release = \"docs/release/${version#ns-}/\";" >> $outf
|
||||
else
|
||||
vers_href="https://gitlab.com/nsnam/ns-3-dev/commits/$version"
|
||||
version="<a href=\\\"$vers_href\\\">$version$dirty</a>"
|
||||
vers_href="https://gitlab.com/nsnam/ns-3-dev/commits/$version"
|
||||
version="<a href=\\\"$vers_href\\\">$version$dirty</a>"
|
||||
|
||||
echo "var ns3_version = \"ns-3-dev @ $version\";" >> $outf
|
||||
echo "var ns3_release = \"docs/\";" >> $outf
|
||||
echo "var ns3_version = \"ns-3-dev @ $version\";" >> $outf
|
||||
echo "var ns3_release = \"docs/\";" >> $outf
|
||||
fi
|
||||
echo "var ns3_local = \"\";" >> $outf
|
||||
echo "var ns3_doxy = \"doxygen/\";" >> $outf
|
||||
@@ -207,7 +207,7 @@ fi
|
||||
cd doc 2>&1 >/dev/null
|
||||
for d in {manual,models,tutorial}/build/{single,}html/_static/ ; do
|
||||
if [ ! -d $d ]; then
|
||||
mkdir -p $d
|
||||
mkdir -p $d
|
||||
fi
|
||||
cp ns3_html_theme/static/ns3_version.js $d
|
||||
done
|
||||
|
||||
@@ -395,8 +395,8 @@ same timestamped data, such as follows:
|
||||
|
||||
::
|
||||
|
||||
Time (Seconds) = 9.312e+00 Packet Byte Count = 596
|
||||
Time (Seconds) = 9.312e+00 Packet Byte Count = 564
|
||||
Time (Seconds) = 9.312e+00 Packet Byte Count = 596
|
||||
Time (Seconds) = 9.312e+00 Packet Byte Count = 564
|
||||
|
||||
Two files are provided, one for node "0" and one for node "1" as can
|
||||
be seen in the filenames. Let's look at the code piece-by-piece:
|
||||
|
||||
@@ -2294,8 +2294,8 @@ or your favorite file viewer.
|
||||
1.01528 1072 1608
|
||||
1.02167 1608 2144
|
||||
...
|
||||
9.69256 5149 5204
|
||||
9.89311 5204 5259
|
||||
9.69256 5149 5204
|
||||
9.89311 5204 5259
|
||||
|
||||
You have a tab separated file with a timestamp, an old congestion
|
||||
window and a new congestion window suitable for directly importing
|
||||
|
||||
@@ -125,9 +125,9 @@ Implementation modification
|
||||
===========================
|
||||
|
||||
* The DsrFsHeader has added 3 fields: message type, source id, destination id, and these changes only for post-processing
|
||||
1. Message type is used to identify the data packet from control packet
|
||||
2. source id is used to identify the real source of the data packet since we have to deliver the packet hop-by-hop and the Ipv4Header is not carrying the real source and destination ip address as needed
|
||||
3. destination id is for same reason of above
|
||||
1. Message type is used to identify the data packet from control packet
|
||||
2. source id is used to identify the real source of the data packet since we have to deliver the packet hop-by-hop and the Ipv4Header is not carrying the real source and destination ip address as needed
|
||||
3. destination id is for same reason of above
|
||||
* Route Reply header is not word-aligned in DSR RFC, change it to word-aligned in implementation
|
||||
* DSR works as a shim header between transport and network protocol, it needs its own forwarding mechanism, we are changing the packet transmission to hop-by-hop delivery, so we added two fields in dsr fixed header to notify packet delivery
|
||||
|
||||
|
||||
@@ -1961,12 +1961,12 @@ If we run the experiment, enabling the logging, we can see the following:
|
||||
gdb --args ./build/utils/ns3-dev-test-runner-debug --test-name=tcp-zero-window-test --stop-on-failure --fullness=QUICK --assert-on-failure --verbose
|
||||
(gdb) run
|
||||
|
||||
0.00s TcpZeroWindowTestSuite:Tx(): 0.00 SENDER TX 49153 > 4477 [SYN] Seq=0 Ack=0 Win=32768 ns3::TcpOptionWinScale(2) ns3::TcpOptionTS(0;0) size 36
|
||||
0.05s TcpZeroWindowTestSuite:Rx(): 0.05 RECEIVER RX 49153 > 4477 [SYN] Seq=0 Ack=0 Win=32768 ns3::TcpOptionWinScale(2) ns3::TcpOptionTS(0;0) ns3::TcpOptionEnd(EOL) size 0
|
||||
0.05s TcpZeroWindowTestSuite:Tx(): 0.05 RECEIVER TX 4477 > 49153 [SYN|ACK] Seq=0 Ack=1 Win=0 ns3::TcpOptionWinScale(0) ns3::TcpOptionTS(50;0) size 36
|
||||
0.10s TcpZeroWindowTestSuite:Rx(): 0.10 SENDER RX 4477 > 49153 [SYN|ACK] Seq=0 Ack=1 Win=0 ns3::TcpOptionWinScale(0) ns3::TcpOptionTS(50;0) ns3::TcpOptionEnd(EOL) size 0
|
||||
0.10s TcpZeroWindowTestSuite:Tx(): 0.10 SENDER TX 49153 > 4477 [ACK] Seq=1 Ack=1 Win=32768 ns3::TcpOptionTS(100;50) size 32
|
||||
0.15s TcpZeroWindowTestSuite:Rx(): 0.15 RECEIVER RX 49153 > 4477 [ACK] Seq=1 Ack=1 Win=32768 ns3::TcpOptionTS(100;50) ns3::TcpOptionEnd(EOL) size 0
|
||||
0.00s TcpZeroWindowTestSuite:Tx(): 0.00 SENDER TX 49153 > 4477 [SYN] Seq=0 Ack=0 Win=32768 ns3::TcpOptionWinScale(2) ns3::TcpOptionTS(0;0) size 36
|
||||
0.05s TcpZeroWindowTestSuite:Rx(): 0.05 RECEIVER RX 49153 > 4477 [SYN] Seq=0 Ack=0 Win=32768 ns3::TcpOptionWinScale(2) ns3::TcpOptionTS(0;0) ns3::TcpOptionEnd(EOL) size 0
|
||||
0.05s TcpZeroWindowTestSuite:Tx(): 0.05 RECEIVER TX 4477 > 49153 [SYN|ACK] Seq=0 Ack=1 Win=0 ns3::TcpOptionWinScale(0) ns3::TcpOptionTS(50;0) size 36
|
||||
0.10s TcpZeroWindowTestSuite:Rx(): 0.10 SENDER RX 4477 > 49153 [SYN|ACK] Seq=0 Ack=1 Win=0 ns3::TcpOptionWinScale(0) ns3::TcpOptionTS(50;0) ns3::TcpOptionEnd(EOL) size 0
|
||||
0.10s TcpZeroWindowTestSuite:Tx(): 0.10 SENDER TX 49153 > 4477 [ACK] Seq=1 Ack=1 Win=32768 ns3::TcpOptionTS(100;50) size 32
|
||||
0.15s TcpZeroWindowTestSuite:Rx(): 0.15 RECEIVER RX 49153 > 4477 [ACK] Seq=1 Ack=1 Win=32768 ns3::TcpOptionTS(100;50) ns3::TcpOptionEnd(EOL) size 0
|
||||
(...)
|
||||
|
||||
The output is cut to show the threeway handshake. As we can see from the headers,
|
||||
|
||||
@@ -1303,7 +1303,7 @@ where :math:`m_{GBR}^j(t)` is calculated as follows:
|
||||
|
||||
.. math::
|
||||
|
||||
m_{GBR}^j(t)=\frac{GBR^j}{\overline{R^j}(t)}=\frac{GBR^j}{(1-\alpha)\cdot\overline{R^j}(t-1)+\alpha \cdot r^j(t)} \;,
|
||||
m_{GBR}^j(t)=\frac{GBR^j}{\overline{R^j}(t)}=\frac{GBR^j}{(1-\alpha)\cdot\overline{R^j}(t-1)+\alpha \cdot r^j(t)} \;,
|
||||
|
||||
where :math:`GBR^j` is the bit rate specified in EPS bearer of the
|
||||
flow :math:`j`, :math:`\overline{R^j}(t)` is the past averaged throughput that is calculated with a
|
||||
|
||||
@@ -1774,9 +1774,9 @@ private sub-band in DL and UL, RSRQ threshold is 20 dB, power in center area equ
|
||||
lteHelper->SetFfrAlgorithmAttribute ("UlEdgeSubBandwidth", UintegerValue (6));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (20));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("CenterAreaTpc", UintegerValue (1));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaTpc", UintegerValue (2));
|
||||
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
|
||||
@@ -1816,9 +1816,9 @@ equals ``LteEnbPhy::TxPower``, power in edge area equals ``LteEnbPhy::TxPower +
|
||||
lteHelper->SetFfrAlgorithmAttribute ("AllowCenterUeUseEdgeSubBand", BooleanValue (false));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("RsrqThreshold", UintegerValue (20));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
|
||||
|
||||
|
||||
@@ -1870,11 +1870,11 @@ Power in center area equals ``LteEnbPhy::TxPower - 3dB``, power in medium area e
|
||||
lteHelper->SetFfrAlgorithmAttribute ("CenterRsrqThreshold", UintegerValue (28));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgeRsrqThreshold", UintegerValue (18));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("CenterAreaPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_3));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("MediumAreaPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgeAreaPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
NetDeviceContainer enbDevs = lteHelper->InstallEnbDevice (enbNodes.Get(0));
|
||||
|
||||
|
||||
@@ -1925,9 +1925,9 @@ power in edge area equals ``LteEnbPhy::TxPower + 0dB``::
|
||||
lteHelper->SetFfrAlgorithmAttribute("DlCqiThreshold", UintegerValue (10));
|
||||
lteHelper->SetFfrAlgorithmAttribute("UlCqiThreshold", UintegerValue (10));
|
||||
lteHelper->SetFfrAlgorithmAttribute("CenterAreaPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB_6));
|
||||
lteHelper->SetFfrAlgorithmAttribute("EdgeAreaPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
lteHelper->SetFfrAlgorithmAttribute("UlSubBandOffset", UintegerValue (0));
|
||||
lteHelper->SetFfrAlgorithmAttribute("UlReuse3SubBandwidth", UintegerValue (4));
|
||||
lteHelper->SetFfrAlgorithmAttribute("UlReuse1SubBandwidth", UintegerValue (4));
|
||||
@@ -1975,9 +1975,9 @@ Power in center area equals ``LteEnbPhy::TxPower - 0dB``, power in edge area equ
|
||||
lteHelper->SetFfrAlgorithmAttribute ("RsrpDifferenceThreshold", UintegerValue (5));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgeRbNum", UintegerValue (6));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("CenterPowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB0));
|
||||
lteHelper->SetFfrAlgorithmAttribute ("EdgePowerOffset",
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
UintegerValue (LteRrcSap::PdschConfigDedicated::dB3));
|
||||
|
||||
|
||||
Automatic configuration
|
||||
|
||||
@@ -328,17 +328,17 @@ created using the example.
|
||||
|
||||
::
|
||||
|
||||
Time = -5.000e+00 Value = 25
|
||||
Time = -4.000e+00 Value = 16
|
||||
Time = -3.000e+00 Value = 9
|
||||
Time = -2.000e+00 Value = 4
|
||||
Time = -1.000e+00 Value = 1
|
||||
Time = 0.000e+00 Value = 0
|
||||
Time = 1.000e+00 Value = 1
|
||||
Time = 2.000e+00 Value = 4
|
||||
Time = 3.000e+00 Value = 9
|
||||
Time = 4.000e+00 Value = 16
|
||||
Time = 5.000e+00 Value = 25
|
||||
Time = -5.000e+00 Value = 25
|
||||
Time = -4.000e+00 Value = 16
|
||||
Time = -3.000e+00 Value = 9
|
||||
Time = -2.000e+00 Value = 4
|
||||
Time = -1.000e+00 Value = 1
|
||||
Time = 0.000e+00 Value = 0
|
||||
Time = 1.000e+00 Value = 1
|
||||
Time = 2.000e+00 Value = 4
|
||||
Time = 3.000e+00 Value = 9
|
||||
Time = 4.000e+00 Value = 16
|
||||
Time = 5.000e+00 Value = 25
|
||||
|
||||
This code from the example shows how to construct the
|
||||
FileAggregator as was discussed above.
|
||||
|
||||
@@ -373,16 +373,16 @@ Only the first 10 lines of this file are shown here for brevity.
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
Time (Seconds) = 1.000e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.004e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.004e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.009e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.009e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.015e+00 Packet Byte Count = 512
|
||||
Time (Seconds) = 1.017e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.017e+00 Packet Byte Count = 544
|
||||
Time (Seconds) = 1.025e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.025e+00 Packet Byte Count = 544
|
||||
Time (Seconds) = 1.000e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.004e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.004e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.009e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.009e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.015e+00 Packet Byte Count = 512
|
||||
Time (Seconds) = 1.017e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.017e+00 Packet Byte Count = 544
|
||||
Time (Seconds) = 1.025e+00 Packet Byte Count = 576
|
||||
Time (Seconds) = 1.025e+00 Packet Byte Count = 544
|
||||
|
||||
...
|
||||
|
||||
@@ -394,16 +394,16 @@ file are shown here for brevity.
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
Time (Seconds) = 1.002e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.007e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.013e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.020e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.028e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.036e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.045e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.053e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.061e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.069e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.002e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.007e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.013e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.020e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.028e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.036e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.045e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.053e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.061e+00 Packet Byte Count = 40
|
||||
Time (Seconds) = 1.069e+00 Packet Byte Count = 40
|
||||
|
||||
...
|
||||
|
||||
|
||||
@@ -182,14 +182,14 @@ For example, this code configures a node with 3 antennas that supports 2 spatial
|
||||
WifiMacHelper mac;
|
||||
|
||||
mac.SetType ("ns3::StaWifiMac",
|
||||
"Ssid", SsidValue (ssid),
|
||||
"ActiveProbing", BooleanValue (false));
|
||||
"Ssid", SsidValue (ssid),
|
||||
"ActiveProbing", BooleanValue (false));
|
||||
|
||||
NetDeviceContainer staDevice;
|
||||
staDevice = wifi.Install (phy, mac, wifiStaNode);
|
||||
|
||||
mac.SetType ("ns3::ApWifiMac",
|
||||
"Ssid", SsidValue (ssid));
|
||||
"Ssid", SsidValue (ssid));
|
||||
|
||||
NetDeviceContainer apDevice;
|
||||
apDevice = wifi.Install (phy, mac, wifiApNode);
|
||||
@@ -908,7 +908,7 @@ Each node is equipped with 802.11b Wi-Fi device::
|
||||
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
|
||||
wifiChannel.AddPropagationLoss ("ns3::LogDistancePropagationLossModel",
|
||||
"Exponent", DoubleValue (3.0),
|
||||
"ReferenceLoss", DoubleValue (40.0459));
|
||||
"ReferenceLoss", DoubleValue (40.0459));
|
||||
wifiPhy.SetChannel (wifiChannel.Create ());
|
||||
|
||||
// Add a non-QoS upper mac, and disable rate control
|
||||
|
||||
Reference in New Issue
Block a user