0

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

以下代码会产生编译错误。

uip_ds6_addr_add(&ipaddr, 0, 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, 0, 0, 0, 0, 0, 0);
  rpl_set_prefix(dag, &ipaddr, 64);

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

1 回答 1

1

默认情况下,Contiki-NG 启用了 RPL-lite,它没有此功能。

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

MAKE_ROUTING = MAKE_ROUTING_RPL_CLASSIC

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

于 2021-03-16T14:56:04.233 回答