A Discrete-Event Network Simulator
API
wifi-phy-operating-channel.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2021
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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Authors: Stefano Avallone <stavallo@unina.it>
19  * Sébastien Deronne <sebastien.deronne@gmail.com>
20  */
21 
22 #ifndef WIFI_PHY_OPERATING_CHANNEL_H
23 #define WIFI_PHY_OPERATING_CHANNEL_H
24 
25 #include "wifi-phy-band.h"
26 #include "wifi-standards.h"
27 #include <tuple>
28 #include <set>
29 
30 namespace ns3 {
31 
35 typedef std::tuple<uint8_t, uint16_t, uint16_t, FrequencyChannelType, WifiPhyBand> FrequencyChannelInfo;
36 
37 
44 {
45 public:
50 
51  virtual ~WifiPhyOperatingChannel ();
52 
53  static const std::set<FrequencyChannelInfo> m_frequencyChannels;
54 
60  bool IsSet (void) const;
74  void Set (uint8_t number, uint16_t frequency, uint16_t width,
75  WifiStandard standard, WifiPhyBand band);
85  void SetDefault (uint16_t width, WifiStandard standard, WifiPhyBand band);
86 
96  static uint8_t GetDefaultChannelNumber (uint16_t width, WifiStandard standard, WifiPhyBand band);
97 
103  uint8_t GetNumber (void) const;
109  uint16_t GetFrequency (void) const;
115  uint16_t GetWidth (void) const;
116 
125  uint8_t GetPrimaryChannelIndex (uint16_t primaryChannelWidth) const;
132  void SetPrimary20Index (uint8_t index);
139  uint16_t GetPrimaryChannelCenterFrequency (uint16_t primaryChannelWidth) const;
140 
142  typedef std::set<FrequencyChannelInfo>::const_iterator ConstIterator;
143 
156  static ConstIterator FindFirst (uint8_t number, uint16_t frequency, uint16_t width,
157  WifiStandard standard, WifiPhyBand band,
159 
167  uint8_t GetPrimaryChannelNumber (uint16_t primaryChannelWidth, WifiStandard standard) const;
168 
169 private:
173 };
174 
175 } //namespace ns3
176 
177 #endif /* WIFI_PHY_OPERATING_CHANNEL_H */
Class that keeps track of all information about the current PHY operating channel.
WifiPhyOperatingChannel()
Create an uninitialized PHY operating channel.
uint8_t GetNumber(void) const
Return the channel number identifying the whole operating channel.
bool IsSet(void) const
Return true if a valid channel has been set, false otherwise.
static const std::set< FrequencyChannelInfo > m_frequencyChannels
Available frequency channels.
uint8_t GetPrimaryChannelIndex(uint16_t primaryChannelWidth) const
If the operating channel width is a multiple of 20 MHz, return the index of the primary channel of th...
void SetPrimary20Index(uint8_t index)
Set the index of the primary 20 MHz channel (0 indicates the 20 MHz subchannel with the lowest center...
ConstIterator m_channelIt
const iterator pointing to the configured frequency channel
uint16_t GetWidth(void) const
Return the width of the whole operating channel (in MHz).
static ConstIterator FindFirst(uint8_t number, uint16_t frequency, uint16_t width, WifiStandard standard, WifiPhyBand band, ConstIterator start=m_frequencyChannels.begin())
Find the first channel matching the specified parameters.
void Set(uint8_t number, uint16_t frequency, uint16_t width, WifiStandard standard, WifiPhyBand band)
Set the channel according to the specified parameters if a unique frequency channel matches the speci...
uint8_t GetPrimaryChannelNumber(uint16_t primaryChannelWidth, WifiStandard standard) const
Get channel number of the primary channel.
void SetDefault(uint16_t width, WifiStandard standard, WifiPhyBand band)
Set the default channel of the given width and for the given standard and band.
static uint8_t GetDefaultChannelNumber(uint16_t width, WifiStandard standard, WifiPhyBand band)
Get the default channel number of the given width and for the given standard and band.
uint8_t m_primary20Index
index of the primary20 channel (0 indicates the 20 MHz subchannel with the lowest center frequency)
uint16_t GetFrequency(void) const
Return the center frequency of the operating channel (in MHz).
uint16_t GetPrimaryChannelCenterFrequency(uint16_t primaryChannelWidth) const
Get the center frequency of the primary channel of the given width.
std::set< FrequencyChannelInfo >::const_iterator ConstIterator
Typedef for a const iterator pointing to a channel in the set of available channels.
WifiStandard
Identifies the IEEE 802.11 specifications that a Wifi device can be configured to use.
WifiPhyBand
Identifies the PHY band.
Definition: wifi-phy-band.h:33
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::tuple< uint8_t, uint16_t, uint16_t, FrequencyChannelType, WifiPhyBand > FrequencyChannelInfo
A tuple (number, frequency, width, type, band) identifying a frequency channel.
def start()
Definition: core.py:1853