diff --git a/examples/wireless/wifi-backward-compatibility.cc b/examples/wireless/wifi-backward-compatibility.cc index e106ec7bb..07db57e23 100644 --- a/examples/wireless/wifi-backward-compatibility.cc +++ b/examples/wireless/wifi-backward-compatibility.cc @@ -150,7 +150,7 @@ main(int argc, char* argv[]) WifiMacHelper mac; WifiHelper wifi; Ssid ssid = Ssid("ns3"); - TupleValue channelValue; + TupleValue, UintegerValue> channelValue; const auto& [staStandard, staBand] = ConvertStringToStandardAndBand(staVersion); wifi.SetStandard(staStandard); diff --git a/examples/wireless/wifi-ht-network.cc b/examples/wireless/wifi-ht-network.cc index ae95111a3..64f135ddc 100644 --- a/examples/wireless/wifi-ht-network.cc +++ b/examples/wireless/wifi-ht-network.cc @@ -177,7 +177,8 @@ main(int argc, char* argv[]) wifi.ConfigHtOptions("ShortGuardIntervalSupported", BooleanValue(sgi)); Ssid ssid = Ssid("ns3-80211n"); - TupleValue channelValue; + TupleValue, UintegerValue> + channelValue; WifiPhyBand band = (frequency == 5.0 ? WIFI_PHY_BAND_5GHZ : WIFI_PHY_BAND_2_4GHZ); channelValue.Set(WifiPhy::ChannelTuple{0, channelWidth, band, 0}); diff --git a/src/buildings/helper/building-allocator.cc b/src/buildings/helper/building-allocator.cc index d671bac35..774004357 100644 --- a/src/buildings/helper/building-allocator.cc +++ b/src/buildings/helper/building-allocator.cc @@ -99,7 +99,8 @@ GridBuildingAllocator::GetTypeId() .AddAttribute("LayoutType", "The type of layout.", EnumValue(GridPositionAllocator::ROW_FIRST), - MakeEnumAccessor(&GridBuildingAllocator::m_layoutType), + MakeEnumAccessor( + &GridBuildingAllocator::m_layoutType), MakeEnumChecker(GridPositionAllocator::ROW_FIRST, "RowFirst", GridPositionAllocator::COLUMN_FIRST, diff --git a/src/buildings/model/building.cc b/src/buildings/model/building.cc index ead9dcd9d..192b262da 100644 --- a/src/buildings/model/building.cc +++ b/src/buildings/model/building.cc @@ -73,7 +73,8 @@ Building::GetTypeId() .AddAttribute("Type", "The type of building", EnumValue(Building::Residential), - MakeEnumAccessor(&Building::GetBuildingType, &Building::SetBuildingType), + MakeEnumAccessor(&Building::GetBuildingType, + &Building::SetBuildingType), MakeEnumChecker(Building::Residential, "Residential", Building::Office, @@ -83,7 +84,8 @@ Building::GetTypeId() .AddAttribute("ExternalWallsType", "The type of material of which the external walls are made", EnumValue(Building::ConcreteWithWindows), - MakeEnumAccessor(&Building::GetExtWallsType, &Building::SetExtWallsType), + MakeEnumAccessor(&Building::GetExtWallsType, + &Building::SetExtWallsType), MakeEnumChecker(Building::Wood, "Wood", Building::ConcreteWithWindows, diff --git a/src/buildings/model/hybrid-buildings-propagation-loss-model.cc b/src/buildings/model/hybrid-buildings-propagation-loss-model.cc index 07fee2842..9cf60b515 100644 --- a/src/buildings/model/hybrid-buildings-propagation-loss-model.cc +++ b/src/buildings/model/hybrid-buildings-propagation-loss-model.cc @@ -83,7 +83,8 @@ HybridBuildingsPropagationLossModel::GetTypeId() .AddAttribute("Environment", "Environment Scenario", EnumValue(UrbanEnvironment), - MakeEnumAccessor(&HybridBuildingsPropagationLossModel::SetEnvironment), + MakeEnumAccessor( + &HybridBuildingsPropagationLossModel::SetEnvironment), MakeEnumChecker(UrbanEnvironment, "Urban", SubUrbanEnvironment, @@ -95,7 +96,7 @@ HybridBuildingsPropagationLossModel::GetTypeId() "CitySize", "Dimension of the city", EnumValue(LargeCity), - MakeEnumAccessor(&HybridBuildingsPropagationLossModel::SetCitySize), + MakeEnumAccessor(&HybridBuildingsPropagationLossModel::SetCitySize), MakeEnumChecker(SmallCity, "Small", MediumCity, "Medium", LargeCity, "Large")) .AddAttribute( diff --git a/src/buildings/model/random-walk-2d-outdoor-mobility-model.cc b/src/buildings/model/random-walk-2d-outdoor-mobility-model.cc index 6a2420653..23e13b832 100644 --- a/src/buildings/model/random-walk-2d-outdoor-mobility-model.cc +++ b/src/buildings/model/random-walk-2d-outdoor-mobility-model.cc @@ -68,7 +68,7 @@ RandomWalk2dOutdoorMobilityModel::GetTypeId() "The mode indicates the condition used to " "change the current speed and direction", EnumValue(RandomWalk2dOutdoorMobilityModel::MODE_DISTANCE), - MakeEnumAccessor(&RandomWalk2dOutdoorMobilityModel::m_mode), + MakeEnumAccessor(&RandomWalk2dOutdoorMobilityModel::m_mode), MakeEnumChecker(RandomWalk2dOutdoorMobilityModel::MODE_DISTANCE, "Distance", RandomWalk2dOutdoorMobilityModel::MODE_TIME, diff --git a/src/config-store/model/config-store.cc b/src/config-store/model/config-store.cc index c81f06708..05a2dec35 100644 --- a/src/config-store/model/config-store.cc +++ b/src/config-store/model/config-store.cc @@ -56,7 +56,7 @@ ConfigStore::GetTypeId() .AddAttribute("Mode", "Configuration mode", EnumValue(ConfigStore::NONE), - MakeEnumAccessor(&ConfigStore::SetMode), + MakeEnumAccessor(&ConfigStore::SetMode), MakeEnumChecker(ConfigStore::NONE, "None", ConfigStore::LOAD, @@ -72,7 +72,7 @@ ConfigStore::GetTypeId() "FileFormat", "Type of file format", EnumValue(ConfigStore::RAW_TEXT), - MakeEnumAccessor(&ConfigStore::SetFileFormat), + MakeEnumAccessor(&ConfigStore::SetFileFormat), MakeEnumChecker(ConfigStore::RAW_TEXT, "RawText", ConfigStore::XML, "Xml")) .AddAttribute("SaveDeprecated", "Save DEPRECATED attributes", diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 2a0e08b0d..52316b704 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -154,7 +154,6 @@ set(source_files model/boolean.cc model/integer.cc model/uinteger.cc - model/enum.cc model/double.cc model/int64x64.cc model/string.cc diff --git a/src/core/model/enum.cc b/src/core/model/enum.cc deleted file mode 100644 index 907c6fa57..000000000 --- a/src/core/model/enum.cc +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2008 INRIA - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Authors: Mathieu Lacage - */ -#include "enum.h" - -#include "fatal-error.h" -#include "log.h" - -#include // find_if -#include // std::accumulate -#include - -/** - * \file - * \ingroup attribute_Enum - * ns3::EnumValue attribute value implementation. - */ - -namespace ns3 -{ - -NS_LOG_COMPONENT_DEFINE("Enum"); - -EnumValue::EnumValue() - : m_value() -{ - NS_LOG_FUNCTION(this); -} - -EnumValue::EnumValue(int value) - : m_value(value) -{ - NS_LOG_FUNCTION(this << value); -} - -void -EnumValue::Set(int value) -{ - NS_LOG_FUNCTION(this << value); - m_value = value; -} - -int -EnumValue::Get() const -{ - NS_LOG_FUNCTION(this); - return m_value; -} - -Ptr -EnumValue::Copy() const -{ - NS_LOG_FUNCTION(this); - return ns3::Create(*this); -} - -std::string -EnumValue::SerializeToString(Ptr checker) const -{ - NS_LOG_FUNCTION(this << checker); - const auto p = dynamic_cast(PeekPointer(checker)); - NS_ASSERT(p != nullptr); - std::string name = p->GetName(m_value); - return name; -} - -bool -EnumValue::DeserializeFromString(std::string value, Ptr checker) -{ - NS_LOG_FUNCTION(this << value << checker); - const auto p = dynamic_cast(PeekPointer(checker)); - NS_ASSERT(p != nullptr); - m_value = p->GetValue(value); - return true; -} - -EnumChecker::EnumChecker() -{ - NS_LOG_FUNCTION(this); -} - -void -EnumChecker::AddDefault(int value, std::string name) -{ - NS_LOG_FUNCTION(this << value << name); - m_valueSet.emplace_front(value, name); -} - -void -EnumChecker::Add(int value, std::string name) -{ - NS_LOG_FUNCTION(this << value << name); - m_valueSet.emplace_back(value, name); -} - -std::string -EnumChecker::GetName(int value) const -{ - auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [value](Value v) { - return v.first == value; - }); - NS_ASSERT_MSG(it != m_valueSet.end(), - "invalid enum value " << value << "! Missed entry in MakeEnumChecker?"); - return it->second; -} - -int -EnumChecker::GetValue(const std::string name) const -{ - auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [name](Value v) { - return v.second == name; - }); - NS_ASSERT_MSG( - it != m_valueSet.end(), - "name " - << name - << " is not a valid enum value. Missed entry in MakeEnumChecker?\nAvailable values: " - << std::accumulate(m_valueSet.begin(), - m_valueSet.end(), - std::string{}, - [](std::string a, Value v) { - if (a.empty()) - { - return v.second; - } - else - { - return std::move(a) + ", " + v.second; - } - })); - return it->first; -} - -bool -EnumChecker::Check(const AttributeValue& value) const -{ - NS_LOG_FUNCTION(this << &value); - const auto p = dynamic_cast(&value); - if (p == nullptr) - { - return false; - } - auto pvalue = p->Get(); - auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [pvalue](Value v) { - return v.first == pvalue; - }); - return (it != m_valueSet.end()); -} - -std::string -EnumChecker::GetValueTypeName() const -{ - NS_LOG_FUNCTION(this); - return "ns3::EnumValue"; -} - -bool -EnumChecker::HasUnderlyingTypeInformation() const -{ - NS_LOG_FUNCTION(this); - return true; -} - -std::string -EnumChecker::GetUnderlyingTypeInformation() const -{ - NS_LOG_FUNCTION(this); - std::ostringstream oss; - bool moreValues = false; - for (const auto& i : m_valueSet) - { - oss << (moreValues ? "|" : "") << i.second; - moreValues = true; - } - return oss.str(); -} - -Ptr -EnumChecker::Create() const -{ - NS_LOG_FUNCTION(this); - return ns3::Create(); -} - -bool -EnumChecker::Copy(const AttributeValue& source, AttributeValue& destination) const -{ - NS_LOG_FUNCTION(this << &source << &destination); - const auto src = dynamic_cast(&source); - auto dst = dynamic_cast(&destination); - if (src == nullptr || dst == nullptr) - { - return false; - } - *dst = *src; - return true; -} - -} // namespace ns3 diff --git a/src/core/model/enum.h b/src/core/model/enum.h index 4a743d4d0..232bf5e32 100644 --- a/src/core/model/enum.h +++ b/src/core/model/enum.h @@ -22,7 +22,12 @@ #include "attribute-accessor-helper.h" #include "attribute.h" +#include // find_if #include +#include // std::accumulate +#include +#include +#include /** * \file @@ -52,6 +57,7 @@ namespace ns3 * EnumValue (RipNg::NO_SPLIT_HORIZON)); * \endcode */ +template class EnumValue : public AttributeValue { public: @@ -61,10 +67,10 @@ class EnumValue : public AttributeValue * * \param [in] value The value to begin with. */ - EnumValue(int value); - void Set(int value); - int Get() const; - template + EnumValue(T value); + void Set(T value); + T Get() const; + bool GetAccessor(T& value) const; Ptr Copy() const override; @@ -72,17 +78,48 @@ class EnumValue : public AttributeValue bool DeserializeFromString(std::string value, Ptr checker) override; private: - int m_value; //!< The stored integer value. + T m_value; //!< The stored value. }; template -bool -EnumValue::GetAccessor(T& value) const +EnumValue::EnumValue() = default; + +template +EnumValue::EnumValue(T value) + : m_value(value) { - value = T(m_value); +} + +template +void +EnumValue::Set(T value) +{ + m_value = value; +} + +template +T +EnumValue::Get() const +{ + return m_value; +} + +template +bool +EnumValue::GetAccessor(T& value) const +{ + value = static_cast(m_value); return true; } +template +Ptr +EnumValue::Copy() const +{ + return Create(*this); +} + +template class EnumChecker : public AttributeChecker { public: @@ -93,27 +130,27 @@ class EnumChecker : public AttributeChecker * \param [in] value The value. * \param [in] name Then enum symbol name. */ - void AddDefault(int value, std::string name); + void AddDefault(T value, std::string name); /** * Add a new value. * \param [in] value The value. * \param [in] name The enum symbol name. */ - void Add(int value, std::string name); + void Add(T value, std::string name); /** * Get the enum symbol name by value. * \param [in] value The value. * \return The enum symbol name. */ - std::string GetName(int value) const; + std::string GetName(T value) const; /** * Get the enum value by name. * \param [in] name Then enum symbol name. * \returns The enum value. */ - int GetValue(const std::string name) const; + T GetValue(const std::string name) const; // Inherited bool Check(const AttributeValue& value) const override; @@ -125,19 +162,13 @@ class EnumChecker : public AttributeChecker private: /** Type for the pair value, name */ - typedef std::pair Value; + using Value = std::pair; /** Type of container for storing Enum values and symbol names. */ - typedef std::list ValueSet; + using ValueSet = std::list; /** The stored Enum values and symbol names. */ ValueSet m_valueSet; }; -template -Ptr MakeEnumAccessor(T1 a1); - -template -Ptr MakeEnumAccessor(T1 a1, T2 a2); - /** * Make an EnumChecker pre-configured with a set of allowed * values by name. @@ -152,17 +183,17 @@ Ptr MakeEnumAccessor(T1 a1, T2 a2); * \see AttributeChecker * * \tparam Ts The type list of additional parameters. Additional parameters - * should be int, string pairs. + * should be T, string pairs. * \returns The AttributeChecker * \param [in] v The default enum value. * \param [in] n The corresponding name. * \param [in] args Any additional arguments. */ -template +template Ptr -MakeEnumChecker(int v, std::string n, Ts... args) +MakeEnumChecker(T v, std::string n, Ts... args) { - Ptr checker = Create(); + Ptr> checker = Create>(); checker->AddDefault(v, n); return MakeEnumChecker(checker, args...); } @@ -171,17 +202,16 @@ MakeEnumChecker(int v, std::string n, Ts... args) * Handler for enum value, name pairs other than the default. * * \tparam Ts The type list of additional parameters. Additional parameters - * should be in int, string pairs. + * should be T, string pairs. * \returns The AttributeChecker * \param [in] checker The AttributeChecker. * \param [in] v The next enum value. * \param [in] n The corresponding name. * \param [in] args Any additional arguments. */ - -template +template Ptr -MakeEnumChecker(Ptr checker, int v, std::string n, Ts... args) +MakeEnumChecker(Ptr> checker, T v, std::string n, Ts... args) { checker->Add(v, n); return MakeEnumChecker(checker, args...); @@ -194,24 +224,173 @@ MakeEnumChecker(Ptr checker, int v, std::string n, Ts... args) * \param [in] checker The AttributeChecker. */ // inline to allow tail call optimization +template inline Ptr -MakeEnumChecker(Ptr checker) +MakeEnumChecker(Ptr> checker) { return checker; } -template +template Ptr MakeEnumAccessor(T1 a1) { - return MakeAccessorHelper(a1); + return MakeAccessorHelper>(a1); } -template +template Ptr MakeEnumAccessor(T1 a1, T2 a2) { - return MakeAccessorHelper(a1, a2); + return MakeAccessorHelper>(a1, a2); +} + +template +std::string +EnumValue::SerializeToString(Ptr checker) const +{ + const auto p = dynamic_cast*>(PeekPointer(checker)); + NS_ASSERT(p != nullptr); + std::string name = p->GetName(m_value); + return name; +} + +template +bool +EnumValue::DeserializeFromString(std::string value, Ptr checker) +{ + const auto p = dynamic_cast*>(PeekPointer(checker)); + NS_ASSERT(p != nullptr); + m_value = p->GetValue(value); + return true; +} + +template +EnumChecker::EnumChecker() +{ +} + +template +void +EnumChecker::AddDefault(T value, std::string name) +{ + m_valueSet.emplace_front(value, name); +} + +template +void +EnumChecker::Add(T value, std::string name) +{ + m_valueSet.emplace_back(value, name); +} + +template +std::string +EnumChecker::GetName(T value) const +{ + auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [value](Value v) { + return v.first == value; + }); + + using type = typename std:: + conditional_t, std::underlying_type, std::type_identity>::type; + NS_ASSERT_MSG(it != m_valueSet.end(), + "invalid enum value " << static_cast(value) + << "! Missed entry in MakeEnumChecker?"); + return it->second; +} + +template +T +EnumChecker::GetValue(const std::string name) const +{ + auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [name](Value v) { + return v.second == name; + }); + NS_ASSERT_MSG( + it != m_valueSet.end(), + "name " + << name + << " is not a valid enum value. Missed entry in MakeEnumChecker?\nAvailable values: " + << std::accumulate(m_valueSet.begin(), + m_valueSet.end(), + std::string{}, + [](std::string a, Value v) { + if (a.empty()) + { + return v.second; + } + else + { + return std::move(a) + ", " + v.second; + } + })); + return it->first; +} + +template +bool +EnumChecker::Check(const AttributeValue& value) const +{ + const auto p = dynamic_cast*>(&value); + if (!p) + { + return false; + } + auto pvalue = p->Get(); + auto it = std::find_if(m_valueSet.begin(), m_valueSet.end(), [pvalue](Value v) { + return v.first == pvalue; + }); + return (it != m_valueSet.end()); +} + +template +std::string +EnumChecker::GetValueTypeName() const +{ + return "ns3::EnumValue<" + std::string(typeid(T).name()) + ">"; +} + +template +bool +EnumChecker::HasUnderlyingTypeInformation() const +{ + return true; +} + +template +std::string +EnumChecker::GetUnderlyingTypeInformation() const +{ + std::ostringstream oss; + bool moreValues = false; + for (const auto& i : m_valueSet) + { + oss << (moreValues ? "|" : "") << i.second; + moreValues = true; + } + return oss.str(); +} + +template +Ptr +EnumChecker::Create() const +{ + return ns3::Create>(); +} + +template +bool +EnumChecker::Copy(const AttributeValue& source, AttributeValue& destination) const +{ + const auto src = dynamic_cast*>(&source); + auto dst = dynamic_cast*>(&destination); + if (!src || !dst) + { + return false; + } + *dst = *src; + return true; } } // namespace ns3 diff --git a/src/core/model/realtime-simulator-impl.cc b/src/core/model/realtime-simulator-impl.cc index f34a7ebe5..526bfa86e 100644 --- a/src/core/model/realtime-simulator-impl.cc +++ b/src/core/model/realtime-simulator-impl.cc @@ -62,7 +62,8 @@ RealtimeSimulatorImpl::GetTypeId() "SynchronizationMode", "What to do if the simulation cannot keep up with real time.", EnumValue(SYNC_BEST_EFFORT), - MakeEnumAccessor(&RealtimeSimulatorImpl::SetSynchronizationMode), + MakeEnumAccessor( + &RealtimeSimulatorImpl::SetSynchronizationMode), MakeEnumChecker(SYNC_BEST_EFFORT, "BestEffort", SYNC_HARD_LIMIT, "HardLimit")) .AddAttribute("HardLimit", "Maximum acceptable real-time jitter (used in conjunction with " diff --git a/src/core/test/attribute-test-suite.cc b/src/core/test/attribute-test-suite.cc index a2f156541..0e0a6d1c3 100644 --- a/src/core/test/attribute-test-suite.cc +++ b/src/core/test/attribute-test-suite.cc @@ -203,13 +203,13 @@ class AttributeObjectTest : public Object .AddAttribute("TestEnum", "help text", EnumValue(TEST_A), - MakeEnumAccessor(&AttributeObjectTest::m_enum), + MakeEnumAccessor(&AttributeObjectTest::m_enum), MakeEnumChecker(TEST_A, "TestA", TEST_B, "TestB", TEST_C, "TestC")) .AddAttribute("TestEnumSetGet", "help text", EnumValue(TEST_B), - MakeEnumAccessor(&AttributeObjectTest::DoSetEnum, - &AttributeObjectTest::DoGetEnum), + MakeEnumAccessor(&AttributeObjectTest::DoSetEnum, + &AttributeObjectTest::DoGetEnum), MakeEnumChecker(TEST_A, "TestA", TEST_B, "TestB", TEST_C, "TestC")) .AddAttribute("TestRandom", "help text", @@ -268,11 +268,12 @@ class AttributeObjectTest : public Object BooleanValue(false), MakeBooleanAccessor(&AttributeObjectTest::m_boolSrc), MakeBooleanChecker()) - .AddAttribute("EnumTraceSource", - "help text", - EnumValue(TEST_A), - MakeEnumAccessor(&AttributeObjectTest::m_enumSrc), - MakeEnumChecker(TEST_A, "TestA")) + .AddAttribute( + "EnumTraceSource", + "help text", + EnumValue(TEST_A), + MakeEnumAccessor>(&AttributeObjectTest::m_enumSrc), + MakeEnumChecker(TEST_A, "TestA")) .AddAttribute("ValueClassSource", "help text", ValueClassTestValue(ValueClassTest()), @@ -950,7 +951,7 @@ AttributeTestCase::DoRun() template <> void -AttributeTestCase::DoRun() +AttributeTestCase>::DoRun() { Ptr p; bool ok; @@ -1981,7 +1982,8 @@ AttributesTestSuite::AttributesTestSuite() TestCase::QUICK); AddTestCase(new AttributeTestCase("Check Attributes of type DoubleValue"), TestCase::QUICK); - AddTestCase(new AttributeTestCase("Check Attributes of type EnumValue"), + AddTestCase(new AttributeTestCase>( + "Check Attributes of type EnumValue"), TestCase::QUICK); AddTestCase(new AttributeTestCase("Check Attributes of type TimeValue"), TestCase::QUICK); diff --git a/src/core/test/tuple-value-test-suite.cc b/src/core/test/tuple-value-test-suite.cc index 3e593e99f..2db327dba 100644 --- a/src/core/test/tuple-value-test-suite.cc +++ b/src/core/test/tuple-value-test-suite.cc @@ -62,8 +62,9 @@ class TupleObject : public Object // NOTE EnumValue::Get() return an int, so the tuple element type must be an int // in place of the enum type - using Tuple1Value = TupleValue; //!< Tuple1 attribute value - using Tuple1 = Tuple1Value::result_type; //!< tuple of values + using Tuple1Value = + TupleValue>; //!< Tuple1 attribute value + using Tuple1 = Tuple1Value::result_type; //!< tuple of values using Tuple1Pack = Tuple1Value::value_type; //!< tuple of attribute values using Tuple2 = std::tuple; //!< Tuple2 typedef @@ -207,7 +208,7 @@ TupleValueTestCase::DoRun() TupleObject::Tuple1{"Norwegian", "Wood", TupleObject::VALUE2})); NS_TEST_ASSERT_MSG_EQ(ret1, true, "Setting valid values to tuple 1 failed"); - TupleValue tupleValue1; + TupleValue> tupleValue1; ret1 = tupleObject->GetAttributeFailSafe("StringStringEnumTuple", tupleValue1); NS_TEST_ASSERT_MSG_EQ(ret1, true, "Getting values for tuple 1 failed"); diff --git a/src/csma/model/csma-net-device.cc b/src/csma/model/csma-net-device.cc index fded5253f..1ce663ab5 100644 --- a/src/csma/model/csma-net-device.cc +++ b/src/csma/model/csma-net-device.cc @@ -62,7 +62,7 @@ CsmaNetDevice::GetTypeId() .AddAttribute("EncapsulationMode", "The link-layer encapsulation type to use.", EnumValue(DIX), - MakeEnumAccessor(&CsmaNetDevice::SetEncapsulationMode), + MakeEnumAccessor(&CsmaNetDevice::SetEncapsulationMode), MakeEnumChecker(DIX, "Dix", LLC, "Llc")) .AddAttribute("SendEnable", "Enable or disable the transmitter section of the device.", diff --git a/src/energy/model/generic-battery-model.cc b/src/energy/model/generic-battery-model.cc index 35e1b5b74..cbf523608 100644 --- a/src/energy/model/generic-battery-model.cc +++ b/src/energy/model/generic-battery-model.cc @@ -104,7 +104,7 @@ GenericBatteryModel::GetTypeId() .AddAttribute("BatteryType", "Indicates the battery type used by the model", EnumValue(LION_LIPO), - MakeEnumAccessor(&GenericBatteryModel::m_batteryType), + MakeEnumAccessor(&GenericBatteryModel::m_batteryType), MakeEnumChecker(LION_LIPO, "LION_LIPO", NIMH_NICD, diff --git a/src/fd-net-device/model/fd-net-device.cc b/src/fd-net-device/model/fd-net-device.cc index 70185637a..b7ef2620e 100644 --- a/src/fd-net-device/model/fd-net-device.cc +++ b/src/fd-net-device/model/fd-net-device.cc @@ -106,7 +106,7 @@ FdNetDevice::GetTypeId() .AddAttribute("EncapsulationMode", "The link-layer encapsulation type to use.", EnumValue(DIX), - MakeEnumAccessor(&FdNetDevice::m_encapMode), + MakeEnumAccessor(&FdNetDevice::m_encapMode), MakeEnumChecker(DIX, "Dix", LLC, "Llc", DIXPI, "DixPi")) .AddAttribute("RxQueueSize", "Maximum size of the read queue. " diff --git a/src/internet-apps/model/ping.cc b/src/internet-apps/model/ping.cc index 05cb2a069..1b2d17e71 100644 --- a/src/internet-apps/model/ping.cc +++ b/src/internet-apps/model/ping.cc @@ -69,7 +69,7 @@ Ping::GetTypeId() .AddAttribute("VerboseMode", "Configure verbose, quiet, or silent output", EnumValue(VerboseMode::VERBOSE), - MakeEnumAccessor(&Ping::m_verbose), + MakeEnumAccessor(&Ping::m_verbose), MakeEnumChecker(VerboseMode::VERBOSE, "Verbose", VerboseMode::QUIET, diff --git a/src/internet/model/rip.cc b/src/internet/model/rip.cc index f6f155764..51c68f1ac 100644 --- a/src/internet/model/rip.cc +++ b/src/internet/model/rip.cc @@ -99,7 +99,7 @@ Rip::GetTypeId() .AddAttribute("SplitHorizon", "Split Horizon strategy.", EnumValue(Rip::POISON_REVERSE), - MakeEnumAccessor(&Rip::m_splitHorizonStrategy), + MakeEnumAccessor(&Rip::m_splitHorizonStrategy), MakeEnumChecker(Rip::NO_SPLIT_HORIZON, "NoSplitHorizon", Rip::SPLIT_HORIZON, diff --git a/src/internet/model/ripng.cc b/src/internet/model/ripng.cc index 7d0e2bedc..87b7c0f24 100644 --- a/src/internet/model/ripng.cc +++ b/src/internet/model/ripng.cc @@ -99,7 +99,7 @@ RipNg::GetTypeId() .AddAttribute("SplitHorizon", "Split Horizon strategy.", EnumValue(RipNg::POISON_REVERSE), - MakeEnumAccessor(&RipNg::m_splitHorizonStrategy), + MakeEnumAccessor(&RipNg::m_splitHorizonStrategy), MakeEnumChecker(RipNg::NO_SPLIT_HORIZON, "NoSplitHorizon", RipNg::SPLIT_HORIZON, diff --git a/src/internet/model/tcp-cubic.cc b/src/internet/model/tcp-cubic.cc index 1928ef1b2..41bf4920f 100644 --- a/src/internet/model/tcp-cubic.cc +++ b/src/internet/model/tcp-cubic.cc @@ -64,7 +64,7 @@ TcpCubic::GetTypeId() "Hybrid Slow Start detection mechanisms:" "packet train, delay, both", EnumValue(HybridSSDetectionMode::BOTH), - MakeEnumAccessor(&TcpCubic::m_hystartDetect), + MakeEnumAccessor(&TcpCubic::m_hystartDetect), MakeEnumChecker(HybridSSDetectionMode::PACKET_TRAIN, "PACKET_TRAIN", HybridSSDetectionMode::DELAY, diff --git a/src/internet/model/tcp-ledbat.cc b/src/internet/model/tcp-ledbat.cc index 41455861b..242926df0 100644 --- a/src/internet/model/tcp-ledbat.cc +++ b/src/internet/model/tcp-ledbat.cc @@ -62,7 +62,7 @@ TcpLedbat::GetTypeId() .AddAttribute("SSParam", "Possibility of Slow Start", EnumValue(DO_SLOWSTART), - MakeEnumAccessor(&TcpLedbat::SetDoSs), + MakeEnumAccessor(&TcpLedbat::SetDoSs), MakeEnumChecker(DO_SLOWSTART, "yes", DO_NOT_SLOWSTART, "no")) .AddAttribute("MinCwnd", "Minimum cWnd for Ledbat", diff --git a/src/internet/model/tcp-prr-recovery.cc b/src/internet/model/tcp-prr-recovery.cc index 8c6dd230e..729765e33 100644 --- a/src/internet/model/tcp-prr-recovery.cc +++ b/src/internet/model/tcp-prr-recovery.cc @@ -35,15 +35,16 @@ NS_OBJECT_ENSURE_REGISTERED(TcpPrrRecovery); TypeId TcpPrrRecovery::GetTypeId() { - static TypeId tid = TypeId("ns3::TcpPrrRecovery") - .SetParent() - .AddConstructor() - .SetGroupName("Internet") - .AddAttribute("ReductionBound", - "Type of Reduction Bound", - EnumValue(SSRB), - MakeEnumAccessor(&TcpPrrRecovery::m_reductionBoundMode), - MakeEnumChecker(CRB, "CRB", SSRB, "SSRB")); + static TypeId tid = + TypeId("ns3::TcpPrrRecovery") + .SetParent() + .AddConstructor() + .SetGroupName("Internet") + .AddAttribute("ReductionBound", + "Type of Reduction Bound", + EnumValue(SSRB), + MakeEnumAccessor(&TcpPrrRecovery::m_reductionBoundMode), + MakeEnumChecker(CRB, "CRB", SSRB, "SSRB")); return tid; } diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index 4fc953ec4..16383e414 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -164,7 +164,7 @@ TcpSocketBase::GetTypeId() .AddAttribute("UseEcn", "Parameter to set ECN functionality", EnumValue(TcpSocketState::Off), - MakeEnumAccessor(&TcpSocketBase::SetUseEcn), + MakeEnumAccessor(&TcpSocketBase::SetUseEcn), MakeEnumChecker(TcpSocketState::Off, "Off", TcpSocketState::On, diff --git a/src/internet/model/tcp-westwood-plus.cc b/src/internet/model/tcp-westwood-plus.cc index 11af7e744..19066bdaa 100644 --- a/src/internet/model/tcp-westwood-plus.cc +++ b/src/internet/model/tcp-westwood-plus.cc @@ -54,7 +54,7 @@ TcpWestwoodPlus::GetTypeId() "FilterType", "Use this to choose no filter or Tustin's approximation filter", EnumValue(TcpWestwoodPlus::TUSTIN), - MakeEnumAccessor(&TcpWestwoodPlus::m_fType), + MakeEnumAccessor(&TcpWestwoodPlus::m_fType), MakeEnumChecker(TcpWestwoodPlus::NONE, "None", TcpWestwoodPlus::TUSTIN, "Tustin")) .AddTraceSource("EstimatedBW", "The estimated bandwidth", diff --git a/src/lr-wpan/model/lr-wpan-net-device.cc b/src/lr-wpan/model/lr-wpan-net-device.cc index 9fe5efd4d..ef799b65a 100644 --- a/src/lr-wpan/model/lr-wpan-net-device.cc +++ b/src/lr-wpan/model/lr-wpan-net-device.cc @@ -68,15 +68,16 @@ LrWpanNetDevice::GetTypeId() BooleanValue(true), MakeBooleanAccessor(&LrWpanNetDevice::m_useAcks), MakeBooleanChecker()) - .AddAttribute("PseudoMacAddressMode", - "Build the pseudo-MAC Address according to RFC 4944 or RFC 6282 " - "(default: RFC 6282).", - EnumValue(LrWpanNetDevice::RFC6282), - MakeEnumAccessor(&LrWpanNetDevice::m_pseudoMacMode), - MakeEnumChecker(LrWpanNetDevice::RFC6282, - "RFC 6282 (don't use PanId)", - LrWpanNetDevice::RFC4944, - "RFC 4944 (use PanId)")); + .AddAttribute( + "PseudoMacAddressMode", + "Build the pseudo-MAC Address according to RFC 4944 or RFC 6282 " + "(default: RFC 6282).", + EnumValue(LrWpanNetDevice::RFC6282), + MakeEnumAccessor(&LrWpanNetDevice::m_pseudoMacMode), + MakeEnumChecker(LrWpanNetDevice::RFC6282, + "RFC 6282 (don't use PanId)", + LrWpanNetDevice::RFC4944, + "RFC 4944 (use PanId)")); return tid; } diff --git a/src/lte/helper/lte-helper.cc b/src/lte/helper/lte-helper.cc index 08f1eb978..ffd427a45 100644 --- a/src/lte/helper/lte-helper.cc +++ b/src/lte/helper/lte-helper.cc @@ -632,7 +632,7 @@ LteHelper::InstallSingleEnbDevice(Ptr n) if (m_epcHelper) { - EnumValue epsBearerToRlcMapping; + EnumValue epsBearerToRlcMapping; rrc->GetAttribute("EpsBearerToRlcMapping", epsBearerToRlcMapping); // it does not make sense to use RLC/SM when also using the EPC if (epsBearerToRlcMapping.Get() == LteEnbRrc::RLC_SM_ALWAYS) diff --git a/src/lte/model/ff-mac-scheduler.cc b/src/lte/model/ff-mac-scheduler.cc index a128ef59f..dd98ac089 100644 --- a/src/lte/model/ff-mac-scheduler.cc +++ b/src/lte/model/ff-mac-scheduler.cc @@ -49,17 +49,18 @@ FfMacScheduler::DoDispose() TypeId FfMacScheduler::GetTypeId() { - static TypeId tid = TypeId("ns3::FfMacScheduler") - .SetParent() - .SetGroupName("Lte") - .AddAttribute("UlCqiFilter", - "The filter to apply on UL CQIs received", - EnumValue(FfMacScheduler::SRS_UL_CQI), - MakeEnumAccessor(&FfMacScheduler::m_ulCqiFilter), - MakeEnumChecker(FfMacScheduler::SRS_UL_CQI, - "SRS_UL_CQI", - FfMacScheduler::PUSCH_UL_CQI, - "PUSCH_UL_CQI")); + static TypeId tid = + TypeId("ns3::FfMacScheduler") + .SetParent() + .SetGroupName("Lte") + .AddAttribute("UlCqiFilter", + "The filter to apply on UL CQIs received", + EnumValue(FfMacScheduler::SRS_UL_CQI), + MakeEnumAccessor(&FfMacScheduler::m_ulCqiFilter), + MakeEnumChecker(FfMacScheduler::SRS_UL_CQI, + "SRS_UL_CQI", + FfMacScheduler::PUSCH_UL_CQI, + "PUSCH_UL_CQI")); return tid; } diff --git a/src/lte/model/lte-amc.cc b/src/lte/model/lte-amc.cc index 4c560a65b..13ddc8cd1 100644 --- a/src/lte/model/lte-amc.cc +++ b/src/lte/model/lte-amc.cc @@ -481,7 +481,7 @@ LteAmc::GetTypeId() "AmcModel", "AMC model used to assign CQI", EnumValue(LteAmc::MiErrorModel), - MakeEnumAccessor(&LteAmc::m_amcModel), + MakeEnumAccessor(&LteAmc::m_amcModel), MakeEnumChecker(LteAmc::MiErrorModel, "Vienna", LteAmc::PiroEW2010, "PiroEW2010")); return tid; } diff --git a/src/lte/model/lte-enb-rrc.cc b/src/lte/model/lte-enb-rrc.cc index 7c632c40e..15df4becb 100644 --- a/src/lte/model/lte-enb-rrc.cc +++ b/src/lte/model/lte-enb-rrc.cc @@ -1940,18 +1940,19 @@ LteEnbRrc::GetTypeId() UintegerValue(0), // default tx-mode MakeUintegerAccessor(&LteEnbRrc::m_defaultTransmissionMode), MakeUintegerChecker()) - .AddAttribute("EpsBearerToRlcMapping", - "Specify which type of RLC will be used for each type of EPS bearer.", - EnumValue(RLC_SM_ALWAYS), - MakeEnumAccessor(&LteEnbRrc::m_epsBearerToRlcMapping), - MakeEnumChecker(RLC_SM_ALWAYS, - "RlcSmAlways", - RLC_UM_ALWAYS, - "RlcUmAlways", - RLC_AM_ALWAYS, - "RlcAmAlways", - PER_BASED, - "PacketErrorRateBased")) + .AddAttribute( + "EpsBearerToRlcMapping", + "Specify which type of RLC will be used for each type of EPS bearer.", + EnumValue(RLC_SM_ALWAYS), + MakeEnumAccessor(&LteEnbRrc::m_epsBearerToRlcMapping), + MakeEnumChecker(RLC_SM_ALWAYS, + "RlcSmAlways", + RLC_UM_ALWAYS, + "RlcUmAlways", + RLC_AM_ALWAYS, + "RlcAmAlways", + PER_BASED, + "PacketErrorRateBased")) .AddAttribute("SystemInformationPeriodicity", "The interval for sending system information (Time value)", TimeValue(MilliSeconds(80)), diff --git a/src/lte/test/lte-simple-helper.cc b/src/lte/test/lte-simple-helper.cc index e7964a2f9..ebef96cbb 100644 --- a/src/lte/test/lte-simple-helper.cc +++ b/src/lte/test/lte-simple-helper.cc @@ -67,7 +67,8 @@ LteSimpleHelper::GetTypeId() .AddAttribute("RlcEntity", "Specify which type of RLC will be used. ", EnumValue(RLC_UM), - MakeEnumAccessor(&LteSimpleHelper::m_lteRlcEntityType), + MakeEnumAccessor( + &LteSimpleHelper::m_lteRlcEntityType), MakeEnumChecker(RLC_UM, "RlcUm", RLC_AM, "RlcAm")); return tid; } diff --git a/src/mobility/model/position-allocator.cc b/src/mobility/model/position-allocator.cc index a4952f661..cd88f59e8 100644 --- a/src/mobility/model/position-allocator.cc +++ b/src/mobility/model/position-allocator.cc @@ -185,7 +185,7 @@ GridPositionAllocator::GetTypeId() .AddAttribute("LayoutType", "The type of layout.", EnumValue(ROW_FIRST), - MakeEnumAccessor(&GridPositionAllocator::m_layoutType), + MakeEnumAccessor(&GridPositionAllocator::m_layoutType), MakeEnumChecker(ROW_FIRST, "RowFirst", COLUMN_FIRST, "ColumnFirst")); return tid; } diff --git a/src/mobility/model/random-walk-2d-mobility-model.cc b/src/mobility/model/random-walk-2d-mobility-model.cc index 236c3d379..9f21e7700 100644 --- a/src/mobility/model/random-walk-2d-mobility-model.cc +++ b/src/mobility/model/random-walk-2d-mobility-model.cc @@ -61,7 +61,8 @@ RandomWalk2dMobilityModel::GetTypeId() "The mode indicates the condition used to " "change the current speed and direction", EnumValue(RandomWalk2dMobilityModel::MODE_DISTANCE), - MakeEnumAccessor(&RandomWalk2dMobilityModel::m_mode), + MakeEnumAccessor( + &RandomWalk2dMobilityModel::m_mode), MakeEnumChecker(RandomWalk2dMobilityModel::MODE_DISTANCE, "Distance", RandomWalk2dMobilityModel::MODE_TIME, diff --git a/src/network/utils/error-model.cc b/src/network/utils/error-model.cc index 0a9c48bc1..74dbc633e 100644 --- a/src/network/utils/error-model.cc +++ b/src/network/utils/error-model.cc @@ -160,7 +160,7 @@ RateErrorModel::GetTypeId() .AddAttribute("ErrorUnit", "The error unit", EnumValue(ERROR_UNIT_BYTE), - MakeEnumAccessor(&RateErrorModel::m_unit), + MakeEnumAccessor(&RateErrorModel::m_unit), MakeEnumChecker(ERROR_UNIT_BIT, "ERROR_UNIT_BIT", ERROR_UNIT_BYTE, diff --git a/src/olsr/model/olsr-routing-protocol.cc b/src/olsr/model/olsr-routing-protocol.cc index 08efc7320..9272b83cf 100644 --- a/src/olsr/model/olsr-routing-protocol.cc +++ b/src/olsr/model/olsr-routing-protocol.cc @@ -226,7 +226,7 @@ RoutingProtocol::GetTypeId() .AddAttribute("Willingness", "Willingness of a node to carry and forward traffic for other nodes.", EnumValue(Willingness::DEFAULT), - MakeEnumAccessor(&RoutingProtocol::m_willingness), + MakeEnumAccessor(&RoutingProtocol::m_willingness), MakeEnumChecker(Willingness::NEVER, "never", Willingness::LOW, diff --git a/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc b/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc index 416cb573a..1f4e2c6d6 100644 --- a/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc +++ b/src/propagation/model/itu-r-1411-nlos-over-rooftop-propagation-loss-model.cc @@ -48,22 +48,23 @@ ItuR1411NlosOverRooftopPropagationLossModel::GetTypeId() DoubleValue(2160e6), MakeDoubleAccessor(&ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency), MakeDoubleChecker()) - .AddAttribute( - "Environment", - "Environment Scenario", - EnumValue(UrbanEnvironment), - MakeEnumAccessor(&ItuR1411NlosOverRooftopPropagationLossModel::m_environment), - MakeEnumChecker(UrbanEnvironment, - "Urban", - SubUrbanEnvironment, - "SubUrban", - OpenAreasEnvironment, - "OpenAreas")) + .AddAttribute("Environment", + "Environment Scenario", + EnumValue(UrbanEnvironment), + MakeEnumAccessor( + &ItuR1411NlosOverRooftopPropagationLossModel::m_environment), + MakeEnumChecker(UrbanEnvironment, + "Urban", + SubUrbanEnvironment, + "SubUrban", + OpenAreasEnvironment, + "OpenAreas")) .AddAttribute( "CitySize", "Dimension of the city", EnumValue(LargeCity), - MakeEnumAccessor(&ItuR1411NlosOverRooftopPropagationLossModel::m_citySize), + MakeEnumAccessor( + &ItuR1411NlosOverRooftopPropagationLossModel::m_citySize), MakeEnumChecker(SmallCity, "Small", MediumCity, "Medium", LargeCity, "Large")) .AddAttribute( "RooftopLevel", diff --git a/src/propagation/model/okumura-hata-propagation-loss-model.cc b/src/propagation/model/okumura-hata-propagation-loss-model.cc index 94be7b7d0..2d01330c9 100644 --- a/src/propagation/model/okumura-hata-propagation-loss-model.cc +++ b/src/propagation/model/okumura-hata-propagation-loss-model.cc @@ -48,21 +48,22 @@ OkumuraHataPropagationLossModel::GetTypeId() DoubleValue(2160e6), MakeDoubleAccessor(&OkumuraHataPropagationLossModel::m_frequency), MakeDoubleChecker()) - .AddAttribute("Environment", - "Environment Scenario", - EnumValue(UrbanEnvironment), - MakeEnumAccessor(&OkumuraHataPropagationLossModel::m_environment), - MakeEnumChecker(UrbanEnvironment, - "Urban", - SubUrbanEnvironment, - "SubUrban", - OpenAreasEnvironment, - "OpenAreas")) + .AddAttribute( + "Environment", + "Environment Scenario", + EnumValue(UrbanEnvironment), + MakeEnumAccessor(&OkumuraHataPropagationLossModel::m_environment), + MakeEnumChecker(UrbanEnvironment, + "Urban", + SubUrbanEnvironment, + "SubUrban", + OpenAreasEnvironment, + "OpenAreas")) .AddAttribute( "CitySize", "Dimension of the city", EnumValue(LargeCity), - MakeEnumAccessor(&OkumuraHataPropagationLossModel::m_citySize), + MakeEnumAccessor(&OkumuraHataPropagationLossModel::m_citySize), MakeEnumChecker(SmallCity, "Small", MediumCity, "Medium", LargeCity, "Large")); return tid; } diff --git a/src/propagation/model/probabilistic-v2v-channel-condition-model.cc b/src/propagation/model/probabilistic-v2v-channel-condition-model.cc index b2a23a8ac..e838f7be6 100644 --- a/src/propagation/model/probabilistic-v2v-channel-condition-model.cc +++ b/src/propagation/model/probabilistic-v2v-channel-condition-model.cc @@ -38,18 +38,18 @@ ProbabilisticV2vUrbanChannelConditionModel::GetTypeId() .SetParent() .SetGroupName("Propagation") .AddConstructor() - .AddAttribute( - "Density", - "Specifies the density of the vehicles in the scenario." - "It can be set to Low, Medium or High.", - EnumValue(VehicleDensity::LOW), - MakeEnumAccessor(&ProbabilisticV2vUrbanChannelConditionModel::m_densityUrban), - MakeEnumChecker(VehicleDensity::LOW, - "Low", - VehicleDensity::MEDIUM, - "Medium", - VehicleDensity::HIGH, - "High")); + .AddAttribute("Density", + "Specifies the density of the vehicles in the scenario." + "It can be set to Low, Medium or High.", + EnumValue(VehicleDensity::LOW), + MakeEnumAccessor( + &ProbabilisticV2vUrbanChannelConditionModel::m_densityUrban), + MakeEnumChecker(VehicleDensity::LOW, + "Low", + VehicleDensity::MEDIUM, + "Medium", + VehicleDensity::HIGH, + "High")); return tid; } @@ -141,18 +141,18 @@ ProbabilisticV2vHighwayChannelConditionModel::GetTypeId() .SetParent() .SetGroupName("Propagation") .AddConstructor() - .AddAttribute( - "Density", - "Specifies the density of the vehicles in the scenario." - "It can be set to Low, Medium or High.", - EnumValue(VehicleDensity::LOW), - MakeEnumAccessor(&ProbabilisticV2vHighwayChannelConditionModel::m_densityHighway), - MakeEnumChecker(VehicleDensity::LOW, - "Low", - VehicleDensity::MEDIUM, - "Medium", - VehicleDensity::HIGH, - "High")); + .AddAttribute("Density", + "Specifies the density of the vehicles in the scenario." + "It can be set to Low, Medium or High.", + EnumValue(VehicleDensity::LOW), + MakeEnumAccessor( + &ProbabilisticV2vHighwayChannelConditionModel::m_densityHighway), + MakeEnumChecker(VehicleDensity::LOW, + "Low", + VehicleDensity::MEDIUM, + "Medium", + VehicleDensity::HIGH, + "High")); return tid; } diff --git a/src/spectrum/model/tv-spectrum-transmitter.cc b/src/spectrum/model/tv-spectrum-transmitter.cc index 53ab65cde..87547609d 100644 --- a/src/spectrum/model/tv-spectrum-transmitter.cc +++ b/src/spectrum/model/tv-spectrum-transmitter.cc @@ -74,16 +74,17 @@ TvSpectrumTransmitter::GetTypeId() .SetParent() .SetGroupName("Spectrum") .AddConstructor() - .AddAttribute("TvType", - "The type of TV transmitter/modulation to be used.", - EnumValue(TvSpectrumTransmitter::TVTYPE_8VSB), - MakeEnumAccessor(&TvSpectrumTransmitter::m_tvType), - MakeEnumChecker(TvSpectrumTransmitter::TVTYPE_8VSB, - "8vsb", - TvSpectrumTransmitter::TVTYPE_COFDM, - "cofdm", - TvSpectrumTransmitter::TVTYPE_ANALOG, - "analog")) + .AddAttribute( + "TvType", + "The type of TV transmitter/modulation to be used.", + EnumValue(TvSpectrumTransmitter::TVTYPE_8VSB), + MakeEnumAccessor(&TvSpectrumTransmitter::m_tvType), + MakeEnumChecker(TvSpectrumTransmitter::TVTYPE_8VSB, + "8vsb", + TvSpectrumTransmitter::TVTYPE_COFDM, + "cofdm", + TvSpectrumTransmitter::TVTYPE_ANALOG, + "analog")) .AddAttribute("StartFrequency", "The lower end frequency (in Hz) of the TV transmitter's " "signal. Must be greater than or equal to 0.", diff --git a/src/tap-bridge/model/tap-bridge.cc b/src/tap-bridge/model/tap-bridge.cc index 3c711af7f..ae56de056 100644 --- a/src/tap-bridge/model/tap-bridge.cc +++ b/src/tap-bridge/model/tap-bridge.cc @@ -135,7 +135,7 @@ TapBridge::GetTypeId() .AddAttribute("Mode", "The operating and configuration mode to use.", EnumValue(USE_LOCAL), - MakeEnumAccessor(&TapBridge::SetMode), + MakeEnumAccessor(&TapBridge::SetMode), MakeEnumChecker(CONFIGURE_LOCAL, "ConfigureLocal", USE_LOCAL, diff --git a/src/wifi/examples/wifi-manager-example.cc b/src/wifi/examples/wifi-manager-example.cc index 81903100f..e5d289e71 100644 --- a/src/wifi/examples/wifi-manager-example.cc +++ b/src/wifi/examples/wifi-manager-example.cc @@ -635,7 +635,7 @@ main(int argc, char* argv[]) NetDeviceContainer serverDevice; NetDeviceContainer clientDevice; - TupleValue channelValue; + TupleValue, UintegerValue> channelValue; WifiMacHelper wifiMac; if (infrastructure) diff --git a/src/wifi/examples/wifi-test-interference-helper.cc b/src/wifi/examples/wifi-test-interference-helper.cc index 3c6231135..930f1e78b 100644 --- a/src/wifi/examples/wifi-test-interference-helper.cc +++ b/src/wifi/examples/wifi-test-interference-helper.cc @@ -287,10 +287,10 @@ InterferenceExperiment::Run(InterferenceExperiment::Input input) devRx->SetPhy(rx); nodeRx->AddDevice(devRx); - m_txA->SetOperatingChannel(WifiPhy::ChannelTuple{input.channelA, 0, (int)(input.band), 0}); - m_txB->SetOperatingChannel(WifiPhy::ChannelTuple{input.channelB, 0, (int)(input.band), 0}); + m_txA->SetOperatingChannel(WifiPhy::ChannelTuple{input.channelA, 0, input.band, 0}); + m_txB->SetOperatingChannel(WifiPhy::ChannelTuple{input.channelB, 0, input.band, 0}); rx->SetOperatingChannel( - WifiPhy::ChannelTuple{std::max(input.channelA, input.channelB), 0, (int)(input.band), 0}); + WifiPhy::ChannelTuple{std::max(input.channelA, input.channelB), 0, input.band, 0}); rx->TraceConnectWithoutContext("PhyRxDrop", MakeCallback(&InterferenceExperiment::PacketDropped, this)); diff --git a/src/wifi/model/ap-wifi-mac.cc b/src/wifi/model/ap-wifi-mac.cc index 7051b2bec..6f17764a8 100644 --- a/src/wifi/model/ap-wifi-mac.cc +++ b/src/wifi/model/ap-wifi-mac.cc @@ -719,7 +719,7 @@ ApWifiMac::GetMultiLinkElement(uint8_t linkId, WifiMacType frameType, const Mac4 mldCapabilities.emplace(); mldCapabilities->maxNSimultaneousLinks = GetNLinks() - 1; // assuming STR for now mldCapabilities->srsSupport = 0; - EnumValue negSupport; + EnumValue negSupport; ehtConfiguration->GetAttributeFailSafe("TidToLinkMappingNegSupport", negSupport); mldCapabilities->tidToLinkMappingSupport = negSupport.Get(); mldCapabilities->freqSepForStrApMld = 0; // not supported yet @@ -1978,7 +1978,7 @@ ApWifiMac::ReceiveAssocRequest(const AssocReqRefVariant& assoc, return failure("Incorrect directions in TID-to-Link Mapping IEs"); } - EnumValue negSupport; + EnumValue negSupport; ehtConfig->GetAttributeFailSafe("TidToLinkMappingNegSupport", negSupport); if (negSupport.Get() == 0) diff --git a/src/wifi/model/eht/eht-configuration.cc b/src/wifi/model/eht/eht-configuration.cc index 7689be450..c098e530e 100644 --- a/src/wifi/model/eht/eht-configuration.cc +++ b/src/wifi/model/eht/eht-configuration.cc @@ -98,7 +98,8 @@ EhtConfiguration::GetTypeId() "TidToLinkMappingNegSupport", "TID-to-Link Mapping Negotiation Support.", EnumValue(WifiTidToLinkMappingNegSupport::WIFI_TID_TO_LINK_MAPPING_ANY_LINK_SET), - MakeEnumAccessor(&EhtConfiguration::m_tidLinkMappingSupport), + MakeEnumAccessor( + &EhtConfiguration::m_tidLinkMappingSupport), MakeEnumChecker( WifiTidToLinkMappingNegSupport::WIFI_TID_TO_LINK_MAPPING_NOT_SUPPORTED, "NOT_SUPPORTED", diff --git a/src/wifi/model/eht/emlsr-manager.cc b/src/wifi/model/eht/emlsr-manager.cc index 525069b25..ab14fca43 100644 --- a/src/wifi/model/eht/emlsr-manager.cc +++ b/src/wifi/model/eht/emlsr-manager.cc @@ -80,7 +80,7 @@ EmlsrManager::GetTypeId() TypeId::ATTR_GET | TypeId::ATTR_CONSTRUCT, // prevent setting after construction EnumValue(WIFI_MOD_CLASS_OFDM), - MakeEnumAccessor(&EmlsrManager::m_auxPhyMaxModClass), + MakeEnumAccessor(&EmlsrManager::m_auxPhyMaxModClass), MakeEnumChecker(WIFI_MOD_CLASS_HR_DSSS, "HR-DSSS", WIFI_MOD_CLASS_ERP_OFDM, diff --git a/src/wifi/model/fcfs-wifi-queue-scheduler.cc b/src/wifi/model/fcfs-wifi-queue-scheduler.cc index ef255f430..d20d85ebb 100644 --- a/src/wifi/model/fcfs-wifi-queue-scheduler.cc +++ b/src/wifi/model/fcfs-wifi-queue-scheduler.cc @@ -66,19 +66,20 @@ NS_OBJECT_ENSURE_REGISTERED(FcfsWifiQueueScheduler); TypeId FcfsWifiQueueScheduler::GetTypeId() { - static TypeId tid = TypeId("ns3::FcfsWifiQueueScheduler") - .SetParent>() - .SetGroupName("Wifi") - .AddConstructor() - .AddAttribute("DropPolicy", - "Upon enqueue with full queue, drop oldest (DropOldest) " - "or newest (DropNewest) packet", - EnumValue(DROP_NEWEST), - MakeEnumAccessor(&FcfsWifiQueueScheduler::m_dropPolicy), - MakeEnumChecker(FcfsWifiQueueScheduler::DROP_OLDEST, - "DropOldest", - FcfsWifiQueueScheduler::DROP_NEWEST, - "DropNewest")); + static TypeId tid = + TypeId("ns3::FcfsWifiQueueScheduler") + .SetParent>() + .SetGroupName("Wifi") + .AddConstructor() + .AddAttribute("DropPolicy", + "Upon enqueue with full queue, drop oldest (DropOldest) " + "or newest (DropNewest) packet", + EnumValue(DROP_NEWEST), + MakeEnumAccessor(&FcfsWifiQueueScheduler::m_dropPolicy), + MakeEnumChecker(FcfsWifiQueueScheduler::DROP_OLDEST, + "DropOldest", + FcfsWifiQueueScheduler::DROP_NEWEST, + "DropNewest")); return tid; } diff --git a/src/wifi/model/he/multi-user-scheduler.cc b/src/wifi/model/he/multi-user-scheduler.cc index 6b782e26d..3782ce3c3 100644 --- a/src/wifi/model/he/multi-user-scheduler.cc +++ b/src/wifi/model/he/multi-user-scheduler.cc @@ -57,7 +57,7 @@ MultiUserScheduler::GetTypeId() "The Access Category for which the MultiUserScheduler makes requests " "for channel access.", EnumValue(AcIndex::AC_BE), - MakeEnumAccessor(&MultiUserScheduler::m_accessReqAc), + MakeEnumAccessor(&MultiUserScheduler::m_accessReqAc), MakeEnumChecker(AcIndex::AC_BE, "AC_BE", AcIndex::AC_VI, diff --git a/src/wifi/model/sta-wifi-mac.cc b/src/wifi/model/sta-wifi-mac.cc index 7cc5371fc..f6d578b40 100644 --- a/src/wifi/model/sta-wifi-mac.cc +++ b/src/wifi/model/sta-wifi-mac.cc @@ -481,7 +481,7 @@ StaWifiMac::GetMultiLinkElement(bool isReassoc, uint8_t linkId) const auto ehtConfiguration = GetEhtConfiguration(); NS_ASSERT(ehtConfiguration); - EnumValue negSupport; + EnumValue negSupport; ehtConfiguration->GetAttributeFailSafe("TidToLinkMappingNegSupport", negSupport); mldCapabilities->tidToLinkMappingSupport = negSupport.Get(); @@ -529,7 +529,7 @@ StaWifiMac::GetTidToLinkMappingElements(uint8_t apNegSupport) auto ehtConfig = GetEhtConfiguration(); NS_ASSERT(ehtConfig); - EnumValue negSupport; + EnumValue negSupport; ehtConfig->GetAttributeFailSafe("TidToLinkMappingNegSupport", negSupport); NS_ABORT_MSG_IF(negSupport.Get() == 0, diff --git a/src/wifi/model/wifi-assoc-manager.cc b/src/wifi/model/wifi-assoc-manager.cc index 33991431c..bf89585d5 100644 --- a/src/wifi/model/wifi-assoc-manager.cc +++ b/src/wifi/model/wifi-assoc-manager.cc @@ -305,7 +305,7 @@ WifiAssocManager::CanSetupMultiLink(OptMleConstRef& mle, OptRnrConstRef& rnr) { auto ehtConfig = m_mac->GetEhtConfiguration(); NS_ASSERT(ehtConfig); - EnumValue negSupport; + EnumValue negSupport; ehtConfig->GetAttributeFailSafe("TidToLinkMappingNegSupport", negSupport); // A non-AP MLD that performs multi-link (re)setup on at least two links with an AP MLD diff --git a/src/wifi/model/wifi-default-ack-manager.cc b/src/wifi/model/wifi-default-ack-manager.cc index 0e27d77f7..507f935e8 100644 --- a/src/wifi/model/wifi-default-ack-manager.cc +++ b/src/wifi/model/wifi-default-ack-manager.cc @@ -60,16 +60,17 @@ WifiDefaultAckManager::GetTypeId() DoubleValue(0.0), MakeDoubleAccessor(&WifiDefaultAckManager::m_baThreshold), MakeDoubleChecker(0.0, 1.0)) - .AddAttribute("DlMuAckSequenceType", - "Type of the acknowledgment sequence for DL MU PPDUs.", - EnumValue(WifiAcknowledgment::DL_MU_BAR_BA_SEQUENCE), - MakeEnumAccessor(&WifiDefaultAckManager::m_dlMuAckType), - MakeEnumChecker(WifiAcknowledgment::DL_MU_BAR_BA_SEQUENCE, - "DL_MU_BAR_BA_SEQUENCE", - WifiAcknowledgment::DL_MU_TF_MU_BAR, - "DL_MU_TF_MU_BAR", - WifiAcknowledgment::DL_MU_AGGREGATE_TF, - "DL_MU_AGGREGATE_TF")) + .AddAttribute( + "DlMuAckSequenceType", + "Type of the acknowledgment sequence for DL MU PPDUs.", + EnumValue(WifiAcknowledgment::DL_MU_BAR_BA_SEQUENCE), + MakeEnumAccessor(&WifiDefaultAckManager::m_dlMuAckType), + MakeEnumChecker(WifiAcknowledgment::DL_MU_BAR_BA_SEQUENCE, + "DL_MU_BAR_BA_SEQUENCE", + WifiAcknowledgment::DL_MU_TF_MU_BAR, + "DL_MU_TF_MU_BAR", + WifiAcknowledgment::DL_MU_AGGREGATE_TF, + "DL_MU_AGGREGATE_TF")) .AddAttribute("MaxBlockAckMcs", "The MCS used to send a BlockAck in a TB PPDU is the minimum between " "the MCS used for the PSDU sent in the preceding DL MU PPDU and the " diff --git a/src/wifi/model/wifi-phy.cc b/src/wifi/model/wifi-phy.cc index df8f719c9..562296096 100644 --- a/src/wifi/model/wifi-phy.cc +++ b/src/wifi/model/wifi-phy.cc @@ -88,9 +88,15 @@ WifiPhy::GetTypeId() "Note that the channel width can be left unspecified (0) if the channel " "number uniquely identify a frequency channel for the given standard and band.", StringValue("{0, 0, BAND_UNSPECIFIED, 0}"), - MakeTupleAccessor( - (void(WifiPhy::*)(const ChannelTuple&)) & WifiPhy::SetOperatingChannel), - MakeTupleChecker( + MakeTupleAccessor, + UintegerValue>((void(WifiPhy::*)(const ChannelTuple&)) & + WifiPhy::SetOperatingChannel), + MakeTupleChecker, + UintegerValue>( MakeUintegerChecker(0, 233), MakeUintegerChecker(0, 160), MakeEnumChecker(WifiPhyBand::WIFI_PHY_BAND_2_4GHZ, @@ -1175,9 +1181,9 @@ WifiPhy::DoChannelSwitch() // Update unspecified parameters with default values { auto& [number, width, band, primary20] = m_channelSettings; - if (band == static_cast(WIFI_PHY_BAND_UNSPECIFIED)) + if (band == WIFI_PHY_BAND_UNSPECIFIED) { - band = static_cast(GetDefaultPhyBand(m_standard)); + band = GetDefaultPhyBand(m_standard); } if (width == 0 && number == 0) { diff --git a/src/wifi/model/wifi-phy.h b/src/wifi/model/wifi-phy.h index d284d9424..4b433a09c 100644 --- a/src/wifi/model/wifi-phy.h +++ b/src/wifi/model/wifi-phy.h @@ -887,7 +887,7 @@ class WifiPhy : public Object using ChannelTuple = std::tuple; //!< Tuple identifying an operating channel /** diff --git a/src/wifi/model/wifi-remote-station-manager.cc b/src/wifi/model/wifi-remote-station-manager.cc index 1139658bf..c5a8687cc 100644 --- a/src/wifi/model/wifi-remote-station-manager.cc +++ b/src/wifi/model/wifi-remote-station-manager.cc @@ -100,7 +100,8 @@ WifiRemoteStationManager::GetTypeId() "Protection mode used when non-ERP STAs are connected to an ERP AP: " "Rts-Cts or Cts-To-Self", EnumValue(WifiRemoteStationManager::CTS_TO_SELF), - MakeEnumAccessor(&WifiRemoteStationManager::m_erpProtectionMode), + MakeEnumAccessor( + &WifiRemoteStationManager::m_erpProtectionMode), MakeEnumChecker(WifiRemoteStationManager::RTS_CTS, "Rts-Cts", WifiRemoteStationManager::CTS_TO_SELF, @@ -109,7 +110,8 @@ WifiRemoteStationManager::GetTypeId() "Protection mode used when non-HT STAs are connected to a HT AP: Rts-Cts " "or Cts-To-Self", EnumValue(WifiRemoteStationManager::CTS_TO_SELF), - MakeEnumAccessor(&WifiRemoteStationManager::m_htProtectionMode), + MakeEnumAccessor( + &WifiRemoteStationManager::m_htProtectionMode), MakeEnumChecker(WifiRemoteStationManager::RTS_CTS, "Rts-Cts", WifiRemoteStationManager::CTS_TO_SELF, diff --git a/src/wifi/test/spectrum-wifi-phy-test.cc b/src/wifi/test/spectrum-wifi-phy-test.cc index e99bdea7c..6fae560bc 100644 --- a/src/wifi/test/spectrum-wifi-phy-test.cc +++ b/src/wifi/test/spectrum-wifi-phy-test.cc @@ -635,7 +635,7 @@ SpectrumWifiPhyFilterTest::RunOne() WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ)); m_txPhy->SetOperatingChannel( - WifiPhy::ChannelTuple{txChannelNum, m_txChannelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{txChannelNum, m_txChannelWidth, WIFI_PHY_BAND_5GHZ, 0}); uint16_t rxFrequency; switch (m_rxChannelWidth) @@ -660,7 +660,7 @@ SpectrumWifiPhyFilterTest::RunOne() WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ)); m_rxPhy->SetOperatingChannel( - WifiPhy::ChannelTuple{rxChannelNum, m_rxChannelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{rxChannelNum, m_rxChannelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_ruBands.clear(); for (uint16_t bw = 160; bw >= 20; bw = bw / 2) diff --git a/src/wifi/test/wifi-mac-ofdma-test.cc b/src/wifi/test/wifi-mac-ofdma-test.cc index 0deef55af..9c9748f49 100644 --- a/src/wifi/test/wifi-mac-ofdma-test.cc +++ b/src/wifi/test/wifi-mac-ofdma-test.cc @@ -100,11 +100,12 @@ TestMultiUserScheduler::GetTypeId() .SetParent() .SetGroupName("Wifi") .AddConstructor() - .AddAttribute("ModulationClass", - "Modulation class for DL MU PPDUs and TB PPDUs.", - EnumValue(WIFI_MOD_CLASS_HE), - MakeEnumAccessor(&TestMultiUserScheduler::m_modClass), - MakeEnumChecker(WIFI_MOD_CLASS_HE, "HE", WIFI_MOD_CLASS_EHT, "EHT")); + .AddAttribute( + "ModulationClass", + "Modulation class for DL MU PPDUs and TB PPDUs.", + EnumValue(WIFI_MOD_CLASS_HE), + MakeEnumAccessor(&TestMultiUserScheduler::m_modClass), + MakeEnumChecker(WIFI_MOD_CLASS_HE, "HE", WIFI_MOD_CLASS_EHT, "EHT")); return tid; } diff --git a/src/wifi/test/wifi-mlo-test.cc b/src/wifi/test/wifi-mlo-test.cc index d7ee603c1..72c2d0e74 100644 --- a/src/wifi/test/wifi-mlo-test.cc +++ b/src/wifi/test/wifi-mlo-test.cc @@ -932,12 +932,14 @@ MultiLinkSetupTest::DoSetup() MultiLinkOperationsTestBase::DoSetup(); m_staMacs[0]->SetAttribute("ActiveProbing", BooleanValue(m_scanType == WifiScanType::ACTIVE)); - m_apMac->GetEhtConfiguration()->SetAttribute("TidToLinkMappingNegSupport", - EnumValue(m_apNegSupport)); + m_apMac->GetEhtConfiguration()->SetAttribute( + "TidToLinkMappingNegSupport", + EnumValue(static_cast(m_apNegSupport))); // For non-AP MLD, it does not make sense to set the negotiation type to 0 (unless the AP MLD // also advertises 0) or 1 (the AP MLD is discarded if it advertises a support of 3) auto staEhtConfig = m_staMacs[0]->GetEhtConfiguration(); - staEhtConfig->SetAttribute("TidToLinkMappingNegSupport", EnumValue(3)); + staEhtConfig->SetAttribute("TidToLinkMappingNegSupport", + EnumValue(WIFI_TID_TO_LINK_MAPPING_ANY_LINK_SET)); staEhtConfig->SetAttribute("TidToLinkMappingDl", StringValue(m_dlTidLinkMappingStr)); staEhtConfig->SetAttribute("TidToLinkMappingUl", StringValue(m_ulTidLinkMappingStr)); diff --git a/src/wifi/test/wifi-phy-ofdma-test.cc b/src/wifi/test/wifi-phy-ofdma-test.cc index 5757b41b3..5a02fbafe 100644 --- a/src/wifi/test/wifi-phy-ofdma-test.cc +++ b/src/wifi/test/wifi-phy-ofdma-test.cc @@ -822,13 +822,13 @@ TestDlOfdmaPhyTransmission::RunOne() WIFI_PHY_BAND_5GHZ)); m_phyAp->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_phySta1->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_phySta2->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_phySta3->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); Simulator::Schedule(Seconds(0.5), &TestDlOfdmaPhyTransmission::ResetResults, this); @@ -1922,7 +1922,7 @@ TestUlOfdmaPpduUid::DoSetup() WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ)); m_phyAp->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, WIFI_PHY_BAND_5GHZ, 0}); m_phyAp->SetDevice(apDev); m_phyAp->TraceConnectWithoutContext("TxPpduUid", MakeCallback(&TestUlOfdmaPpduUid::TxPpduAp, this)); @@ -1944,7 +1944,7 @@ TestUlOfdmaPpduUid::DoSetup() m_phySta1->AddChannel(spectrumChannel); m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); m_phySta1->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, WIFI_PHY_BAND_5GHZ, 0}); m_phySta1->SetDevice(sta1Dev); m_phySta1->TraceConnectWithoutContext("TxPpduUid", MakeCallback(&TestUlOfdmaPpduUid::TxPpduSta1, this)); @@ -1964,7 +1964,7 @@ TestUlOfdmaPpduUid::DoSetup() m_phySta2->AddChannel(spectrumChannel); m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); m_phySta2->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, WIFI_PHY_BAND_5GHZ, 0}); m_phySta2->SetDevice(sta2Dev); m_phySta2->TraceConnectWithoutContext("TxPpduUid", MakeCallback(&TestUlOfdmaPpduUid::TxPpduSta2, this)); @@ -4124,13 +4124,13 @@ TestUlOfdmaPhyTransmission::RunOne() WIFI_PHY_BAND_5GHZ)); m_phyAp->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_phySta1->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_phySta2->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); m_phySta3->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, m_channelWidth, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, m_channelWidth, WIFI_PHY_BAND_5GHZ, 0}); Time delay = Seconds(0.0); Simulator::Schedule(delay, &TestUlOfdmaPhyTransmission::Reset, this); @@ -5095,7 +5095,7 @@ TestPhyPaddingExclusion::DoSetup() WIFI_PHY_BAND_5GHZ)); m_phyAp->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, WIFI_PHY_BAND_5GHZ, 0}); m_phyAp->SetReceiveOkCallback(MakeCallback(&TestPhyPaddingExclusion::RxSuccess, this)); m_phyAp->SetReceiveErrorCallback(MakeCallback(&TestPhyPaddingExclusion::RxFailure, this)); Ptr apMobility = CreateObject(); @@ -5119,7 +5119,7 @@ TestPhyPaddingExclusion::DoSetup() m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); m_phySta1->AssignStreams(streamNumber); m_phySta1->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, WIFI_PHY_BAND_5GHZ, 0}); Ptr sta1Mobility = CreateObject(); m_phySta1->SetMobility(sta1Mobility); sta1Dev->SetPhy(m_phySta1); @@ -5140,7 +5140,7 @@ TestPhyPaddingExclusion::DoSetup() m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); m_phySta2->AssignStreams(streamNumber); m_phySta2->SetOperatingChannel( - WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, (int)(WIFI_PHY_BAND_5GHZ), 0}); + WifiPhy::ChannelTuple{channelNum, DEFAULT_CHANNEL_WIDTH, WIFI_PHY_BAND_5GHZ, 0}); Ptr sta2Mobility = CreateObject(); m_phySta2->SetMobility(sta2Mobility); sta2Dev->SetPhy(m_phySta2); diff --git a/src/wifi/test/wifi-primary-channels-test.cc b/src/wifi/test/wifi-primary-channels-test.cc index e89fa1057..97db7cb1f 100644 --- a/src/wifi/test/wifi-primary-channels-test.cc +++ b/src/wifi/test/wifi-primary-channels-test.cc @@ -390,7 +390,7 @@ WifiPrimaryChannelsTest::DoSetup() "WaitBeaconTimeout", TimeValue(MicroSeconds(102400))); // same as BeaconInterval - TupleValue channelValue; + TupleValue, UintegerValue> channelValue; // Each BSS uses a distinct primary20 channel for (uint8_t bss = 0; bss < m_nBss; bss++) diff --git a/src/wifi/test/wifi-test.cc b/src/wifi/test/wifi-test.cc index f57135af6..5c0601cfc 100644 --- a/src/wifi/test/wifi-test.cc +++ b/src/wifi/test/wifi-test.cc @@ -328,7 +328,7 @@ void InterferenceHelperSequenceTest::SwitchCh(Ptr dev) { Ptr p = dev->GetPhy(); - p->SetOperatingChannel(WifiPhy::ChannelTuple{40, 0, (int)(WIFI_PHY_BAND_5GHZ), 0}); + p->SetOperatingChannel(WifiPhy::ChannelTuple{40, 0, WIFI_PHY_BAND_5GHZ, 0}); } Ptr @@ -1772,8 +1772,8 @@ Bug2831TestCase::~Bug2831TestCase() void Bug2831TestCase::ChangeSupportedChannelWidth() { - m_apPhy->SetOperatingChannel(WifiPhy::ChannelTuple{38, 40, (int)(WIFI_PHY_BAND_5GHZ), 0}); - m_staPhy->SetOperatingChannel(WifiPhy::ChannelTuple{38, 40, (int)(WIFI_PHY_BAND_5GHZ), 0}); + m_apPhy->SetOperatingChannel(WifiPhy::ChannelTuple{38, 40, WIFI_PHY_BAND_5GHZ, 0}); + m_staPhy->SetOperatingChannel(WifiPhy::ChannelTuple{38, 40, WIFI_PHY_BAND_5GHZ, 0}); } void @@ -1843,7 +1843,7 @@ Bug2831TestCase::DoRun() m_apPhy->SetMobility(apMobility); m_apPhy->SetDevice(apDev); m_apPhy->ConfigureStandard(WIFI_STANDARD_80211ax); - m_apPhy->SetOperatingChannel(WifiPhy::ChannelTuple{36, 20, (int)(WIFI_PHY_BAND_5GHZ), 0}); + m_apPhy->SetOperatingChannel(WifiPhy::ChannelTuple{36, 20, WIFI_PHY_BAND_5GHZ, 0}); ObjectFactory mac; mac.SetTypeId("ns3::ApWifiMac"); @@ -1884,7 +1884,7 @@ Bug2831TestCase::DoRun() m_staPhy->SetMobility(staMobility); m_staPhy->SetDevice(apDev); m_staPhy->ConfigureStandard(WIFI_STANDARD_80211ax); - m_staPhy->SetOperatingChannel(WifiPhy::ChannelTuple{36, 20, (int)(WIFI_PHY_BAND_5GHZ), 0}); + m_staPhy->SetOperatingChannel(WifiPhy::ChannelTuple{36, 20, WIFI_PHY_BAND_5GHZ, 0}); mac.SetTypeId("ns3::StaWifiMac"); auto staMac = mac.Create(); diff --git a/src/wimax/model/wimax-connection.cc b/src/wimax/model/wimax-connection.cc index 61e40c70e..0c8f0c8a5 100644 --- a/src/wimax/model/wimax-connection.cc +++ b/src/wimax/model/wimax-connection.cc @@ -43,7 +43,7 @@ WimaxConnection::GetTypeId() .AddAttribute("Type", "Connection type", EnumValue(Cid::INITIAL_RANGING), - MakeEnumAccessor(&WimaxConnection::GetType), + MakeEnumAccessor(&WimaxConnection::GetType), MakeEnumChecker(Cid::BROADCAST, "Broadcast", Cid::INITIAL_RANGING,