当我在nodemcu v1.0 (esp-12e)上试用esp-now的时候,我偶然发现了以下内容 ESP_NOW_ROLE_MAX
在设定角色时,用 esp_now_set_self_role(...)
我想知道这可能是什么?有什么想法吗?(我用的是Platform.io,但在Arduino IDE中应该也是这样的)
ESP-NOW通信是对等设备(主设备和从设备)之间的通信。是主设备支配整个通信的主动权,从设备只响应主设备的请求,如果适用的话。有一种可能,一个设备可以同时拥有主设备和从设备的角色。如果设备是一个或多个从机的主人,又是另一个主人的从机,就会发生这种情况。
如果一个设备没有角色,它将处于空闲状态。
表中总结了四(五)种可能性,以及它们对应的名称和对接口的优先级。
esp_now_set_self_role(role) the role can be:
ESP_NOW_ROLE_IDLE = 0,
ESP_NOW_ROLE_CONTROLLER,
ESP_NOW_ROLE_SLAVE,
ESP_NOW_ROLE_COMBO,
ESP_NOW_ROLE_MAX
Idle –without function- ESP_NOW_ROLE_IDLE = 0 no interface
Master ESP_NOW_ROLE_CONTROLLER = 1 priority is given to the station interface
Slave ESP_NOW_ROLE_SLAVE = 2 priority is given to the SoftAP interface
Master + Slave ESP_NOW_ROLE_MAX = 3 priority is given to the station interface
Master + Slave ESP_NOW_ROLE_COMBO priority is given to the SoftAP interface
像这样使用
// Once ESPNow is successfully init, we will register for Send CB to
// get the status of Trasnmitted packet
esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
esp_now_register_send_cb(OnDataSent);
// Register peer
esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);