A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
vht-configuration.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Sébastien Deronne
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Sébastien Deronne <sebastien.deronne@gmail.com>
18 */
19
20#ifndef VHT_CONFIGURATION_H
21#define VHT_CONFIGURATION_H
22
23#include "ns3/object.h"
24
25#include <map>
26#include <tuple>
27
28namespace ns3
29{
30
31/**
32 * \brief VHT configuration
33 * \ingroup wifi
34 *
35 * This object stores VHT configuration information, for use in modifying
36 * AP or STA behavior and for constructing VHT-related information elements.
37 *
38 */
40{
41 public:
43 ~VhtConfiguration() override;
44
45 /**
46 * \brief Get the type ID.
47 * \return the object TypeId
48 */
49 static TypeId GetTypeId();
50
51 /**
52 * Enable or disable 160 MHz operation support.
53 *
54 * \param enable true if 20 MHz, 40 MHz, 80 MHz and 160 MHz operation is to be supported,
55 * false if 20 MHz, 40 MHz and 80 MHz operation is to be supported
56 */
57 void Set160MHzOperationSupported(bool enable);
58 /**
59 * \return true if 20 MHz, 40 MHz, 80 MHz and 160 MHz operation is supported,
60 * false if 20 MHz, 40 MHz and 80 MHz operation is supported
61 */
62 bool Get160MHzOperationSupported() const;
63
65 std::tuple<double, double, double>; //!< Tuple identifying CCA sensitivity thresholds for
66 //!< secondary channels
67
68 /**
69 * Sets the CCA sensitivity thresholds for PPDUs that do not occupy the primary channel.
70 * The thresholds are defined as a tuple {threshold for 20MHz PPDUs,
71 * threshold for 40MHz PPDUs, threshold for 80MHz PPDUs}.
72 *
73 * \param thresholds the CCA sensitivity thresholds
74 */
76 /**
77 * \return the CCA sensitivity thresholds for PPDUs that do not occupy the primary channel
78 */
80
81 /**
82 * \return the CCA sensitivity thresholds for PPDUs that do not occupy the primary channel,
83 * indexed by signal bandwidth (MHz)
84 */
85 const std::map<uint16_t, double>& GetSecondaryCcaSensitivityThresholdsPerBw() const;
86
87 private:
88 bool m_160MHzSupported; ///< whether 160 MHz operation is supported
89 std::map<uint16_t, double>
90 m_secondaryCcaSensitivityThresholds; ///< CCA sensitivity thresholds for signals that do not
91 ///< occupy the primary channel, indexed by signal
92 ///< bandwidth (MHz)
93};
94
95} // namespace ns3
96
97#endif /* VHT_CONFIGURATION_H */
A base class which provides memory management and object aggregation.
Definition: object.h:89
a unique identifier for an interface.
Definition: type-id.h:59
VHT configuration.
std::tuple< double, double, double > SecondaryCcaSensitivityThresholds
Tuple identifying CCA sensitivity thresholds for secondary channels.
void Set160MHzOperationSupported(bool enable)
Enable or disable 160 MHz operation support.
void SetSecondaryCcaSensitivityThresholds(const SecondaryCcaSensitivityThresholds &thresholds)
Sets the CCA sensitivity thresholds for PPDUs that do not occupy the primary channel.
bool Get160MHzOperationSupported() const
bool m_160MHzSupported
whether 160 MHz operation is supported
std::map< uint16_t, double > m_secondaryCcaSensitivityThresholds
CCA sensitivity thresholds for signals that do not occupy the primary channel, indexed by signal band...
SecondaryCcaSensitivityThresholds GetSecondaryCcaSensitivityThresholds() const
static TypeId GetTypeId()
Get the type ID.
const std::map< uint16_t, double > & GetSecondaryCcaSensitivityThresholdsPerBw() const
Every class exported by the ns3 library is enclosed in the ns3 namespace.