--- a/src/devices/wifi/mgt-headers.cc Wed Feb 25 12:27:00 2009 -0500
+++ b/src/devices/wifi/mgt-headers.cc Sat Feb 28 14:21:05 2009 +0300
@@ -20,6 +20,8 @@
#include "mgt-headers.h"
#include "ns3/simulator.h"
#include "ns3/assert.h"
+#include "ns3/log.h"
+NS_LOG_COMPONENT_DEFINE("MgtHeaders");
namespace ns3 {
@@ -109,6 +111,11 @@
MgtProbeResponseHeader::~MgtProbeResponseHeader ()
{}
+uint64_t
+MgtProbeResponseHeader::GetTimestamp()
+{
+ return m_timestamp;
+}
Ssid
MgtProbeResponseHeader::GetSsid (void) const
{
@@ -198,7 +205,7 @@
MgtProbeResponseHeader::Deserialize (Buffer::Iterator start)
{
Buffer::Iterator i = start;
- i.Next (8); // timestamp
+ m_timestamp = i.ReadNtohU64();
m_beaconInterval = i.ReadNtohU16 ();
m_beaconInterval *= 1024;
i = m_capability.Deserialize (i);
@@ -207,6 +214,71 @@
//i.Next (3); // ds parameter set
return i.GetDistanceFrom (start);
}
+/***********************************************************
+ * Mesh Beacon
+ ***********************************************************/
+void
+MgtMeshBeaconHeader::SetMeshConfigurationElement(MeshConfigurationElement mesh_config)
+{
+ m_meshConfig = mesh_config;
+}
+
+void
+MgtMeshBeaconHeader::SetWifiBeaconTimingElement(WifiBeaconTimingElement wifi_timing)
+{
+ m_meshTiming = wifi_timing;
+}
+
+MeshConfigurationElement
+MgtMeshBeaconHeader::GetMeshConfigurationElement()
+{
+ return m_meshConfig;
+}
+
+WifiBeaconTimingElement
+MgtMeshBeaconHeader::GetWifiBeaconTimingElement()
+{
+ return m_meshTiming;
+}
+
+uint32_t
+MgtMeshBeaconHeader::GetSerializedSize (void) const
+{
+ uint32_t size = (
+ MgtBeaconHeader::GetSerializedSize()
+ + m_meshConfig.GetSerializedSize()
+ + m_meshTiming.GetSerializedSize()
+ + 9 //MSCIE
+ );
+ return size;
+}
+
+void
+MgtMeshBeaconHeader::Serialize (Buffer::Iterator start) const
+{
+ //First we pack Beacon:
+ NS_LOG_DEBUG("Serialization beacon");
+ Buffer::Iterator i = start;
+ MgtBeaconHeader::Serialize(i);
+ i.Next(MgtBeaconHeader::GetSerializedSize());
+ i = m_meshConfig.Serialize(i);
+ i = m_meshTiming.Serialize(i);
+ i.Next(9); //MSCIE
+}
+
+uint32_t
+MgtMeshBeaconHeader::Deserialize (Buffer::Iterator start)
+{
+ NS_LOG_DEBUG("Deserialization beacon");
+ Buffer::Iterator i = start;
+ MgtBeaconHeader::Deserialize(start);
+ i.Next(MgtBeaconHeader::GetSerializedSize());
+ i = m_meshConfig.Deserialize(i);
+ i = m_meshTiming.Deserialize(i);
+ i.Next(9); //MSCIE
+ return i.GetDistanceFrom (start);
+}
+
/***********************************************************
* Assoc Request