From cd81f1b86987ae4ec44e07ad7baa1584aca5325d Mon Sep 17 00:00:00 2001 From: Timm Bogner <64260873+timmbogner@users.noreply.github.com> Date: Thu, 23 Feb 2023 09:02:37 -0600 Subject: [PATCH] added ESP-NOW LR mode --- src/fdrs_gateway_espnow.h | 11 +++++++++-- src/fdrs_node.h | 9 ++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/fdrs_gateway_espnow.h b/src/fdrs_gateway_espnow.h index c19a065..7e40df4 100644 --- a/src/fdrs_gateway_espnow.h +++ b/src/fdrs_gateway_espnow.h @@ -72,6 +72,9 @@ void begin_espnow() WiFi.disconnect(); // Init ESP-NOW for either ESP8266 or ESP32 and set MAC address #if defined(ESP8266) +#ifdef USE_LR + DBG(" LR mode is only available on ESP32. ESP-NOW will begin in normal mode."); +#endif wifi_set_macaddr(STATION_IF, selfAddress); if (esp_now_init() != 0) { @@ -83,6 +86,10 @@ void begin_espnow() esp_now_register_recv_cb(OnDataRecv); #elif defined(ESP32) +#ifdef USE_LR + DBG(" ESP-NOW LR mode is active!"); + esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR); +#endif esp_wifi_set_mac(WIFI_IF_STA, &selfAddress[0]); if (esp_now_init() != ESP_OK) { @@ -136,7 +143,7 @@ int find_espnow_peer() // Returns the index of the peer list array element that contains the provided MAC address, -1 if not found int getFDRSPeer(uint8_t *mac) { - //DBG("Getting peer #"); + // DBG("Getting peer #"); for (int i = 0; i < 16; i++) { @@ -157,7 +164,7 @@ void add_espnow_peer() int peer_num = getFDRSPeer(&incMAC[0]); if (peer_num == -1) // if the device isn't registered { - //DBG("Device not yet registered, adding to peer list"); + // DBG("Device not yet registered, adding to peer list"); int open_peer = find_espnow_peer(); // find open spot in peer_list memcpy(&peer_list[open_peer].mac, &incMAC, 6); // save MAC to open spot peer_list[open_peer].last_seen = millis(); diff --git a/src/fdrs_node.h b/src/fdrs_node.h index 9d61380..de9cd76 100644 --- a/src/fdrs_node.h +++ b/src/fdrs_node.h @@ -85,11 +85,15 @@ void beginFDRS() delay(50); #endif // Init ESP-NOW for either ESP8266 or ESP32 + #ifdef USE_ESPNOW DBG("Initializing ESP-NOW!"); WiFi.mode(WIFI_STA); WiFi.disconnect(); #if defined(ESP8266) +#ifdef USE_LR + DBG(" LR mode is only available on ESP32. ESP-NOW will begin in normal mode."); +#endif if (esp_now_init() != 0) { return; @@ -101,7 +105,10 @@ void beginFDRS() // Register peers esp_now_add_peer(gatewayAddress, ESP_NOW_ROLE_COMBO, 0, NULL, 0); #elif defined(ESP32) - +#ifdef USE_LR + DBG(" ESP-NOW LR mode is active!"); + esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR); +#endif if (esp_now_init() != ESP_OK) { DBG("Error initializing ESP-NOW");