当前位置:文档之家› Ns2.34上leach协议的完美移植

Ns2.34上leach协议的完美移植

Ns2.34上leach协议的完美移植

经过几天的不断实验,以及网上各位前辈的帮助,终于成功将leach协议完美移植到ns2.34上,下面是我的安装笔记。

Step1

在ns-2.34的目录下新建一个leach文件夹,将leach.tar.gz放入这个文件夹

Step2

在终端中进入这个目录下,键入tar zxf leach.tar.gz

Step3

①将leach/mit整个目录复制到ns-allinone-2.34/ns-2.34中

②将leach/mac目录下的, mac-sensor.h, , mac-sensor-timers.h四个文件复制到ns-allinone-2.34/ns-2.34/mac中

③将leach/tcl/mobility目录下的四个文件复制到ns-allinone-2.34/ns-2.34/tcl/mobility中

④将ns-allinone-2.34/ns-2.34/tcl/ex目录下的wireless.tcl重命名为wireless_1.tcl,再将leach/tcl/ex目录下的wireless.tcl复制到ns-allinone-2.34/ns-2.34/tcl/ex中⑤将leach目录下的test,leach_test,package_up三个文件复制到ns-allinone-2.34/ ns-2.34中

Step3 修改文件

①需要修改的文件有:

ns-allinone-2.34/ns-2.34/apps/,app.h

ns-allinone-2.34/ns-2.34/trace/,cmu-trace.h

ns-allinone-2.34/ns-2.34/common/,,packet.h

ns-allinone-2.34/ns-2.34/mac/,ll.h,,,phy.h,wireless-phy.c c,wireless-phy.h

②修改方法:

对于leach目录下相应的文件(即刚才未复制的文件),将代码中以“#ifdef MIT_uAMPS”开始,并以“#endif”结束的部分复制到以上文件对应的位置

这个过此要小心核对修改,否则前功尽弃

③特殊情况

<1> ns-allinone-2.34/ns-2.34/common/packet.h中大约185行,根据其他变量的格式将代码更改为

#ifdef MIT_uAMPS

static const packet_t PT_RCA = 61;

#endif

并将最后一个枚举值改为62

这个过程可以随情况改变,还要注意的是packet.h文件并不是只改这一部分,前面的修改依然要。

<2> ns-allinone-2.34/ns-2.34/mac/wireless-phy.h,给类WirelessPhy添加public变量,大约105行

#ifdef MIT_uAMPS

MobileNode * node_;

#endif

或者将文件中的第150行,本来注释掉的// MobileNode * node_; 取消注释,注意这两个只能选一个

对于Antenna *ant_;和Propagation *propagation_;之间的那部分代码,应将其置于public声明的最后(private之前), 即Propagation变量必须保持为public,也就是说将下面的关键字Private注释掉

#ifdef MIT_uAMPS

EnergyResource *energy_; // Energy resource

int alive_; // 0 = dead, 1 = alive

//endif

//ifdef MIT_uAMPS_temp

double Efriss_amp_; // Xmit amp energy (J/bit/m^2)

double Etwo_ray_amp_; // Xmit amp energy (J/bit/m^4)

double EXcvr_; // Xcvr energy (J/bit)

double Pfriss_amp_; // Friss base transmission power (W/m^2)

double Ptwo_ray_amp_; // Two-ray base transmission power (W/m^4)

double PXcvr_; // Xcvr Power (W)

int sleep_; // 0 = awake, 1 = asleep

int ss_; // amount of spreading

double time_finish_rcv_;

double dist_; // approx. distance to transmitter

private: //将其注释掉

double pktEnergy(double pt, double pxcvr, int nbytes);

#endif

<3> ns-allinone-2.34/ns-2.34/mac/(大约235行), (大约132行),将代码中的

node_ = (Node *)obj;

改为

#ifdef MIT_uAMPS

node_ = (MobileNode *)obj;

#else

node_ = (Node *)obj;

#endif

④修改ns-allinone-2.34/ns-2.34/mit/uAMPS/ns-leach.tcl

将set dst_ $mac_dsc改为set dsc_addr $mac_dsc

⑤修改ns-allinone-2.34/ns-2.34目录下的Makefile文件

在DEFINE行的最后添加-DMIT_uAMPS 在INCLUDE行的中间添加-I./mit/rca -I./mit/uAMPS \

在代码gaf/gaf.o \之前添加

mit/rca/energy.o mit/rca/rcagent.o \

mit/rca/rca-ll.o mit/rca/resource.o \

相关主题