修改的文件有packet.h、cmu-trace.cc、priqueue.cc、ns-packet.tcl、Makefile

1、在 $HOME/ns-allinone-2.29/ns-2.29下新建gpsr文件夹,并将GPSR-KeLiu中的

gpsr_packet.h,   gpsr_neighbor.h,   gpsr_neighbor.cc,   gpsr.h,  gpsr.cc,  gpsr.tcl,

wireless-gpsr.tcl,  gpsr_sinklist.h, gpsr-sinklist.cc,  grid_deploy10x10.tcl,   cbr100.tcl加入刚新建的gpsr文件夹中。

2、进入$HOME/ns-allinone-2.29/ns-2.29/common, 修改packet.h

在enum packet_t{

增加 PT_GPSR

}

class p_info {

增加 name_[PT_GPSR]= “gpsr”

}

3、进入$HOME/ns-allinone-2.29/ns-2.29/trace,修改 cmu-trace.cc

(readme遗漏)增加#include <gpsr/gpsr_packet.h>

在 void CMUTrace::format(Packet* p, const char *why)

{

增加 case PT_GPSR;

break;

}

3、进入 $HOME/ns-allinone-2.29/ns-2.29/queue,修改priqueue.cc

void   PriQueue::recv(Packet *p, Handler *h)

{

增加  case PT_GPSR:

}

4、进入$HOME/ns-allinone-2.29/ns-2.29/tcl/lib, 修改ns-packet.tcl

foreach prot{

增加GPSR

}

5、进入 $HOME/ns-allinone-2.29/ns-2.29/ ,修改Makefile

在OBJ_STL =  的最后按照格式加入( gpsr前为TAB键而不是空格

gpsr/gpsr_neighbor.o\

gpsr/gpsr_sinklist.o\

gpsr/gpsr.o

如果需要加入调试信息,则在CCOPT =  -Wall 加上 -g,  如下:

CCOPT =  -g  -Wall

6、重新编译,执行如下命令

cd $HOME/ns-allinone-2.29/ns-2.29/common

touch packet.cc

cd ..

make clean

make

7、在使用脚本wireless_gpsr.tcl进行场景仿真时,需要对 ns-2.30所在的路径进行修改

将wireless_gpsr.tcl 中的将ns2home 修改成  $HOME/ns-allinone-2.30/ns-2.30/

如:

source ../gpsr.tcl 要改成如下

source /home/f/ns-allinone-2.29/ns-2.29/gpsr/gpsr.tcl

文中还有以下几处,都需要给出正确的绝对路径

Set opt(cp)         "/home/f/ns-allinone-2.29/ns-2.29/gpsr/cbr100.tcl"

set opt(sc)             "/home/f/ns-allinone-2.29/ns-2.29/gpsr/grid-deploy10x10.tcl"

Source  /home/f/ns-allinone-2.29/ns-2.29/tcl/mobility/timer.tcl

Source  /home/f/ns-allinone-2.29/ns-2.29/tcl/lib/ns-bsnode.tcl

Source  /home/f/ns-allinone-2.29/ns-2.29/tcl/mobility/com.tcl

=========割========================================

1.上面2处标红的 在2.30中是这么改的,但是我用的2.35不是,具体怎么改可以参照我在笔记二中移植mflood中的修改,也就是枚举没了,而且保证NTYPE是最后一个就行了。

2.改动过协议的neighbor.h文件的头文件,也就仅仅是一个函数名字,但是导致了所有调用此函数的文件都编译错误,我从gpsr.cc找到gpsr.cc然后找到了neighbor.cc最后才发现在是在头文件的定义中错了。本来也是个小事,但是对我这种对编程不是很精通的人来说就麻烦了,搞了我一个早上终于编译成功。

3.上面标蓝的地方,是原笔记的话,我按照了没改的编译通过了,也就是说相对路径是可以的,不一定要绝对路径,但是有的时候相对路径更加麻烦还容易出错,比如../../../../../XX/X/XXX/XXXXX/  这么复杂还不如就PWD一下复制个全路径就好了。

4.有些附件我想添加上来但是不知道怎么搞正在考虑中,希望有人能提供点建议

外链地址:http://blog.sina.com.cn/s/blog_414c2a9a01013tau.html

GPSR协议移植的更多相关文章

  1. mavlink协议移植问题

    mavlink协议移植问题 mavlink源代码是一个代码库,使用的时候只需要将mavlink.h头文件包含到工程项目中即可. mavlink通信协议是无状态的连接,一般采用心跳消息跟踪系统是否存在. ...

  2. Python脚本通过ftp协议移植文件

    需求 项目需要定时移植多个客户服务器的文件到公司服务器上,确保文件定时同步和生成监控日志 机制原理 1.客户和公司服务器同时安装vpn,绕过复杂的网关,linux下使用的OpenVPN 2.服务器定时 ...

  3. 嵌入式学习笔记(综合提高篇 第二章) -- FreeRTOS的移植和应用

    1.1    资料准备和分析 上章节通过实现双机通讯,了解如何设计和实现自定义协议,不过对于嵌入式系统来说,当然不仅仅包含协议,还有其它很多需要深入学习了解的知识,下面将列出我在工作和学习上遇到的嵌入 ...

  4. 小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片

    本文基本公开了如何移植MQTT物联网协议到STM32平台上,并结合GPRS模块(SIM800C/SIM900A/SIM868等)实现publish和订阅topic从onenet,阿里云,百度云等.如果 ...

  5. Socket上自定义协议总结

    TCP只是一个可靠传输的通信管道,上层协议要你自己定的,通俗来说就是发送方和接收方的约定 自定义协议的核心有两个:1. 控制码2. 流程控制 用Socket进行通信,发送的数据包一定是有结构的,类似于 ...

  6. __attribute__((packed))详解

      1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关 ...

  7. @清晰掉 GNU C __attribute__

    __attribute__((packed))详解 1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有 ...

  8. BAS/BRAS/RADIUS简介

    标签: java radius协议   linux radius认证服务器   转自: http://blog.csdn.net/sun93732/article/details/5999274 由R ...

  9. 编译器--__attribute__ ((packed))

    1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关,g ...

随机推荐

  1. Enze fourth day(循环语句 一)

    哈喽,大家好.又到了总结知识的时间了.今天在云和学院自学了一下循环语句,下面是自己总的一些知识点. 先补充一下选择结构中的switch语句. 理论:switch语句是一种多分支选择语句,当需要测试大量 ...

  2. 【Linux命令】Ubuntu14.04+QT5.2配置mysql

    安装qt: 官网下载qt5.2.1:qt-opensource-linux-x64-5.2.1.run 直接命令行运行:./qt-opensource-linux-x64-5.2.1.run 选择安装 ...

  3. 【Linux命令】配置ssh远程连接步骤

    安装ssh: sudo apt-get update sudo apt-get install openssh-server 查看ssh服务器是否启动: sudo ps -e | grep ssh 查 ...

  4. JBPM6工作台使用Mysql数据库

    前面已经安装好jbpm了.现在进行数据库的替换.很简单: 1,修改 build.properties 原: # default is H2 H2.version=1.3.168 db.name=h2 ...

  5. CSS3 总结-2

    过渡属性 下面的表格列出了所有的转换属性: 属性 描述 CSS transition 简写属性,用于在一个属性中设置四个过渡属性. 3 transition-property 规定应用过渡的 CSS ...

  6. 高级UNIX环境编程13 守护进程

    linux下,keventd守护进程为内核中运行的执行的函数提供进程上下文 bdflush,kupdated将高速缓存中的数据冲洗到磁盘上

  7. Log4J logger图片

  8. DELPHI编写服务程序总结

    DELPHI编写服务程序总结 一.服务程序和桌面程序的区别 Windows 2000/XP/2003等支持一种叫做“系统服务程序”的进程,系统服务和桌面程序的区别是:系统服务不用登陆系统即可运行:系统 ...

  9. IT第十一天、第十二天、第十三天 - 数组的应用、飞行棋游戏的编写和总结

    NIIT第十一天 上午 多维数组 1.数组是引用数据类型 排序 1.冒泡排序法 2.类冒泡排序法 下午 飞行棋游戏 1.项目策划 2.项目规则确认 3.项目模块确认 晚上 1.飞行棋游戏,项目框架的编 ...

  10. Java chapter04-1

    public class CPU { int speed; //获得speed的值 public void setSpeed(int m){ speed = m; } //返回speed的值 publ ...