【问题标题】:Is there a way to know that the node is disconnected/out of the RPL network in contiki 3.0?有没有办法知道节点在 contiki 3.0 中已断开/脱离 RPL 网络?
【发布时间】:2020-06-24 09:36:00
【问题描述】:

我有一个移动节点超出了 RPL 网络的范围。我需要知道这个节点超出了网络范围。 我试过这段代码:

if (rpl_neighbor_count() == 0) {
    printf("NO NEIGHBORS\n"); 
}
else {
    printf("There are NEIGHBORS \n");
}

但是,当节点发生移动时,计数不会更新,它会保持原来的状态,并且始终保持不变。

【问题讨论】:

    标签: networking iot contiki cooja


    【解决方案1】:

    RPL DAG 结构struct rpl_dag 有一个成员变量uint8_t joined。可以调用rpl_get_dag获取DAG结构,然后查看joined是0还是1。

    【讨论】:

    • 感谢您的回答。因为节点之前在网络中,所以它保存并始终返回joined=1。我写了这个:``` rpl_dag_t *dag_table; dag_table=rpl_get_dag(&my_ipaddr); printf("加入: %u\n", dag_table->joined); ``` 。即使节点仍然永远超出范围,它也总是给我 1。
    • 好吧,你说得有道理。这似乎是实现中的一个错误。这对你有用吗:检查dag->preferred_parent == NULL && dag->rank != ROOT_RANK(dag) - 即没有首选父节点并且节点不是根节点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2019-04-05
    相关资源
    最近更新 更多