源文件位置:
src/core/model/config.h
config.cc
配置仿真參數(shù)和跟蹤。
void ns3::Config::Connect (std::string path, const CallbackBase &cb)
此函數(shù)將嘗試查找與輸入路徑匹配的所有跟蹤源,然后將輸入回調(diào)連接到它們,以使回調(diào)在跟蹤事件通知時接收到一個額外的上下文字符串。
void ns3::Config::ConnectWithoutContext (std::string path, const CallbackBase &cb)
此函數(shù)將嘗試查找與輸入路徑匹配的所有跟蹤源,然后將輸入回調(diào)連接到它們。
void ns3::Config::Disconnect (std::string path, const CallbackBase &cb)
此函數(shù)撤消Config :: ConnectWithContext的工作。
void ns3::Config::DisconnectWithoutContext (std::string path, const CallbackBase &cb)
此函數(shù)撤消Config :: Connect的工作。
Ptr< Object > ns3::Config::GetRootNamespaceObject (uint32_t i)
請求的根命名空間對象
uint32_t ns3::Config::GetRootNamespaceObjectN (void)
注冊的根命名空間對象的數(shù)量。
Config::MatchContainer ns3::Config::LookupMatches (std::string path)
包含與輸入路徑匹配的所有對象的容器。
void ns3::Config::RegisterRootNamespaceObject (Ptr< Object > obj)
每個根對象在路徑匹配期間用作Config :: Connect和Config :: Set的路徑的根。
void ns3::Config::Reset (void)
Reset the initial value of every attribute as well as the value of
every global to what they were before any call to SetDefault and SetGlobal.
將每個屬性的初始值以及每個全局的值重置為在調(diào)用SetDefault和SetGlobal之前的值。
void ns3::Config::Set (std::string path, const AttributeValue &value)
此函數(shù)將嘗試查找與輸入路徑匹配的屬性,然后將其值設置為輸入值。
void ns3::Config::SetDefault (std::string name, const AttributeValue &value)
此方法覆蓋匹配屬性的初始值。 此方法不能失敗:如果輸入屬性名稱或值無效,它將崩潰。
bool ns3::Config::SetDefaultFailSafe (std::string name, const AttributeValue &value)
如果值設置成功,則為true,否則為false。
void ns3::Config::SetGlobal (std::string name, const AttributeValue &value)
此方法等同于GlobalValue :: Bind
bool ns3::Config::SetGlobalFailSafe (std::string name, const AttributeValue &value)
如果可以設置GlobalValue,則為true。
void ns3::Config::UnregisterRootNamespaceObject (Ptr< Object > obj)
此函數(shù)撤消Config :: RegisterRootNamespaceObject的工作。
用法實例:
1.Connect函數(shù)的用法:
第二個參數(shù)是回調(diào)函數(shù),回調(diào)函數(shù)的參數(shù)根據(jù)第一個參數(shù)的屬性來設置。需要注意的是,第二個參數(shù)所設置的回調(diào)函數(shù),其第一個參數(shù)是string類型的context。
Config::Connect ("/NodeList/*/DeviceList/*/Mac/MacTx", MakeCallback (&DevTxTrace));
Config::Connect ("/NodeList/*/DeviceList/*/Mac/MacRx", MakeCallback (&DevRxTrace));
Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxOk", MakeCallback (&PhyRxOkTrace));
Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxError", MakeCallback (&PhyRxErrorTrace));
Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/Tx", MakeCallback (&PhyTxTrace));
Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/State", MakeCallback (&PhyStateTrace));
void
DevTxTrace (std::string context, Ptr<const Packet> p)
{
if (g_verbose)
{
std::cout << " TX p: " << *p << std::endl;
}
}
void
DevRxTrace (std::string context, Ptr<const Packet> p)
{
if (g_verbose)
{
std::cout << " RX p: " << *p << std::endl;
}
}
void
PhyRxOkTrace (std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble)
{
if (g_verbose)
{
std::cout << "PHYRXOK mode=" << mode << " snr=" << snr << " " << *packet << std::endl;
}
}
2.ConnectWithoutContext的用法:
第二個參數(shù)是回調(diào)函數(shù),參數(shù)的設置依賴與第一個參數(shù)設置的屬性。與Connect函數(shù)不同的是,這里的回調(diào)函數(shù)的第一個參數(shù)沒有string類型的context。
Config::ConnectWithoutContext ("/NodeList/0/DeviceList/*/Phy/MonitorSnifferRx", MakeCallback (&MonitorSniffRx));
void MonitorSniffRx (Ptr<const Packet> packet, uint16_t channelFreqMhz,
uint16_t channelNumber, uint32_t rate,
WifiPreamble preamble, WifiTxVector txVector,
struct mpduInfo aMpdu, struct signalNoiseDbm signalNoise)
{
g_samples++;
g_signalDbmAvg += ((signalNoise.signal - g_signalDbmAvg) / g_samples);
g_noiseDbmAvg += ((signalNoise.noise - g_noiseDbmAvg) / g_samples);
g_rate = rate;
g_channelNumber = channelNumber;
}
3.SetGlobal的用法:
這與SetGlobalFailSafe函數(shù)的用法類似。設置全局值。
Config::SetGlobal ("SimulatorImplementationType", StringValue (m_simulatorType));
4.SetDefault函數(shù)的用法:
這與SetDefaultFailSafe函數(shù)用法類似。
Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("0"));
// disable fragmentation
Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
5.Set函數(shù)的用法:
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/Slot",
TimeValue (MicroSeconds (slot)));
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/Sifs",
TimeValue (MicroSeconds (sifs)));
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/AckTimeout",
TimeValue (MicroSeconds (ackTimeout)));
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/CtsTimeout",
TimeValue (MicroSeconds (ctsTimeout)));
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/Rifs",
TimeValue (MicroSeconds (rifs)));
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/BasicBlockAckTimeout",
TimeValue (MicroSeconds (basicBlockAckTimeout)));
Config::Set ("/NodeList/*/DeviceList/*/$ns3::WifiNetDevice/Mac/CompressedBlockAckTimeout",
TimeValue (MicroSeconds (compressedBlockAckTimeout)));