什么是 "ESP_NOW_ROLE_MAX"?

What is "ESP_NOW_ROLE_MAX"?

在 nodemcu v1.0 (esp-12e) 上试用 esp-now 时,我在使用 esp_now_set_self_role(...) 设置角色时偶然发现了 ESP_NOW_ROLE_MAX,想知道这可能是什么?任何想法? (我用的是Platform.io,不过在Arduino中应该也是一样的IDE)

ESP-NOW 通信是对等点(主从)之间的通信。主设备控制整个通信主动性,从设备只响应主设备的请求(如果适用)。
一个设备有可能同时扮演主从角色。如果设备是一个或多个从属设备的主设备,而反过来又是另一个主设备的从设备,则会发生这种情况。

如果设备没有角色,它将处于空闲状态。

table总结了四(五)种可能性,以及它们对应的名称和接口优先级:

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);

阅读有关 possible scenarios look here 的更多详细信息
更多信息在 sources.