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  {
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 */