微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Contiki ng 找不到对 rpl_set_root() 的引用

如何解决Contiki ng 找不到对 rpl_set_root() 的引用

我试图在 contiki-ng 上运行为 contiki3.x 编写的代码,但我收到一个编译错误,指出对 `rpl_set_root' 的未定义引用,即使我包含了“net/routing/rpl-classic/rpl.h”。我打开源代码 rpl-classic/rpl.h 和 rpl-classic/rpl.c 可以清楚地看到里面的代码

以下代码产生编译错误

uip_ds6_addr_add(&ipaddr,ADDR_MANUAL);

root_if = uip_ds6_addr_lookup(&ipaddr);
if(root_if != NULL) {
  rpl_dag_t *dag;
  dag = rpl_set_root(RPL_DEFAULT_INSTANCE,(uip_ip6addr_t *)&ipaddr);
  uip_ip6addr(&ipaddr,0xaaaa,0);
  rpl_set_prefix(dag,&ipaddr,64);

} else {
  printf("No DAG created\n");
}

解决方法

Contiki-NG 默认开启了 RPL-lite,没有这个功能。

要切换到 RPL 经典版,请将此行添加到应用程序的 Makefile:

MAKE_ROUTING = MAKE_ROUTING_RPL_CLASSIC

然后 make clean 并再次构建应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。