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
30namespace ns3 {
31
35typedef std::tuple<uint8_t, uint16_t, uint16_t, FrequencyChannelType, WifiPhyBand> FrequencyChannelInfo;
36
37
44{
45public:
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
169private:
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