src/devices/wifi/mgt-headers.cc
changeset 4793 4f6a6772628e
parent 3662 eb4d8f900458
child 4799 34d837b1a529
--- 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