leach_mit 结构图
从 wireless.tcl 文件中分析 leach 的具体流程
在 wireless.tcl 文件中首先初始化了很多无限仿真的配置。引用了一些外部脚本——source
tcl/lib/ns-mobilenode.tcl(主要是包含移动节点类 Node/MobileNode 的一些 otcl 类函数的定
义)、source tcl/lib/ns-cmutrace.tcl(trace 文件的 tcl 脚本)、 source
tcl/mobility/$opt(rp).tcl(将几种不同的协议的具体应用的外部脚本引用,$opt(rp)
是协议名称)。当一些变量初始化过后,通过
elseif { [string compare $opt(rp) "leach"] == 0} {
for {set i 0} {$i < $opt(nn) } {incr i} {
leach-create-mobile-node $i
建立我们仿真的节点,最主要的函数是 leach-create-mobile-node(这个函数的定义在
uamps.tcl 中)
分析 uamps.tcl 中是如何定义节点的???
在 uamps.tcl 中初始化了 bsnode 的应用类型(Application/BSApp)、定义了二个能量
传输模型(自由信道和多径衰落、Efriss_amp 和 Etwo_ray_amp)和很多参数。而真正创
建节点是在函数 leach-create-mobile-node 中。而这个函数中调用了 uamps.tcl 中的
sens_init,这个函数的功能是清除上一次模拟时留下的 trace 文件。在创建节点时候,
sens_init 函数调用一次。leach-create-mobile-node 函数解释如下:
1、节点定义: