--- a/src/devices/wifi/mac-stations.cc Fri Feb 22 23:16:51 2008 +0100
+++ b/src/devices/wifi/mac-stations.cc Fri Feb 22 23:28:01 2008 +0100
@@ -20,6 +20,7 @@
#include "mac-stations.h"
#include "wifi-default-parameters.h"
+#include "mac-parameters.h"
#include "ns3/assert.h"
#include "ns3/log.h"
#include "ns3/tag.h"
@@ -151,6 +152,7 @@
}
MacStation *station = CreateStation ();
station->Reset ();
+ station->SetParameters (m_parameters);
m_stations.push_back (std::make_pair (address, station));
return station;
}
@@ -216,6 +218,11 @@
{
return m_isLowLatency;
}
+void
+MacStations::SetParameters (MacParameters *parameters)
+{
+ m_parameters = parameters;
+}
} // namespace ns3
@@ -301,6 +308,12 @@
MacStation::~MacStation ()
{}
+void
+MacStation::SetParameters (MacParameters *parameters)
+{
+ m_parameters = parameters;
+}
+
bool
MacStation::IsBrandNew (void) const
{
@@ -469,6 +482,80 @@
return tag.GetRtsMode ();
}
+bool
+MacStation::NeedRts (Ptr<const Packet> packet)
+{
+ if (packet->GetSize () > m_parameters->GetRtsCtsThreshold ())
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+uint32_t
+MacStation::GetMaxSsrc (Ptr<const Packet> packet)
+{
+ return m_parameters->GetMaxSsrc ();
+}
+
+uint32_t
+MacStation::GetMaxSlrc (Ptr<const Packet> packet)
+{
+ return m_parameters->GetMaxSlrc ();
+}
+
+bool
+MacStation::NeedFragmentation (Ptr<const Packet> packet)
+{
+ if (packet->GetSize () > m_parameters->GetFragmentationThreshold ())
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+uint32_t
+MacStation::GetNFragments (Ptr<const Packet> packet)
+{
+ uint32_t nFragments = packet->GetSize () / m_parameters->GetFragmentationThreshold () + 1;
+ return nFragments;
+}
+
+uint32_t
+MacStation::GetFragmentSize (Ptr<const Packet> packet, uint32_t fragmentNumber)
+{
+ uint32_t nFragment = GetNFragments (packet);
+ if (fragmentNumber >= nFragment)
+ {
+ return 0;
+ }
+ if (fragmentNumber == nFragment - 1)
+ {
+ uint32_t lastFragmentSize = packet->GetSize () % m_parameters->GetFragmentationThreshold ();
+ return lastFragmentSize;
+ }
+ else
+ {
+ return m_parameters->GetFragmentationThreshold ();
+ }
+}
+
+bool
+MacStation::IsLastFragment (Ptr<const Packet> packet, uint32_t fragmentNumber)
+{
+ if (fragmentNumber == (GetNFragments (packet) - 1))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
} // namespace ns3