如何在没有边界路由器的情况下在CC2650传感器标签上运行CoAP(er-rest-example)?



我想在没有边界路由器的 CC2650 传感器标签上运行 er-rest-example 的简单客户端服务器。目的是测试 coap 事务。

自述文件和维基中的所有详细信息都涉及边界路由器。任何在没有边界路由器的情况下运行coap的帮助将不胜感激。

我遵守并在传感器标签上运行了 er-rest-client 和 er-rest-server,但客户端事务超时和 RPL DIS 没有得到处理。

我不确定这应该是评论还是答案,但由于我缺乏评论的声誉,所以这里是:

er-rest-client 和 er-rest-server 都没有为 RPL 设置网状网络,这就是为什么这些示例包括一个边界路由器来做到这一点。如果你进入core/net/ip/tcpip.c并启用DEBUG,我猜你会看到以下输出:

tcpip_ipv6_output: no route found, using default route
tcpip_ipv6_output: Destination off-link but no route

对于我正在处理的类似项目,将以下行添加到服务器进程解决了该问题:

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, UIP_DS6_DEFAULT_PREFIX, 0, 0, 0, 0, 0, 0, 0);
rpl_set_prefix(dag, &ipaddr, 64);
printf("created new RPL dagn");
}
else{
printf("RPL dag creation failedn");
}

您还需要包含"net/rpl/rpl.h"并声明一个变量"struct uip_ds6_addr* root_if" 该代码是从 contiki 提供的 ipv6/rpl 示例中提取的。

最新更新