From 59c70f722d1bbaea7fd5201f1f86e6eaa53cc605 Mon Sep 17 00:00:00 2001 From: NP v/d Spek Date: Mon, 23 Sep 2024 22:00:13 +0200 Subject: [PATCH] some more compile result testing. Sorry all. --- esphome/components/espnow/espnow.cpp | 20 +++++++++++++++----- esphome/components/espnow/espnow.h | 6 +++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/esphome/components/espnow/espnow.cpp b/esphome/components/espnow/espnow.cpp index ce782e87c1..1266a74892 100644 --- a/esphome/components/espnow/espnow.cpp +++ b/esphome/components/espnow/espnow.cpp @@ -293,7 +293,10 @@ bool ESPNowComponent::write(const std::shared_ptr packet) { esp_err_t err = esp_now_send((uint8_t *) &mac, packet->content_bytes(), packet->get_size()); ESP_LOGVV(TAG, "S: 0x%04x.%d B: %d%s.", packet->get_sequents(), packet->attempts, this->send_queue_used(), (err == ESP_OK) ? "" : " FAILED"); - this->defer([this, packet, err]() { this->on_sent_(packet, err == ESP_OK); }); + this->defer([this, packet, err]() { + packet->reload(); + this->on_sent_(std::move(packet), err == ESP_OK); + }); return true; } @@ -310,13 +313,19 @@ void ESPNowComponent::runner() { if (!esp_now_is_peer_exist(mac)) { if (!this->auto_add_peer_) { - this->defer([this, packet]() { this->on_new_peer_(packet); }); + this->defer([this, packet]() { + packet->reload(); + this->on_new_peer_(std::move(packet)); + }); continue; } else { this->add_peer(packet->peer); } } - this->defer([this, packet]() { this->on_receive_(packet); }); + this->defer([this, packet]() { + packet->reload(); + this->on_receive_(std::move(packet)); + }); } packet = std::make_shared(); if (xQueueReceive(this->send_queue_, packet.get(), (TickType_t) 1) == pdTRUE) { @@ -366,7 +375,7 @@ void ESPNowComponent::on_data_sent(const uint8_t *mac_addr, esp_now_send_status_ ESP_LOGV(TAG, "Confirm sent (0x%04x.%d)", packet->get_sequents(), packet->attempts); global_esp_now->defer([packet]() { packet->reload(); - global_esp_now->on_sent_(packet, true); + global_esp_now->on_sent_(std::move(packet), true); auto tmp = std::make_shared(); xQueueReceive(global_esp_now->send_queue_, tmp.get(), 10 / portTICK_PERIOD_MS); global_esp_now->unlock(); @@ -374,7 +383,8 @@ void ESPNowComponent::on_data_sent(const uint8_t *mac_addr, esp_now_send_status_ return; } global_esp_now->defer([packet]() { - global_esp_now->on_sent_(packet, false); + packet->reload(); + global_esp_now->on_sent_(std::move(packet), false); global_esp_now->unlock(); }); } diff --git a/esphome/components/espnow/espnow.h b/esphome/components/espnow/espnow.h index 1ec7c6dba1..3e8ba073a0 100644 --- a/esphome/components/espnow/espnow.h +++ b/esphome/components/espnow/espnow.h @@ -184,19 +184,19 @@ class ESPNowDefaultProtocol : public ESPNowProtocol { void add_on_receive_callback(std::function)> &&callback) { this->on_receive_.add(std::move(callback)); } - void on_receive(const std::shared_ptr packet) override { this->on_receive_.call(packet); }; + void on_receive(const std::shared_ptr packet) override { this->on_receive_.call(std::move(packet)); }; void add_on_sent_callback(std::function, bool status)> &&callback) { this->on_sent_.add(std::move(callback)); } void on_sent(const std::shared_ptr packet, bool status) override { - this->on_sent_.call(packet, status); + this->on_sent_.call(std::move(packet), status); }; void add_on_peer_callback(std::function)> &&callback) { this->on_new_peer_.add(std::move(callback)); } - void on_new_peer(const std::shared_ptr packet) override { this->on_new_peer_.call(packet); }; + void on_new_peer(const std::shared_ptr packet) override { this->on_new_peer_.call(std::move(packet)); }; protected: CallbackManager, bool)> on_sent_;