--- a/src/devices/mesh/dot11s/peer-link-frame.cc Tue Jun 22 11:59:26 2010 +0100
+++ b/src/devices/mesh/dot11s/peer-link-frame.cc Tue Jun 22 12:05:08 2010 +0100
@@ -151,7 +151,7 @@
}
if ((uint8_t) (WifiActionHeader::PEER_LINK_CLOSE) != m_subtype)
{
- i = m_rates.Serialize (i);
+ i = m_rates.SerializeIE (i);
}
if ((uint8_t) (WifiActionHeader::PEER_LINK_CONFIRM) != m_subtype)
{
@@ -191,7 +191,7 @@
}
if ((uint8_t) (WifiActionHeader::PEER_LINK_CLOSE) != m_subtype)
{
- i = m_rates.Deserialize (i);
+ i = m_rates.DeserializeIE (i);
}
if ((uint8_t) (WifiActionHeader::PEER_LINK_CONFIRM) != m_subtype)
{
--- a/src/devices/wifi/mgt-headers.cc Tue Jun 22 11:59:26 2010 +0100
+++ b/src/devices/wifi/mgt-headers.cc Tue Jun 22 12:05:08 2010 +0100
@@ -87,15 +87,15 @@
MgtProbeRequestHeader::Serialize (Buffer::Iterator start) const
{
Buffer::Iterator i = start;
- i = m_ssid.Serialize (i);
- i = m_rates.Serialize (i);
+ i = m_ssid.SerializeIE (i);
+ i = m_rates.SerializeIE (i);
}
uint32_t
MgtProbeRequestHeader::Deserialize (Buffer::Iterator start)
{
Buffer::Iterator i = start;
- i = m_ssid.Deserialize (i);
- i = m_rates.Deserialize (i);
+ i = m_ssid.DeserializeIE (i);
+ i = m_rates.DeserializeIE (i);
return i.GetDistanceFrom (start);
}
@@ -196,8 +196,8 @@
i.WriteHtonU64 (Simulator::Now ().GetMicroSeconds ());
i.WriteHtonU16 (m_beaconInterval / 1024);
i = m_capability.Serialize (i);
- i = m_ssid.Serialize (i);
- i = m_rates.Serialize (i);
+ i = m_ssid.SerializeIE (i);
+ i = m_rates.SerializeIE (i);
//i.WriteU8 (0, 3); // ds parameter set.
}
uint32_t
@@ -208,8 +208,8 @@
m_beaconInterval = i.ReadNtohU16 ();
m_beaconInterval *= 1024;
i = m_capability.Deserialize (i);
- i = m_ssid.Deserialize (i);
- i = m_rates.Deserialize (i);
+ i = m_ssid.DeserializeIE (i);
+ i = m_rates.DeserializeIE (i);
//i.Next (3); // ds parameter set
return i.GetDistanceFrom (start);
}
@@ -293,8 +293,8 @@
Buffer::Iterator i = start;
i = m_capability.Serialize (i);
i.WriteHtonU16 (m_listenInterval);
- i = m_ssid.Serialize (i);
- i = m_rates.Serialize (i);
+ i = m_ssid.SerializeIE (i);
+ i = m_rates.SerializeIE (i);
}
uint32_t
MgtAssocRequestHeader::Deserialize (Buffer::Iterator start)
@@ -302,8 +302,8 @@
Buffer::Iterator i = start;
i = m_capability.Deserialize (i);
m_listenInterval = i.ReadNtohU16 ();
- i = m_ssid.Deserialize (i);
- i = m_rates.Deserialize (i);
+ i = m_ssid.DeserializeIE (i);
+ i = m_rates.DeserializeIE (i);
return i.GetDistanceFrom (start);
}
@@ -378,7 +378,7 @@
i = m_capability.Serialize (i);
i = m_code.Serialize (i);
i.WriteHtonU16 (m_aid);
- i = m_rates.Serialize (i);
+ i = m_rates.SerializeIE (i);
}
uint32_t
MgtAssocResponseHeader::Deserialize (Buffer::Iterator start)
@@ -387,7 +387,7 @@
i = m_capability.Deserialize (i);
i = m_code.Deserialize (i);
m_aid = i.ReadNtohU16 ();
- i = m_rates.Deserialize (i);
+ i = m_rates.DeserializeIE (i);
return i.GetDistanceFrom (start);
}
/**********************************************************
--- a/src/devices/wifi/ssid.cc Tue Jun 22 11:59:26 2010 +0100
+++ b/src/devices/wifi/ssid.cc Tue Jun 22 12:05:08 2010 +0100
@@ -20,8 +20,6 @@
#include "ssid.h"
#include "ns3/assert.h"
-#define ELEMENT_ID (0)
-
namespace ns3 {
Ssid::Ssid ()
@@ -92,17 +90,6 @@
}
return false;
}
-uint32_t
-Ssid::GetLength (void) const
-{
- uint8_t size = 0;
- while (m_ssid[size] != 0 && size < 32)
- {
- size++;
- }
- NS_ASSERT (size <= 32);
- return size;
-}
char *
Ssid::PeekString (void) const
@@ -112,30 +99,32 @@
return (char *)m_ssid;
}
-uint32_t
-Ssid::GetSerializedSize (void) const
+WifiInformationElementId
+Ssid::ElementId () const
{
- return 1 + 1 + m_length;
+ return IE_SSID;
}
-Buffer::Iterator
-Ssid::Serialize (Buffer::Iterator i) const
+
+uint8_t
+Ssid::GetInformationSize () const
+{
+ return m_length;
+}
+
+void
+Ssid::SerializeInformation (Buffer::Iterator start) const
{
NS_ASSERT (m_length <= 32);
- i.WriteU8 (ELEMENT_ID);
- i.WriteU8 (m_length);
- i.Write (m_ssid, m_length);
- return i;
+ start.Write (m_ssid, m_length);
}
-Buffer::Iterator
-Ssid::Deserialize (Buffer::Iterator i)
+uint8_t
+Ssid::DeserializeInformation (Buffer::Iterator start,
+ uint8_t length)
{
- uint8_t elementId;
- elementId = i.ReadU8 ();
- NS_ASSERT (elementId == ELEMENT_ID);
- m_length = i.ReadU8 ();
+ m_length = length;
NS_ASSERT (m_length <= 32);
- i.Read (m_ssid, m_length);
- return i;
+ start.Read (m_ssid, m_length);
+ return length;
}
ATTRIBUTE_HELPER_CPP (Ssid);
--- a/src/devices/wifi/ssid.h Tue Jun 22 11:59:26 2010 +0100
+++ b/src/devices/wifi/ssid.h Tue Jun 22 12:05:08 2010 +0100
@@ -23,6 +23,7 @@
#include <stdint.h>
#include "ns3/buffer.h"
#include "ns3/attribute-helper.h"
+#include "ns3/wifi-information-element.h"
namespace ns3 {
@@ -30,7 +31,7 @@
* \brief a IEEE 802.11 SSID
*
*/
-class Ssid
+class Ssid : public WifiInformationElement
{
public:
// broadcast ssid
@@ -41,12 +42,13 @@
bool IsEqual (const Ssid& o) const;
bool IsBroadcast (void) const;
- uint32_t GetLength (void) const;
char *PeekString (void) const;
- uint32_t GetSerializedSize (void) const;
- Buffer::Iterator Serialize (Buffer::Iterator i) const;
- Buffer::Iterator Deserialize (Buffer::Iterator i);
+ WifiInformationElementId ElementId () const;
+ uint8_t GetInformationSize () const;
+ void SerializeInformation (Buffer::Iterator start) const;
+ uint8_t DeserializeInformation (Buffer::Iterator start,
+ uint8_t length);
private:
uint8_t m_ssid[33];
--- a/src/devices/wifi/supported-rates.cc Tue Jun 22 11:59:26 2010 +0100
+++ b/src/devices/wifi/supported-rates.cc Tue Jun 22 12:05:08 2010 +0100
@@ -24,8 +24,6 @@
NS_LOG_COMPONENT_DEFINE ("SupportedRates");
-#define ELEMENT_ID (1)
-
namespace ns3 {
SupportedRates::SupportedRates ()
@@ -101,29 +99,30 @@
{
return (m_rates[i]&0x7f) * 500000;
}
-uint32_t
-SupportedRates::GetSerializedSize (void) const
+
+WifiInformationElementId
+SupportedRates::ElementId () const
{
- return m_nRates + 1 + 1;
+ return IE_SUPPORTED_RATES;
}
-Buffer::Iterator
-SupportedRates::Serialize (Buffer::Iterator start) const
+uint8_t
+SupportedRates::GetInformationSize () const
{
- start.WriteU8 (ELEMENT_ID);
- start.WriteU8 (m_nRates);
+ return m_nRates;
+}
+void
+SupportedRates::SerializeInformation (Buffer::Iterator start) const
+{
start.Write (m_rates, m_nRates);
- return start;
}
-Buffer::Iterator
-SupportedRates::Deserialize (Buffer::Iterator start)
+uint8_t
+SupportedRates::DeserializeInformation (Buffer::Iterator start,
+ uint8_t length)
{
- uint8_t elementId;
- elementId = start.ReadU8 ();
- NS_ASSERT (elementId == ELEMENT_ID);
- m_nRates = start.ReadU8 ();
- NS_ASSERT (m_nRates <= 8);
+ NS_ASSERT (length <= 8);
+ m_nRates = length;
start.Read (m_rates, m_nRates);
- return start;
+ return m_nRates;
}
std::ostream &operator << (std::ostream &os, const SupportedRates &rates)
--- a/src/devices/wifi/supported-rates.h Tue Jun 22 11:59:26 2010 +0100
+++ b/src/devices/wifi/supported-rates.h Tue Jun 22 12:05:08 2010 +0100
@@ -23,10 +23,11 @@
#include <stdint.h>
#include <ostream>
#include "ns3/buffer.h"
+#include "ns3/wifi-information-element.h"
namespace ns3 {
-class SupportedRates {
+class SupportedRates : public WifiInformationElement {
public:
SupportedRates ();
@@ -39,9 +40,11 @@
uint8_t GetNRates (void) const;
uint32_t GetRate (uint8_t i) const;
- uint32_t GetSerializedSize (void) const;
- Buffer::Iterator Serialize (Buffer::Iterator start) const;
- Buffer::Iterator Deserialize (Buffer::Iterator start);
+ WifiInformationElementId ElementId () const;
+ uint8_t GetInformationSize () const;
+ void SerializeInformation (Buffer::Iterator start) const;
+ uint8_t DeserializeInformation (Buffer::Iterator start,
+ uint8_t length);
private:
uint8_t m_nRates;
uint8_t m_rates[8];