美文网首页NS3(Network Simulator)ns3
NS3 TypeId说明以及使用

NS3 TypeId说明以及使用

作者: shawn168 | 来源:发表于2017-06-25 20:32 被阅读284次

介绍

ns3的TypeId的设计非常巧妙,基本上每一个模块类都有TypeId属性。

TypeId将每一个模块类的属性和跟踪源集合在一起,非常方便的进行属性值的设定和跟踪源的回调函数的设定。

可以参看NS3 Attribute和Config内容翻译

定义

TypeId
WifiPhy::GetTypeId (void)
{
  static TypeId tid = TypeId ("ns3::WifiPhy")
    .SetParent<Object> ()
    .SetGroupName ("Wifi")
    .AddAttribute ("Frequency",
                   "The operating center frequency (MHz)",
                   UintegerValue (0),
                   MakeUintegerAccessor (&WifiPhy::GetFrequency,
                                         &WifiPhy::SetFrequency),
                   MakeUintegerChecker<uint32_t> ())
    .AddTraceSource ("PhyTxBegin",
                     "Trace source indicating a packet "
                     "has begun transmitting over the channel medium",
                     MakeTraceSourceAccessor (&WifiPhy::m_phyTxBeginTrace),
                     "ns3::Packet::TracedCallback")
  ;
  return tid;
}

上面代码
位置

/wifi/model/wifi-phy.cc

方法说明

SetParent:设置WifiPhy类的父类

SetGroupName :设置WifiPhy类所在模块组

AddAttribute :添加属性

AddTraceSource :添加跟踪源

另外的常用的一个方法:

AddConstructor:添加构造器

使用

//设置属性
m_wifiphy->SetAttribute ("Frequency", TimeValue (m_frequency));

//设置属性,返回bool值说明是否成功
m_wifiphy->SetAttributeFailSafe("Frequency", DoubleValue (m_lookAroundRate));

//设置跟踪源回调
m_wifiphy->TraceConnectWithoutContext ("PhyTxBegin",
                                          MakeCallback (&TcpSocketBase::UpdateCwnd, this));

//解除跟踪源回调
m_wifiphy->TraceDisconnectWithoutContext ("PhyTxBegin", 
                                          MakeCallback (&HierarchicalMobilityModel::ChildChanged, this));

这些代码只是示例,大家能看明白怎么使用就行了。

这些方法所在的位置是:/core/model/object-base.cc


另外:

NS3中很少使用上面的方式设置属性值的,最常用的是通过Config类完成:

Config::Set ("/NodeList/0/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelNumber", 
             UintegerValue(40));

*是通配符

NodeList是一个类,每创建一个Node对象,都会保存NodeList中。

DeviceList也是一个类,每创建一个NetDevice对象都会保存在DeviceList中。

*表示全部,0 1 2 这些数字表示第几个Node对象或者NetDevice对象

$ns3::WifiNetDevice表示对象类型

Phy表示$ns3::WifiNetDevice这个对象的属性。这个属性在类WifiNetDevice或者其父类里面的TypeId中有定义。

$ns3::YansWifiPhy](#)表示Phy这个属性的类型值

ChannelNumber表示$ns3::YansWifiPhy这个对象的属性。这个属性可以在类YansWifiPhy或者其父类里面的TypeId里面有定义。

相关文章

  • NS3 TypeId说明以及使用

    介绍 ns3的TypeId的设计非常巧妙,基本上每一个模块类都有TypeId属性。 TypeId将每一个模块类的属...

  • NS3 GlobalValue类API以及使用说明

    GlobalValue类 位置: core/model/global-value.cc 功能: 可从四个地方获取值...

  • NS初学-first.cc

    在ubuntu上安装了ns3后开始使用样例学习使用ns3,ns3使用c++编程还是让我学起来比较爽的

  • NS3 日志使用

    介绍 NS3提供了功能强大的日志系统,利用日志我们可以方便的使用、调试NS3代码。并且NS3的日志系统使用起来也非...

  • NS3 Gnuplot说明

    使用Gnuplot类做图(NS3官方文档内容翻译) 有两种使用ns3和gnuplot(http://www.gnu...

  • C++如何优雅的打印出变量类型

    方法1:使用C++库自带的typeid函数 一般使用C++库中的typeid函数获取一个变量的类型,不过打印出来的...

  • NS3 WiFiMode说明

    WiFiMode官方文档介绍 代表单一传输模式WifiMode由单个整数实现,用于在全局数组中查找相关传输模式的特...

  • NS3 NetAnim说明

    1:下载NetAnim ns3中并没有下载NetAnim,可以使用下面的步骤下载。首先保证你已经安装了mercur...

  • 织梦dede:channel指定typeid子栏目调用curre

    dede:channel指定typeid时currentstyle无效 {dede:channel typeid=...

  • dede手机模板调用及注意事项

    dede手机模板调用及注意事项 单篇文章调用 说明: typeid='1' 栏目id; view.php?aid=...

网友评论

    本文标题:NS3 TypeId说明以及使用

    本文链接:https://www.haomeiwen.com/subject/lfmgnttx.html