NS3 Config類API說明

源文件位置:
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)));
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容