--- a/.hgtags Wed Apr 21 17:00:57 2010 +0200
+++ b/.hgtags Thu Apr 22 15:23:20 2010 +0200
@@ -44,3 +44,4 @@
892efc87a1518fb69b04628c779195aee139d33e ns-3.7-RC3
17bf6ee332baaa6b6f9b8a26d29c98f4e715648f ns-3.7-RC4
be3fb855c65a46d22a7693cd156f154f63602e8e ns-3.7
+e61ce382fcdd5363a9d0052601c5eeae6f5e8d81 ns-3.8-RC1
--- a/doc/manual/tracing.texi Wed Apr 21 17:00:57 2010 +0200
+++ b/doc/manual/tracing.texi Thu Apr 22 15:23:20 2010 +0200
@@ -812,7 +812,7 @@
methods must implement a single virtual method inherited from this class. There
will be a separate implementation for @code{Ipv6}, for example, but the only
difference will be in the method names and signatures. Different method names
-are required to disambiguate class @code{Ipv4} from @coe{Ipv6} which are both
+are required to disambiguate class @code{Ipv4} from @code{Ipv6} which are both
derived from class @code{Object}, and methods that share the same signature.
@verbatim
@@ -906,7 +906,7 @@
@end verbatim
You can enable pcap tracing on the basis of node ID and interface as well. In
-this case, the node-id is translated to a @code{Ptr{Node} and the appropriate
+this case, the node-id is translated to a @code{Ptr<Node>} and the appropriate
protocol is looked up in the node. The resulting protocol and interface are
used to specify the resulting trace source.
@@ -1147,7 +1147,7 @@
traces into a single file is accomplished similarly to the examples above:
You can enable pcap tracing on the basis of node ID and device ID as well. In
-this case, the node-id is translated to a @code{Ptr{Node} and the appropriate
+this case, the node-id is translated to a @code{Ptr<Node>} and the appropriate
protocol is looked up in the node. The resulting protocol and interface are
used to specify the resulting trace source.
--- a/doc/release_steps.txt Wed Apr 21 17:00:57 2010 +0200
+++ b/doc/release_steps.txt Thu Apr 22 15:23:20 2010 +0200
@@ -94,10 +94,21 @@
-- edit ~/bin/update-doxygen-release file and change RELEASE variable
to the right version number
-- run ~/bin/update-doxygen-release
-15. Final checks
+15. build release documentation
+ - if this is final release (not RC)
+ -- archive old release documentation in /var/www/html/docs/release
+ by creating release specific folder and moving current
+ documenation into this folder
+ -- from ns-3.x/doc, enter manual/ testing/ and tutorial directories
+ and build the documentation using make
+ -- copy this newly created documentation into
+ /var/www/html/docs/release making sure to copy only the
+ necessary files
+16. Final checks
+ - check manual, testing, and tutorial documentation links
- download tarball from web, build and run regression tests for as many
targets as you can
- download release from mercurial, build and run regression tests for as
many targets as you can
- test and verify until you're confident the release is solid.
-16. announce to ns-developers, with summary of release notes
+17. announce to ns-developers, with summary of release notes
--- a/doc/testing/testing-framework.texi Wed Apr 21 17:00:57 2010 +0200
+++ b/doc/testing/testing-framework.texi Thu Apr 22 15:23:20 2010 +0200
@@ -562,7 +562,7 @@
provide one. It first looks for environment variables named @code{TMP} and
@code{TEMP} and uses those. If neither @code{TMP} nor @code{TEMP} are defined
it picks @code{/tmp}. The code then tacks on an identifier indicating what
-created the directory (ns-3) then the time (hh.mm.ss} followed by a large random
+created the directory (ns-3) then the time (hh.mm.ss) followed by a large random
number. The test runner creates a directory of that name to be used as the
temporary directory. Temporary files then go into a directory that will be
named something like,
--- a/doc/tutorial/tracing.texi Wed Apr 21 17:00:57 2010 +0200
+++ b/doc/tutorial/tracing.texi Thu Apr 22 15:23:20 2010 +0200
@@ -2083,7 +2083,7 @@
is a one-liner in the trace sink to write a timestamp and the contents of the
packet being dropped to the pcap file:
-@end verbatim
+@verbatim
file->Write(Simulator::Now(), p);
@end verbatim
@@ -2755,7 +2755,7 @@
methods must implement a single virtual method inherited from this class. There
will be a separate implementation for @code{Ipv6}, for example, but the only
difference will be in the method names and signatures. Different method names
-are required to disambiguate class @code{Ipv4} from @coe{Ipv6} which are both
+are required to disambiguate class @code{Ipv4} from @code{Ipv6} which are both
derived from class @code{Object}, and methods that share the same signature.
@verbatim
@@ -2852,7 +2852,7 @@
@end verbatim
You can enable pcap tracing on the basis of node ID and interface as well. In
-this case, the node-id is translated to a @code{Ptr{Node} and the appropriate
+this case, the node-id is translated to a @code{Ptr<Node>} and the appropriate
protocol is looked up in the node. The resulting protocol and interface are
used to specify the resulting trace source.
@@ -3101,7 +3101,7 @@
traces into a single file is accomplished similarly to the examples above:
You can enable pcap tracing on the basis of node ID and device ID as well. In
-this case, the node-id is translated to a @code{Ptr{Node} and the appropriate
+this case, the node-id is translated to a @code{Ptr<Node>} and the appropriate
protocol is looked up in the node. The resulting protocol and interface are
used to specify the resulting trace source.
--- a/src/applications/udp-client-server/packet-loss-counter.cc Wed Apr 21 17:00:57 2010 +0200
+++ b/src/applications/udp-client-server/packet-loss-counter.cc Thu Apr 22 15:23:20 2010 +0200
@@ -60,7 +60,7 @@
delete [] m_receiveBitMap;
}
m_receiveBitMap = new uint8_t [m_bitMapSize] ();
- memset (m_receiveBitMap,1,m_bitMapSize);
+ memset (m_receiveBitMap,0xFF,m_bitMapSize);
}
uint32_t
@@ -103,17 +103,14 @@
void
PacketLossCounter::NotifyReceived (uint32_t seqNum)
{
- if (seqNum>(uint32_t)(m_bitMapSize*8)-1)
+ for (uint32_t i=m_lastMaxSeqNum+1; i<=seqNum;i++)
{
- for (uint32_t i=m_lastMaxSeqNum+1; i<=seqNum;i++)
+ if (GetBit(i)!=1)
{
- if (GetBit(i)!=1)
- {
- NS_LOG_INFO ("Packet lost: " << i-(m_bitMapSize*8));
- m_lost++;
- }
- SetBit(i, 0);
+ NS_LOG_INFO ("Packet lost: " << i-(m_bitMapSize*8));
+ m_lost++;
}
+ SetBit(i, 0);
}
SetBit(seqNum, 1);
if (seqNum>m_lastMaxSeqNum)
--- a/src/applications/udp-client-server/udp-client-server-test.cc Wed Apr 21 17:00:57 2010 +0200
+++ b/src/applications/udp-client-server/udp-client-server-test.cc Thu Apr 22 15:23:20 2010 +0200
@@ -208,6 +208,7 @@
bool PacketLossCounterTestCase::DoRun (void)
{
PacketLossCounter lossCounter(32);
+ lossCounter.NotifyReceived(32); //out of order
for (uint32_t i=0;i<64;i++)
{
lossCounter.NotifyReceived(i);
--- a/src/devices/wimax/simple-ofdm-wimax-channel.h Wed Apr 21 17:00:57 2010 +0200
+++ b/src/devices/wimax/simple-ofdm-wimax-channel.h Thu Apr 22 15:23:20 2010 +0200
@@ -50,17 +50,17 @@
};
/**
* \brief Creates a channel and sets the propagation model
- * \param propModel the propagation model to used
+ * \param propModel the propagation model to use
*/
SimpleOfdmWimaxChannel (PropModel propModel);
/**
- * \brief Sends a fec block to all connected physical dxdevices
+ * \brief Sends a fec block to all connected physical devices
* \param BlockTime the time needed to send the block
* \param fecBlock the fec block being sent
* \param burstSize the size of the burst
* \param phy the sender device
* \param isFirstBlock true if this block is the first one, false otherwise
- * \param frequency the frequency on wich the block is sent
+ * \param frequency the frequency on which the block is sent
* \param modulationType the modulation used to send the fec block
* \param direction uplink or downlink
* \param txPowerDbm the transmission power
--- a/src/helper/wimax-helper.cc Wed Apr 21 17:00:57 2010 +0200
+++ b/src/helper/wimax-helper.cc Thu Apr 22 15:23:20 2010 +0200
@@ -80,7 +80,7 @@
phy = CreateObject<SimpleOfdmWimaxPhy> ();
if (!m_channel)
{
- m_channel = CreateObject<SimpleOfdmWimaxChannel> ();
+ m_channel = CreateObject<SimpleOfdmWimaxChannel> (SimpleOfdmWimaxChannel::COST231_PROPAGATION);
}
break;
default:
@@ -91,6 +91,15 @@
return phy;
}
+void WimaxHelper::SetPropagationLossModel (SimpleOfdmWimaxChannel::PropModel propagationModel)
+{
+ if (!m_channel)
+ {
+ m_channel = CreateObject<SimpleOfdmWimaxChannel> ();
+ }
+ m_channel->GetObject<SimpleOfdmWimaxChannel> ()->SetPropagationModel (propagationModel);
+}
+
Ptr<WimaxPhy> WimaxHelper::CreatePhy (PhyType phyType, char * SNRTraceFilePath, bool activateLoss)
{
Ptr<WimaxPhy> phy;
@@ -104,7 +113,7 @@
sphy->ActivateLoss (activateLoss);
if (!m_channel)
{
- m_channel = CreateObject<SimpleOfdmWimaxChannel> ();
+ m_channel = CreateObject<SimpleOfdmWimaxChannel> (SimpleOfdmWimaxChannel::COST231_PROPAGATION);
}
break;
default:
--- a/src/helper/wimax-helper.h Wed Apr 21 17:00:57 2010 +0200
+++ b/src/helper/wimax-helper.h Thu Apr 22 15:23:20 2010 +0200
@@ -31,6 +31,7 @@
#include "ns3/deprecated.h"
#include "ns3/service-flow.h"
#include "ns3/propagation-loss-model.h"
+#include "ns3/simple-ofdm-wimax-channel.h"
#include "ns3/bs-uplink-scheduler.h"
#include "ns3/bs-uplink-scheduler-mbqos.h"
#include "ns3/bs-uplink-scheduler-simple.h"
@@ -46,9 +47,15 @@
class WimaxPhy;
class UplinkScheduler;
+
/**
- * \brief build a set of WimaxNetDevice objects
+ * \brief helps to manage and create WimaxNetDevice objects
+ *
+ * This class can help to create a large set of similar
+ * WimaxNetDevice objects and to configure their attributes
+ * during creation.
*/
+
class WimaxHelper :public PcapHelperForDevice, public AsciiTraceHelperForDevice
{
public:
@@ -84,7 +91,9 @@
/**< An migration-based uplink scheduler */
};
-
+ /**
+ * \brief Create a Wimax helper in an empty state.
+ */
WimaxHelper (void);
~WimaxHelper (void);
/**
@@ -133,7 +142,7 @@
* \param c a set of nodes
* \param type device type to create
* \param phyType a phy to use
- * \param schedulerType a scheduling mechanism
+ * \param schedulerType the type of the scheduling algorithm to install
*
* For each of the input nodes, a new WiMAX net device (either
* ns3::SubscriberStationNetDevice or ns3::BaseStationNetDevice
@@ -175,6 +184,13 @@
double frameDuration);
/**
+ * \brief Set the propagation and loss model of the channel. By default the channel
+ * uses a COST231 propagation and loss model.
+ * \param propagationModel The propagation and loss model to set
+ */
+ void SetPropagationLossModel (SimpleOfdmWimaxChannel::PropModel propagationModel);
+
+ /**
* \param phyType WiMAX Physical layer type
* \return WiMAX Phy object
*
@@ -188,14 +204,14 @@
* \param activateLoss set to 1 to activate losses 0 otherwise
* \return WiMAX Phy object
*
- * Creates a physical layer without a channel
+ * Creates a physical layer without creating a channel
*/
Ptr<WimaxPhy> CreatePhyWithoutChannel (PhyType phyType, char * SNRTraceFilePath, bool activateLoss);
/**
* \param phyType WiMAX Physical layer type
- * \param SNRTraceFilePath of the repository containing the SNR traces files
- * \param activateLoss set to 1 to activate losses 0 otherwise
+ * \param SNRTraceFilePath the path to the repository containing the SNR traces files
+ * \param activateLoss set to 1 if you want ton activate losses 0 otherwise
* \return WiMAX Phy object
*
* Creates a physical layer
@@ -206,7 +222,7 @@
* \param deviceType Device type to create.
* \param phyType PHY type to create.
* \param channel A channel to use.
- * \param schedulerType The scheduling mechanism.
+ * \param schedulerType The scheduling mechanism to install on the device.
*
* For each of the input nodes, a new WiMAX net device (either
* ns3::SubscriberStationNetDevice or ns3::BaseStationNetDevice
@@ -220,7 +236,7 @@
/**
* \brief Creates a transport service flow.
- * \param direction the Direction of the service flow: UP or DOWN.
+ * \param direction the direction of the service flow: UP or DOWN.
* \param schedulinType The service scheduling type to be used: UGS, RTPS, NRTPS, BE
* \param classifier The classifier to be used for this service flow
*