在ns3中添加自己的头文件_在ns-3中添加自己编写的模块

编程知识 更新时间:2023-05-02 20:52:22

在ns-3中添加自己编写的模块

[看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Androi

本文将以自己的一个实例来进行详解:

我的ns-3版本为 ns-3-dev

/home/repos/ns-3-allinone/ns-3-dev/

本文将把一个高速公路车联自组网的模型添加到ns-3中。

一、编写代码

这一步,就要是编写相关的代码

本文代码见: http://download.csdn/detail/barcodegun/3710431[http://blog.csdn/aminfo/article/details/7646919 100003|音乐之声|China Music Radio|1|1|http://cdnmmsr/cnr003|0|5314528|32|40|2001100001|中国之声|Voice

二、把自己编写的模块加入ns-3中

1. 文件结构

本文是一个高速公路车联自组网的模型,vanet

a. 在repos/ns-3-allinone/ns-3-dev/src目录下,添加新的模块

ns-3的模块,都在src目录下。自己创建的模块,也复制到此目录下。

我在 src 目录下新建 vanet 文件夹

gpf@guopengfei:~/repos/ns-3-allinone/ns-3-dev/src$ mkdir vanet

vanet 目录下文件结构

src/

vanet/

examples/

vanet-highway-test

wscript

model/

controller

controller.h

...

vehicle

vehicle.h

test/

examples-to-run.py

vanet-temp-test

wscript

文件初步说明:

examples主要是作者编写的该模块的相关例子。用户的实际例子,不需要放在这里,可以放在scratch目录下编译及执行。

model 主要为作者编写的该模块的核心代码。

test  主要为作者在编写代码过程中,编写的相关测试程序。

2.修改src/vanet/wscript文件

a. 把 src/spectrum/wscript 这个文件复制到 vanet目录下。

复制一个模版程序,直接修改该程序。

b. 我的src/vanet/wscript文件:

def build(bld):

obj = bld.create_ns3_module('vanet', ['network', 'propagation', 'core', 'wifi', 'mobility'])

obj.source = [

'model/controller',

'model/highway',

'model/lane-change',

'model/model',

'model/obstacle',

'model/vehicle',

]

obj_test = bld.create_ns3_module_test_library('vanet')

obj_test.source = [

'test/vanet-temp-test',

]

headers = bld.new_task_gen('ns3header')

headers.module = 'vanet'

headers.source = [

'model/controller.h',

'model/highway.h',

'model/lane-change.h',

'model/model.h',

'model/obstacle.h',

'model/vehicle.h',

]

if (bld.env['ENABLE_EXAMPLES']):

bld.add_subdirs('examples')

c. 相关语法说明:

obj = bld.create_ns3_module('vanet', ['network', 'propagation', 'core', 'wifi', 'mobility'])

//  vanet为创建的组件名, 最后文档生成后,将在repos/ns-3-allinone/ns-3-dev/build/debug/ns3/ 目录下,生成一个 vanet-module.h的文件

以后用户自己编写程序, #include "ns3/vanet-module.h" 就可以直接调用用户编写的这个模块了。

后面的network,propagation ... 是该模块在代码编写过程中,需要信赖的相关组件。

obj.source  表示该模块的源代码

obj_test 为该模块的测试相关文档

headers = bld.new_task_gen('ns3header')  是固定格式,用户不用改变。

headers.module = 'vanet'

headers.source =  ...   用户对 .h头文件进行设置.

3.修改 src/vanet/examples/wscript

同上,先把src/spectrum/examples/wscript 这个文件复制到 vanet/examples目录下,再修改该文件,

我的文件:

def build(bld):

if not bld.env['ENABLE_EXAMPLES']:

return;

obj = bld.create_ns3_program('vanet-highway-test',

['core', 'mobility', 'network', 'wifi', 'vanet'])

obj.source = 'vanet-highway-test'

4.修改 src/vanet/test/examples-to-run.py

同上,先把 src/spectrum/test/examples-to-run.py  复制到 vanet/test目录下,再修改该文件,

我的文件:

...

cpp_examples = [

("vanet-highway-test", "True", "True"),

]

# A list of Python examples to run in order to ensure that they remain

# runnable over time.  Each tuple in the list contains

#

#     (example_name, do_run).

#

# See test.py for more information.

python_examples = []

5. 在 src/wscript文件中添加该组件

gpf@guopengfei:~/repos/ns-3-allinone/ns-3-dev/src$ vim wscript

all_modules = [

'core',

'network',

'config-store',

'internet',

'propagation',

'point-to-point',

...

'tools',

'visualizer',

'point-to-point-layout',

'csma-layout',

'template',

'vanet',

]

注意上面最后一行 'vanet', 是我添加的该组件。

三、编译,完成最后的添加:

./waf configure --enable-examples --enable-tests

./waf build

显示结果:

Modules built:

aodv                      applications              bridge

config-store              core                      csma

csma-layout               dsdv                      emu

energy                    flow-monitor              internet

lte                       mesh                      mobility

mpi                       netanim                   network

nix-vector-routing        ns3tcp                    ns3wifi

olsr                      point-to-point            point-to-point-layout

propagation               spectrum                  stats

tap-bridge                template                  test

tools                     topology-read             uan

vanet                     virtual-net-device        visualizer

wifi                      wimax

注意上面的vanet ,表示此模块已经成功添加。

执行完成后,用户编写代码时:

#include "ns3/vanet-module.h"

即包含此模块。

vanet-module.h 文件在 repos/ns-3-allinone/ns-3-dev/build/debug/ns3/目录下,如果用户的组件为 new-template,则生成的组件名为 new-template-module.h,使用时引用该组件头文件即可。

[以下下载均为微软官方原版光盘映像文件,即MSDN版。包括零售版(RTL Edition)和大客户版(VOL Edition),请大家根据需要选择下载。提醒大家:下载完成后请验证文件的MD5/SHA

相关推荐

更多推荐

在ns3中添加自己的头文件_在ns-3中添加自己编写的模块

本文发布于:2023-04-28 15:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/bdb6f832b5571a6e641be00fec8a102b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自己的   模块   头文件   ns

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 108957文章数
  • 27651阅读数
  • 0评论数