diff --git a/lib/lib_div/QuickESPNow/src/Comms_hal.h b/lib/lib_div/QuickESPNow/src/Comms_hal.h index 82ed71dd6..da3a16002 100644 --- a/lib/lib_div/QuickESPNow/src/Comms_hal.h +++ b/lib/lib_div/QuickESPNow/src/Comms_hal.h @@ -44,7 +44,7 @@ protected: * @brief Communication subsistem initialization * @param peerType Role that peer plays into the system, node or gateway. */ - virtual void initComms () = 0; + virtual bool initComms () = 0; public: diff --git a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.cpp b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.cpp index 7ba3093a2..8de5f6c74 100644 --- a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.cpp +++ b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.cpp @@ -46,8 +46,8 @@ bool QuickEspNow::begin (uint8_t channel, uint32_t wifi_interface, bool synchron DEBUG_INFO (QESPNOW_TAG, ARDUHAL_LOG_COLOR (ARDUHAL_LOG_COLOR_RED) "Starting ESP-NOW in in channel %u interface %s", channel, wifi_if == WIFI_IF_STA ? "STA" : "AP"); this->channel = channel; - initComms (); - return true; + + return initComms (); } void QuickEspNow::stop () { @@ -303,11 +303,12 @@ bool QuickEspNow::addPeer (const uint8_t* peer_addr) { return error == ESP_OK; } -void QuickEspNow::initComms () { +bool QuickEspNow::initComms () { if (esp_now_init ()) { DEBUG_ERROR (QESPNOW_TAG, "Failed to init ESP-NOW"); - ESP.restart (); - delay (1); +// ESP.restart (); +// delay (1); + return false; } esp_now_register_recv_cb (rx_cb); @@ -328,6 +329,8 @@ void QuickEspNow::initComms () { dataTPTimer = xTimerCreate ("espnow_tp_timer", pdMS_TO_TICKS (MEAS_TP_EVERY_MS), pdTRUE, NULL, tp_timer_cb); xTimerStart (dataTPTimer, 0); #endif // MEAS_TPUT + + return true; } void QuickEspNow::espnowTxTask_cb (void* param) { diff --git a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.h b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.h index b9d56e02c..8de3c9c5b 100644 --- a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.h +++ b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp32.h @@ -150,7 +150,7 @@ protected: //uint8_t channel; bool followWiFiChannel = false; - void initComms (); + bool initComms (); bool addPeer (const uint8_t* peer_addr); static void espnowTxTask_cb (void* param); int32_t sendEspNowMessage (comms_tx_queue_item_t* message); diff --git a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.cpp b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.cpp index b1309849e..e33f78dbf 100644 --- a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.cpp +++ b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.cpp @@ -74,9 +74,8 @@ bool QuickEspNow::begin (uint8_t channel, uint32_t wifi_interface, bool synchron DEBUG_INFO (QESPNOW_TAG, "Starting ESP-NOW in in channel %u interface %s", channel, wifi_if == WIFI_IF_STA ? "STA" : "AP"); this->channel = channel; - initComms (); - // addPeer (ESPNOW_BROADCAST_ADDRESS); // Not needed ? - return true; + + return initComms (); } void QuickEspNow::stop () { @@ -261,11 +260,12 @@ void QuickEspNow::enableTransmit (bool enable) { } } -void QuickEspNow::initComms () { +bool QuickEspNow::initComms () { if (esp_now_init ()) { DEBUG_ERROR (QESPNOW_TAG, "Failed to init ESP-NOW"); - ESP.restart (); - delay (1); +// ESP.restart (); +// delay (1); + return false; } if (wifi_if == WIFI_IF_STA) { @@ -288,6 +288,7 @@ void QuickEspNow::initComms () { os_timer_arm (&dataTPTimer, MEAS_TP_EVERY_MS, true); #endif // MEAS_TPUT + return true; } void QuickEspNow::espnowTxTask_cb (void* param) { diff --git a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.h b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.h index 39b49432c..bf648b30c 100644 --- a/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.h +++ b/lib/lib_div/QuickESPNow/src/QuickEspNow_esp8266.h @@ -127,7 +127,7 @@ protected: //uint8_t channel; bool followWiFiChannel = false; - void initComms (); + bool initComms (); static void espnowTxTask_cb (void* param); static void espnowRxTask_cb (void* param); int32_t sendEspNowMessage (comms_tx_queue_item_t* message); diff --git a/tasmota/tasmota_xdrv_driver/xdrv_77_wizmote.ino b/tasmota/tasmota_xdrv_driver/xdrv_77_wizmote.ino index 787662231..1d696985b 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_77_wizmote.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_77_wizmote.ino @@ -156,9 +156,10 @@ void EspNowInit(void) { #ifdef ESP32 // quickEspNow.setWiFiBandwidth (WIFI_IF_STA, WIFI_BW_HT20); // Only needed for ESP32 in case you need coexistence with ESP8266 in the same network #endif //ESP32 - quickEspNow.begin(); - AddLog(LOG_LEVEL_INFO, PSTR("NOW: ESP-NOW started")); - WizMote.active = true; + if (quickEspNow.begin()) { + AddLog(LOG_LEVEL_INFO, PSTR("NOW: ESP-NOW started")); + WizMote.active = true; + } } }