diff --git a/esphome/components/espnow/espnow.cpp b/esphome/components/espnow/espnow.cpp index 0b03177520..364778bb56 100644 --- a/esphome/components/espnow/espnow.cpp +++ b/esphome/components/espnow/espnow.cpp @@ -216,21 +216,21 @@ ESPNowProtocol *ESPNowComponent::get_protocol_(uint32_t protocol) { return this->protocols_[protocol]; } -void ESPNowComponent::on_receive_(const std::shared_ptr packet) { +void ESPNowComponent::on_receive_(const std::shared_ptr &packet) { ESPNowProtocol *protocol = this->get_protocol_(packet->get_protocol()); if (protocol != nullptr) { protocol->on_receive(packet); } } -void ESPNowComponent::on_sent_(const std::shared_ptr packet, bool status) { +void ESPNowComponent::on_sent_(const std::shared_ptr &packet, bool status) { ESPNowProtocol *protocol = this->get_protocol_(packet->get_protocol()); if (protocol != nullptr) { protocol->on_sent(packet, status); } } -void ESPNowComponent::on_new_peer_(const std::shared_ptr packet) { +void ESPNowComponent::on_new_peer_(const std::shared_ptr &packet) { ESPNowProtocol *protocol = this->get_protocol_(packet->get_protocol()); if (protocol != nullptr) { protocol->on_new_peer(packet); @@ -273,7 +273,7 @@ void ESPNowComponent::on_data_received(const uint8_t *addr, const uint8_t *data, } } -bool ESPNowComponent::write(const std::shared_ptr packet) { +bool ESPNowComponent::write(const std::shared_ptr &packet) { uint8_t *mac = packet->peer_as_bytes(); this->show_packet("Write", *packet); if (this->is_failed()) { @@ -295,11 +295,9 @@ bool ESPNowComponent::write(const std::shared_ptr packet) { 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([=, packet, err]() { this->on_sent_(std::move(packet), err == ESP_OK); }); - this->defer([this, packet, err]() { packet->reload(); - this->on_sent_(std::move(packet), err == ESP_OK); + this->on_sent_(packet, err == ESP_OK); }); return true; } @@ -319,7 +317,7 @@ void ESPNowComponent::runner() { if (!this->auto_add_peer_) { this->defer([this, packet]() { packet->reload(); - this->on_new_peer_(std::move(packet)); + this->on_new_peer_(packet); }); continue; } else { @@ -328,7 +326,7 @@ void ESPNowComponent::runner() { } this->defer([this, packet]() { packet->reload(); - this->on_receive_(std::move(packet)); + this->on_receive_(packet); }); } packet = std::make_shared(); @@ -379,7 +377,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_(std::move(packet), true); + global_esp_now->on_sent_(packet, true); auto tmp = std::make_shared(); xQueueReceive(global_esp_now->send_queue_, tmp.get(), 10 / portTICK_PERIOD_MS); global_esp_now->unlock(); @@ -388,7 +386,7 @@ void ESPNowComponent::on_data_sent(const uint8_t *mac_addr, esp_now_send_status_ } global_esp_now->defer([packet]() { packet->reload(); - global_esp_now->on_sent_(std::move(packet), false); + global_esp_now->on_sent_(packet, false); global_esp_now->unlock(); }); } diff --git a/esphome/components/espnow/espnow.h b/esphome/components/espnow/espnow.h index 74c4d8cae8..86f61f40fd 100644 --- a/esphome/components/espnow/espnow.h +++ b/esphome/components/espnow/espnow.h @@ -196,7 +196,7 @@ class ESPNowDefaultProtocol : public ESPNowProtocol { 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(std::move(packet)); }; + void on_new_peer(const std::shared_ptr packet) override { this->on_new_peer_.call(packet); }; protected: CallbackManager, bool)> on_sent_; @@ -228,7 +228,7 @@ class ESPNowComponent : public Component { void runner(); - bool write(const std::shared_ptr packet); + bool write(const std::shared_ptr &packet); void register_protocol(ESPNowProtocol *protocol) { protocol->set_parent(this); @@ -261,9 +261,9 @@ class ESPNowComponent : public Component { bool use_sent_check_{true}; bool lock_{false}; - void on_receive_(const std::shared_ptr packet); - void on_sent_(const std::shared_ptr packet, bool status); - void on_new_peer_(const std::shared_ptr packet); + void on_receive_(const std::shared_ptr &packet); + void on_sent_(const std::shared_ptr &packet, bool status); + void on_new_peer_(const std::shared_ptr &packet); QueueHandle_t receive_queue_{}; QueueHandle_t send_queue_{};