使用Contiki Simple UDP API和边界路由器进行RPL设置

时间:2017-03-01 10:23:07

标签: contiki

我有一个看似简单但非常具体的问题。我的网络中有三种不同的节点类型:客户端,聚合器和边界路由器(rpl-border-router)。一个(或多个)客户端与聚合器之间应该存在单播连接。当聚合器获取某些特定类型的消息或达到某个阈值时,聚合器会将其他一些消息转发给边界路由器。 simple-udp-rpl文件夹中unicast-recevier(aggregator)的示例代码通过以下方式创建RPL DAG:

static void create_rpl_dag(uip_ipaddr_t *ipaddr) {

  struct uip_ds6_addr *root_if;

  root_if = uip_ds6_addr_lookup(ipaddr);
  if(root_if != NULL) {
    rpl_dag_t *dag;
    uip_ipaddr_t prefix;

    rpl_set_root(RPL_DEFAULT_INSTANCE, ipaddr);
    dag = rpl_get_any_dag();
    uip_ip6addr(&prefix, UIP_DS6_DEFAULT_PREFIX, 0, 0, 0, 0, 0, 0, 0);
    rpl_set_prefix(dag, &prefix, 64);
    PRINTF("created a new RPL dag\n");
  } else {
    PRINTF("failed to create a new RPL DAG\n");
  }
}

但是,由于边界路由器自己创建RPL DAG,因此接收方(聚合器)无法向边界路由器发送消息。但是从接收器中删除此RPL代码会导致无法接收来自发送方(客户端)的消息。所以问题可能与RPL有某种联系。 ContikiRPL代码并没有很好的记录,我正在努力取得进展。非常感谢任何帮助。

0 个答案:

没有答案