1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-03 18:42:23 +01:00
This commit is contained in:
J. Nick Koston
2025-09-29 18:13:46 -05:00
parent d802d70311
commit 9ff838bf35
2 changed files with 9 additions and 6 deletions

View File

@@ -7,6 +7,7 @@
#include <vector> #include <vector>
#include <span> #include <span>
#include <functional> #include <functional>
#include <memory>
#ifdef USE_ESP32 #ifdef USE_ESP32
@@ -65,11 +66,14 @@ class BLECharacteristic {
bool is_created(); bool is_created();
bool is_failed(); bool is_failed();
// Direct callback registration // Direct callback registration - only allocates when callback is set
void on_write(std::function<void(std::span<const uint8_t>, uint16_t)> &&callback) { void on_write(std::function<void(std::span<const uint8_t>, uint16_t)> &&callback) {
this->on_write_callback_ = std::move(callback); this->on_write_callback_ =
std::make_unique<std::function<void(std::span<const uint8_t>, uint16_t)>>(std::move(callback));
}
void on_read(std::function<void(uint16_t)> &&callback) {
this->on_read_callback_ = std::make_unique<std::function<void(uint16_t)>>(std::move(callback));
} }
void on_read(std::function<void(uint16_t)> &&callback) { this->on_read_callback_ = std::move(callback); }
protected: protected:
bool write_event_{false}; bool write_event_{false};
@@ -93,8 +97,8 @@ class BLECharacteristic {
void remove_client_from_notify_list_(uint16_t conn_id); void remove_client_from_notify_list_(uint16_t conn_id);
ClientNotificationEntry *find_client_in_notify_list_(uint16_t conn_id); ClientNotificationEntry *find_client_in_notify_list_(uint16_t conn_id);
std::function<void(std::span<const uint8_t>, uint16_t)> on_write_callback_{nullptr}; std::unique_ptr<std::function<void(std::span<const uint8_t>, uint16_t)>> on_write_callback_;
std::function<void(uint16_t)> on_read_callback_{nullptr}; std::unique_ptr<std::function<void(uint16_t)>> on_read_callback_;
esp_gatt_perm_t permissions_ = ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE; esp_gatt_perm_t permissions_ = ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE;

View File

@@ -1,7 +1,6 @@
#pragma once #pragma once
#include "esphome/components/esp32_ble/ble_uuid.h" #include "esphome/components/esp32_ble/ble_uuid.h"
#include "esphome/components/event_emitter/event_emitter.h"
#include "esphome/components/bytebuffer/bytebuffer.h" #include "esphome/components/bytebuffer/bytebuffer.h"
#ifdef USE_ESP32 #ifdef USE_ESP32