A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
radiotap-header.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 CTTC
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Include., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Nicola Baldo <nbaldo@cttc.es>
19  */
20 
21 #ifndef RADIOTAP_HEADER_H
22 #define RADIOTAP_HEADER_H
23 
24 
25 #include <ns3/header.h>
26 
27 namespace ns3 {
28 
48 class RadiotapHeader : public Header
49 {
50 public:
56  static TypeId GetTypeId (void);
57  virtual TypeId GetInstanceTypeId (void) const;
58 
66  virtual uint32_t GetSerializedSize (void) const;
67 
76  virtual void Serialize (Buffer::Iterator start) const;
77 
87  virtual uint32_t Deserialize (Buffer::Iterator start);
88 
102  virtual void Print (std::ostream &os) const;
103 
112  void SetTsft (uint64_t tsft);
113 
122  uint64_t GetTsft (void) const;
123 
124  enum {
126  FRAME_FLAG_CFP = 0x01,
128  FRAME_FLAG_WEP = 0x04,
134  };
135 
140  void SetFrameFlags (uint8_t flags);
141 
147  uint8_t GetFrameFlags (void) const;
148 
153  void SetRate (uint8_t rate);
154 
159  uint8_t GetRate (void) const;
160 
161  enum {
162  CHANNEL_FLAG_NONE = 0x0000,
164  CHANNEL_FLAG_CCK = 0x0020,
165  CHANNEL_FLAG_OFDM = 0x0040,
171  };
172 
179  void SetChannelFrequencyAndFlags (uint16_t frequency, uint16_t flags);
180 
185  uint16_t GetChannelFrequency (void) const;
186 
192  uint16_t GetChannelFlags (void) const;
193 
201  void SetAntennaSignalPower (double signal);
202 
210  uint8_t GetAntennaSignalPower (void) const;
211 
219  void SetAntennaNoisePower (double noise);
220 
228  uint8_t GetAntennaNoisePower (void) const;
229 
230 private:
231  enum {
232  RADIOTAP_TSFT = 0x00000001,
233  RADIOTAP_FLAGS = 0x00000002,
234  RADIOTAP_RATE = 0x00000004,
235  RADIOTAP_CHANNEL = 0x00000008,
236  RADIOTAP_FHSS = 0x00000010,
238  RADIOTAP_DBM_ANTNOISE = 0x00000040,
239  RADIOTAP_LOCK_QUALITY = 0x00000080,
242  RADIOTAP_DBM_TX_POWER = 0x00000200,
243  RADIOTAP_ANTENNA = 0x00000400,
244  RADIOTAP_DB_ANTSIGNAL = 0x00000800,
245  RADIOTAP_DB_ANTNOISE = 0x00001000,
246  RADIOTAP_EXT = 0x10000000
247  };
248 
249  uint16_t m_length;
250  uint32_t m_present;
251 
252  uint64_t m_tsft;
253  uint8_t m_flags;
254  uint8_t m_rate;
255  uint16_t m_channelFreq;
256  uint16_t m_channelFlags;
258  int8_t m_antennaNoise;
259 };
260 
261 } // namespace ns3
262 
263 #endif /* RADIOTAP_HEADER_H */
Protocol header serialization and deserialization.
Definition: header.h:42
Frame used short guard interval (HT)
Radiotap header implementation.
uint64_t GetTsft(void) const
Get the Time Synchronization Function Timer (TSFT) value.
virtual void Print(std::ostream &os) const
This method is used by Packet::Print to print the content of the header as ascii data to a C++ output...
uint8_t GetRate(void) const
Get the transmit/receive channel frequency in units of megahertz.
Frame sent/received with short preamble.
virtual uint32_t Deserialize(Buffer::Iterator start)
This method is used by Packet::RemoveHeader to re-create a header from the byte buffer of a packet...
virtual uint32_t GetSerializedSize(void) const
This method is used by Packet::AddHeader to store the header into the byte buffer of a packet...
uint16_t m_channelFreq
Tx/Rx frequency in MHz.
virtual TypeId GetInstanceTypeId(void) const
void SetAntennaNoisePower(double noise)
Set the RF noise power at the antenna as a decibel difference from an arbitrary, fixed reference...
uint8_t GetAntennaNoisePower(void) const
Get the RF noise power at the antenna as a decibel difference from an arbitrary, fixed reference...
void SetTsft(uint64_t tsft)
Set the Time Synchronization Function Timer (TSFT) value.
static TypeId GetTypeId(void)
Get the type ID.
iterator in a Buffer instance
Definition: buffer.h:98
Frame sent/received during CFP.
uint64_t m_tsft
Time Synchronization Function Timer (when the first bit of the MPDU arrived at the MAC) ...
void SetChannelFrequencyAndFlags(uint16_t frequency, uint16_t flags)
Set the transmit/receive channel frequency and flags.
int8_t m_antennaNoise
RF noise power at the antenna, dB difference from an arbitrary, fixed reference.
Frame sent/received with fragmentation.
Frame has padding between 802.11 header and payload (to 32-bit boundary)
uint16_t m_channelFlags
Tx/Rx channel flags.
void SetFrameFlags(uint8_t flags)
Set the frame flags of the transmitted or received frame.
void SetRate(uint8_t rate)
Set the transmit/receive channel frequency in units of megahertz.
int8_t m_antennaSignal
RF signal power at the antenna, dB difference from an arbitrary, fixed reference. ...
uint8_t m_flags
Properties of transmitted and received frames.
uint8_t GetFrameFlags(void) const
Get the frame flags of the transmitted or received frame.
uint16_t GetChannelFlags(void) const
Get the channel flags of the transmitted or received frame.
uint32_t m_present
bits describing which fields follow header
Frame sent/received with WEP encryption.
uint8_t GetAntennaSignalPower(void) const
Get the RF signal power at the antenna as a decibel difference from an arbitrary, fixed reference...
uint16_t m_length
entire length of radiotap data + header
uint8_t m_rate
TX/RX data rate in units of 500 kbps.
virtual void Serialize(Buffer::Iterator start) const
This method is used by Packet::AddHeader to store the header into the byte buffer of a packet...
uint16_t GetChannelFrequency(void) const
Get the transmit/receive data rate in units of 500 kbps.
a unique identifier for an interface.
Definition: type-id.h:49
void SetAntennaSignalPower(double signal)
Set the RF signal power at the antenna as a decibel difference from an arbitrary, fixed reference...