A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
mgt-headers.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006 INRIA
4  * Copyright (c) 2009 MIRKO BANCHI
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
20  * Author: Mirko Banchi <mk.banchi@gmail.com>
21  */
22 #ifndef MGT_HEADERS_H
23 #define MGT_HEADERS_H
24 
25 #include <stdint.h>
26 
27 #include "ns3/header.h"
28 #include "status-code.h"
29 #include "capability-information.h"
30 #include "supported-rates.h"
31 #include "ssid.h"
32 #include "ht-capabilities.h"
33 
34 namespace ns3 {
35 
41 {
42 public:
45 
46  void SetSsid (Ssid ssid);
47  void SetSupportedRates (SupportedRates rates);
48  void SetListenInterval (uint16_t interval);
49  void SetHtCapabilities(HtCapabilities htcapabilities);
50 
51  HtCapabilities GetHtCapabilities (void) const;
52  Ssid GetSsid (void) const;
53  SupportedRates GetSupportedRates (void) const;
54  uint16_t GetListenInterval (void) const;
55 
56  static TypeId GetTypeId (void);
57  virtual TypeId GetInstanceTypeId (void) const;
58  virtual void Print (std::ostream &os) const;
59  virtual uint32_t GetSerializedSize (void) const;
60  virtual void Serialize (Buffer::Iterator start) const;
61  virtual uint32_t Deserialize (Buffer::Iterator start);
62 
63 private:
68  uint16_t m_listenInterval;
69 };
70 
71 
77 {
78 public:
81 
84  HtCapabilities GetHtCapabilities (void) const;
85 
86  void SetHtCapabilities(HtCapabilities htcapabilities);
87  void SetSupportedRates (SupportedRates rates);
88  void SetStatusCode (StatusCode code);
89 
90  static TypeId GetTypeId (void);
91  virtual TypeId GetInstanceTypeId (void) const;
92  virtual void Print (std::ostream &os) const;
93  virtual uint32_t GetSerializedSize (void) const;
94  virtual void Serialize (Buffer::Iterator start) const;
95  virtual uint32_t Deserialize (Buffer::Iterator start);
96 
97 private:
101  uint16_t m_aid;
103 };
104 
105 
111 {
112 public:
114 
115  void SetSsid (Ssid ssid);
116  void SetSupportedRates (SupportedRates rates);
117  Ssid GetSsid (void) const;
118  SupportedRates GetSupportedRates (void) const;
119  HtCapabilities GetHtCapabilities (void) const;
120 
121  void SetHtCapabilities(HtCapabilities htcapabilities);
122  static TypeId GetTypeId (void);
123  virtual TypeId GetInstanceTypeId (void) const;
124  virtual void Print (std::ostream &os) const;
125  virtual uint32_t GetSerializedSize (void) const;
126  virtual void Serialize (Buffer::Iterator start) const;
127  virtual uint32_t Deserialize (Buffer::Iterator start);
128 private:
132 };
133 
134 
140 {
141 public:
144 
145  Ssid GetSsid (void) const;
146  uint64_t GetBeaconIntervalUs (void) const;
147  SupportedRates GetSupportedRates (void) const;
148  HtCapabilities GetHtCapabilities (void) const;
149 
150  void SetHtCapabilities(HtCapabilities htcapabilities);
151  void SetSsid (Ssid ssid);
152  void SetBeaconIntervalUs (uint64_t us);
153  void SetSupportedRates (SupportedRates rates);
154  uint64_t GetTimestamp ();
155  static TypeId GetTypeId (void);
156  virtual TypeId GetInstanceTypeId (void) const;
157  virtual void Print (std::ostream &os) const;
158  virtual uint32_t GetSerializedSize (void) const;
159  virtual void Serialize (Buffer::Iterator start) const;
160  virtual uint32_t Deserialize (Buffer::Iterator start);
161 
162 private:
163  uint64_t m_timestamp;
169 };
170 
171 
177 {
178 };
179 
180 /****************************
181 * Action frames
182 *****************************/
183 
191 class WifiActionHeader : public Header
192 {
193 public:
194  WifiActionHeader ();
196 
197  /* Compatible with open80211s implementation */
198  enum CategoryValue //table 7-24 staring from 4
199  {
207  };
208  /* Compatible with open80211s implementation */
210  {
214  };
216  {
219  };
220  /* Compatible with open80211s implementation */
222  {
224  };
226  {
228  };
230  {
241  };
243  {
247  };
248  typedef union
249  {
250  enum PeerLinkMgtActionValue peerLink;
251  enum LinkMetricActionValue linkMetrtic;
252  enum PathSelectionActionValue pathSelection;
253  enum InterworkActionValue interwork;
254  enum ResourceCoordinationActionValue resourceCoordination;
255  enum BlockAckActionValue blockAck;
256  } ActionValue;
257  void SetAction (enum CategoryValue type,ActionValue action);
258 
261  static TypeId GetTypeId (void);
262  virtual TypeId GetInstanceTypeId () const;
263  virtual void Print (std::ostream &os) const;
264  virtual uint32_t GetSerializedSize () const;
265  virtual void Serialize (Buffer::Iterator start) const;
266  virtual uint32_t Deserialize (Buffer::Iterator start);
267 private:
268  uint8_t m_category;
269  uint8_t m_actionValue;
270 };
271 
277 {
278 public:
280 
281  static TypeId GetTypeId (void);
282  virtual TypeId GetInstanceTypeId (void) const;
283  virtual void Print (std::ostream &os) const;
284  virtual uint32_t GetSerializedSize (void) const;
285  virtual void Serialize (Buffer::Iterator start) const;
286  virtual uint32_t Deserialize (Buffer::Iterator start);
287 
288  void SetDelayedBlockAck ();
289  void SetImmediateBlockAck ();
290  void SetTid (uint8_t tid);
291  void SetTimeout (uint16_t timeout);
292  void SetBufferSize (uint16_t size);
293  void SetStartingSequence (uint16_t seq);
294  void SetAmsduSupport (bool supported);
295 
296  uint16_t GetStartingSequence (void) const;
297  uint8_t GetTid (void) const;
298  bool IsImmediateBlockAck (void) const;
299  uint16_t GetTimeout (void) const;
300  uint16_t GetBufferSize (void) const;
301  bool IsAmsduSupported (void) const;
302 
303 private:
304  uint16_t GetParameterSet (void) const;
305  void SetParameterSet (uint16_t params);
306  uint16_t GetStartingSequenceControl (void) const;
307  void SetStartingSequenceControl (uint16_t seqControl);
308 
309  uint8_t m_dialogToken; /* Not used for now */
310  uint8_t m_amsduSupport;
311  uint8_t m_policy;
312  uint8_t m_tid;
313  uint16_t m_bufferSize;
314  uint16_t m_timeoutValue;
315  uint16_t m_startingSeq;
316 };
317 
318 
324 {
325 public:
327 
328  static TypeId GetTypeId (void);
329  virtual TypeId GetInstanceTypeId (void) const;
330  virtual void Print (std::ostream &os) const;
331  virtual uint32_t GetSerializedSize (void) const;
332  virtual void Serialize (Buffer::Iterator start) const;
333  virtual uint32_t Deserialize (Buffer::Iterator start);
334 
335  void SetDelayedBlockAck ();
336  void SetImmediateBlockAck ();
337  void SetTid (uint8_t tid);
338  void SetTimeout (uint16_t timeout);
339  void SetBufferSize (uint16_t size);
340  void SetStatusCode (StatusCode code);
341  void SetAmsduSupport (bool supported);
342 
343  StatusCode GetStatusCode (void) const;
344  uint8_t GetTid (void) const;
345  bool IsImmediateBlockAck (void) const;
346  uint16_t GetTimeout (void) const;
347  uint16_t GetBufferSize (void) const;
348  bool IsAmsduSupported (void) const;
349 
350 private:
351  uint16_t GetParameterSet (void) const;
352  void SetParameterSet (uint16_t params);
353 
354  uint8_t m_dialogToken; /* Not used for now */
356  uint8_t m_amsduSupport;
357  uint8_t m_policy;
358  uint8_t m_tid;
359  uint16_t m_bufferSize;
360  uint16_t m_timeoutValue;
361 };
362 
363 
368 class MgtDelBaHeader : public Header
369 {
370 public:
371  MgtDelBaHeader ();
372 
373  static TypeId GetTypeId (void);
374  virtual TypeId GetInstanceTypeId (void) const;
375  virtual void Print (std::ostream &os) const;
376  virtual uint32_t GetSerializedSize (void) const;
377  virtual void Serialize (Buffer::Iterator start) const;
378  virtual uint32_t Deserialize (Buffer::Iterator start);
379 
380  bool IsByOriginator (void) const;
381  uint8_t GetTid (void) const;
382  void SetTid (uint8_t);
383  void SetByOriginator (void);
384  void SetByRecipient (void);
385 
386 private:
387  uint16_t GetParameterSet (void) const;
388  void SetParameterSet (uint16_t params);
389 
390  uint16_t m_initiator;
391  uint16_t m_tid;
392  /* Not used for now.
393  Always set to 1: "Unspecified reason" */
394  uint16_t m_reasonCode;
395 };
396 
397 } // namespace ns3
398 
399 #endif /* MGT_HEADERS_H */
Protocol header serialization and deserialization.
Definition: header.h:42
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:822
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:687
SupportedRates GetSupportedRates(void) const
Definition: mgt-headers.cc:65
uint16_t GetBufferSize(void) const
Definition: mgt-headers.cc:943
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:446
virtual uint32_t GetSerializedSize(void) const
SupportedRates GetSupportedRates(void) const
Definition: mgt-headers.cc:149
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:319
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:609
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:189
Ssid GetSsid(void) const
Definition: mgt-headers.cc:139
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:310
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:661
HtCapabilities m_htCapability
Definition: mgt-headers.h:131
uint64_t GetBeaconIntervalUs(void) const
Definition: mgt-headers.cc:144
SupportedRates m_rates
Definition: mgt-headers.h:65
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:80
CapabilityInformation m_capability
Definition: mgt-headers.h:99
CapabilityInformation m_capability
Definition: mgt-headers.h:167
void SetBufferSize(uint16_t size)
Definition: mgt-headers.cc:723
bool IsImmediateBlockAck(void) const
Definition: mgt-headers.cc:931
HtCapabilities m_htCapability
Definition: mgt-headers.h:67
virtual uint32_t GetSerializedSize(void) const
Definition: mgt-headers.cc:324
The Ht Capabilities Information ElementThis class knows how to serialise and deserialise the Ht Capab...
void SetHtCapabilities(HtCapabilities htcapabilities)
Definition: mgt-headers.cc:279
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:838
void SetAction(enum CategoryValue type, ActionValue action)
Definition: mgt-headers.cc:478
uint16_t GetBufferSize(void) const
Definition: mgt-headers.cc:759
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:832
CategoryValue GetCategory()
Definition: mgt-headers.cc:508
ns3::Time timeout
void SetTid(uint8_t)
void SetStatusCode(StatusCode code)
Definition: mgt-headers.cc:907
The Supported Rates Information ElementThis class knows how to serialise and deserialise the Supporte...
CapabilityInformation m_capability
Definition: mgt-headers.h:66
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:89
void SetTimeout(uint16_t timeout)
Definition: mgt-headers.cc:895
Ssid GetSsid(void) const
Definition: mgt-headers.cc:44
void SetSupportedRates(SupportedRates rates)
Definition: mgt-headers.cc:49
void SetAmsduSupport(bool supported)
Definition: mgt-headers.cc:735
Ssid GetSsid(void) const
Definition: mgt-headers.cc:294
iterator in a Buffer instance
Definition: buffer.h:98
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:996
void SetSupportedRates(SupportedRates rates)
Definition: mgt-headers.cc:274
bool IsAmsduSupported(void) const
Definition: mgt-headers.cc:949
uint16_t GetStartingSequenceControl(void) const
Definition: mgt-headers.cc:777
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:855
void SetTid(uint8_t tid)
Definition: mgt-headers.cc:888
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:209
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:216
SupportedRates GetSupportedRates(void) const
Definition: mgt-headers.cc:299
void SetListenInterval(uint16_t interval)
Definition: mgt-headers.cc:284
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:596
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:655
virtual TypeId GetInstanceTypeId() const
Definition: mgt-headers.cc:604
void SetParameterSet(uint16_t params)
Definition: mgt-headers.cc:800
virtual uint32_t GetSerializedSize() const
Definition: mgt-headers.cc:613
void SetStartingSequenceControl(uint16_t seqControl)
Definition: mgt-headers.cc:783
void SetTid(uint8_t tid)
Definition: mgt-headers.cc:710
uint16_t GetListenInterval(void) const
Definition: mgt-headers.cc:304
void SetParameterSet(uint16_t params)
Definition: mgt-headers.cc:966
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:94
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:110
void SetStartingSequence(uint16_t seq)
Definition: mgt-headers.cc:729
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:677
uint8_t GetTid(void) const
Definition: mgt-headers.cc:741
SupportedRates GetSupportedRates(void)
Definition: mgt-headers.cc:386
void SetHtCapabilities(HtCapabilities htcapabilities)
Definition: mgt-headers.cc:54
virtual TypeId GetInstanceTypeId(void) const
Definition: mgt-headers.cc:421
virtual uint32_t GetSerializedSize(void) const
Definition: mgt-headers.cc:666
void SetByOriginator(void)
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:336
void SetByRecipient(void)
bool IsAmsduSupported(void) const
Definition: mgt-headers.cc:765
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:986
virtual uint32_t GetSerializedSize(void) const
Definition: mgt-headers.cc:844
void SetBeaconIntervalUs(uint64_t us)
Definition: mgt-headers.cc:170
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:180
void SetBufferSize(uint16_t size)
Definition: mgt-headers.cc:901
uint8_t GetTid(void) const
virtual void Serialize(Buffer::Iterator start) const
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:624
HtCapabilities GetHtCapabilities(void) const
Definition: mgt-headers.cc:160
StatusCode GetStatusCode(void) const
Definition: mgt-headers.cc:919
HtCapabilities GetHtCapabilities(void) const
Definition: mgt-headers.cc:60
bool IsByOriginator(void) const
HtCapabilities m_htCapability
Definition: mgt-headers.h:168
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:239
virtual void Print(std::ostream &os) const
Definition: mgt-headers.cc:439
uint16_t GetTimeout(void) const
Definition: mgt-headers.cc:937
uint8_t GetTid(void) const
Definition: mgt-headers.cc:925
Definition: ssid.h:35
bool IsImmediateBlockAck(void) const
Definition: mgt-headers.cc:747
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:865
uint16_t GetStartingSequence(void) const
Definition: mgt-headers.cc:771
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:646
static TypeId GetTypeId(void)
Definition: mgt-headers.cc:412
void SetSupportedRates(SupportedRates rates)
Definition: mgt-headers.cc:396
uint16_t GetParameterSet(void) const
HtCapabilities m_htCapability
Definition: mgt-headers.h:102
void SetSupportedRates(SupportedRates rates)
Definition: mgt-headers.cc:175
void SetHtCapabilities(HtCapabilities htcapabilities)
Definition: mgt-headers.cc:401
void SetSsid(Ssid ssid)
Definition: mgt-headers.cc:39
void SetStatusCode(StatusCode code)
Definition: mgt-headers.cc:391
void SetParameterSet(uint16_t params)
void SetAmsduSupport(bool supported)
Definition: mgt-headers.cc:913
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:354
void SetTimeout(uint16_t timeout)
Definition: mgt-headers.cc:717
uint16_t GetParameterSet(void) const
Definition: mgt-headers.cc:789
ActionValue GetAction()
Definition: mgt-headers.cc:532
uint16_t GetParameterSet(void) const
Definition: mgt-headers.cc:955
virtual uint32_t GetSerializedSize(void) const
Definition: mgt-headers.cc:70
HtCapabilities GetHtCapabilities(void) const
Definition: mgt-headers.cc:289
virtual uint32_t GetSerializedSize(void) const
Definition: mgt-headers.cc:194
a unique identifier for an interface.
Definition: type-id.h:49
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:101
void SetHtCapabilities(HtCapabilities htcapabilities)
Definition: mgt-headers.cc:154
virtual uint32_t Deserialize(Buffer::Iterator start)
Definition: mgt-headers.cc:457
virtual uint32_t GetSerializedSize(void) const
Definition: mgt-headers.cc:426
StatusCode GetStatusCode(void)
Definition: mgt-headers.cc:381
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:618
virtual uint32_t Deserialize(Buffer::Iterator start)
uint16_t GetTimeout(void) const
Definition: mgt-headers.cc:753
HtCapabilities GetHtCapabilities(void) const
Definition: mgt-headers.cc:407
virtual void Print(std::ostream &os) const
virtual void Serialize(Buffer::Iterator start) const
Definition: mgt-headers.cc:343