Page 1 of 1

使用esp_mesh_get_routing_table获取的路由表,根节点是否永远为第一条路由表?

Posted: Thu Aug 26, 2021 4:59 am
by zxlch_z

Code: Select all

      esp_mesh_get_routing_table((mesh_addr_t *) &route_table, MESH_MAX_NODE * 6, &route_table_size); 
      for(uint16_t i=1; i<route_table_size, i++) 
      {
        esp_mesh_send(&route_table[i], &_meshssid, MESH_DATA_P2P, NULL, 0);
      }
我需要对所有非根节点的设备发送消息,直接从获取到的第二条路由表为目标开始发送,是否可以直接略过根节点?如果根节点更改为其他设备,路由表第一条是否还是更改后的根节点?

亦或是有没有广播消息到所有非根节点的API?

Re: 使用esp_mesh_get_routing_table获取的路由表,根节点是否永远为第一条路由表?

Posted: Fri Sep 03, 2021 8:20 am
by sioiot
您好:

wifi mesh 中存在预设地址向全部设备广播与非跟节点广播。

根据您的需求 MWIFI_ADDR_BROADCAST 向非根节点设备广播。

#define MWIFI_ADDR_ROOT {0xFF, 0x0, 0x0, 0x1, 0x0, 0x0}
#define MWIFI_ADDR_ANY {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} /**< All node in the mesh network */
#define MWIFI_ADDR_BROADCAST {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0XFE} /**< Other node except the root */

Re: 使用esp_mesh_get_routing_table获取的路由表,根节点是否永远为第一条路由表?

Posted: Fri Sep 10, 2021 4:08 pm
by zxlch_z
非常感谢!

Re: 使用esp_mesh_get_routing_table获取的路由表,根节点是否永远为第一条路由表?

Posted: Sat Mar 12, 2022 5:35 am
by zxlch_z
如果我不使用MDF库,如何实现MWIFI_ADDR_BROADCAST的功能呢?

Re: 使用esp_mesh_get_routing_table获取的路由表,根节点是否永远为第一条路由表?

Posted: Mon Mar 14, 2022 2:00 pm
by ESP_Sunshine
您好,
首先是 通过 esp_mesh_get_routing_table 获取到的路由表,确实第一个就是根节点的mac地址,这个你可以通过遍历的方式打印出来对应的所有mesh节点的mac地址,你就会发现。

如果不使用 mdf 库的话,就需要遍历的方式来实现。mdf库里面也是同样的方式来实现的,只是作了一层封装而已。
详细的可以参看 mdf 库链接:https://github.com/espressif/esp-mdf/bl ... fi.c#L1242