mirror of
https://github.com/esphome/esphome.git
synced 2025-10-03 18:42:23 +01:00
Merge branch 'event_emitter_cleanup' into integration
This commit is contained in:
@@ -31,7 +31,6 @@ CODEOWNERS = ["@jesserockz", "@clydebarrow", "@Rapsssito"]
|
|||||||
DEPENDENCIES = ["esp32"]
|
DEPENDENCIES = ["esp32"]
|
||||||
DOMAIN = "esp32_ble_server"
|
DOMAIN = "esp32_ble_server"
|
||||||
|
|
||||||
|
|
||||||
CONF_ADVERTISE = "advertise"
|
CONF_ADVERTISE = "advertise"
|
||||||
CONF_APPEARANCE = "appearance"
|
CONF_APPEARANCE = "appearance"
|
||||||
CONF_BROADCAST = "broadcast"
|
CONF_BROADCAST = "broadcast"
|
||||||
@@ -505,7 +504,6 @@ async def to_code_characteristic(service_var, char_conf):
|
|||||||
parse_properties(char_conf),
|
parse_properties(char_conf),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
if CONF_ON_WRITE in char_conf:
|
if CONF_ON_WRITE in char_conf:
|
||||||
on_write_conf = char_conf[CONF_ON_WRITE]
|
on_write_conf = char_conf[CONF_ON_WRITE]
|
||||||
cg.add_define("USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE")
|
cg.add_define("USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE")
|
||||||
@@ -585,7 +583,6 @@ async def to_code(config):
|
|||||||
[(cg.uint16, "id")],
|
[(cg.uint16, "id")],
|
||||||
config[CONF_ON_DISCONNECT],
|
config[CONF_ON_DISCONNECT],
|
||||||
)
|
)
|
||||||
|
|
||||||
cg.add_define("USE_ESP32_BLE_SERVER")
|
cg.add_define("USE_ESP32_BLE_SERVER")
|
||||||
cg.add_define("USE_ESP32_BLE_ADVERTISING")
|
cg.add_define("USE_ESP32_BLE_ADVERTISING")
|
||||||
add_idf_sdkconfig_option("CONFIG_BT_ENABLED", True)
|
add_idf_sdkconfig_option("CONFIG_BT_ENABLED", True)
|
||||||
|
@@ -153,8 +153,8 @@ void BLEServer::gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t ga
|
|||||||
case ESP_GATTS_CONNECT_EVT: {
|
case ESP_GATTS_CONNECT_EVT: {
|
||||||
ESP_LOGD(TAG, "BLE Client connected");
|
ESP_LOGD(TAG, "BLE Client connected");
|
||||||
this->add_client_(param->connect.conn_id);
|
this->add_client_(param->connect.conn_id);
|
||||||
if (this->on_connect_callback_) {
|
for (auto &callback : this->on_connect_callbacks_) {
|
||||||
(*this->on_connect_callback_)(param->connect.conn_id);
|
callback(param->connect.conn_id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -162,8 +162,8 @@ void BLEServer::gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t ga
|
|||||||
ESP_LOGD(TAG, "BLE Client disconnected");
|
ESP_LOGD(TAG, "BLE Client disconnected");
|
||||||
this->remove_client_(param->disconnect.conn_id);
|
this->remove_client_(param->disconnect.conn_id);
|
||||||
this->parent_->advertising_start();
|
this->parent_->advertising_start();
|
||||||
if (this->on_disconnect_callback_) {
|
for (auto &callback : this->on_disconnect_callbacks_) {
|
||||||
(*this->on_disconnect_callback_)(param->disconnect.conn_id);
|
callback(param->disconnect.conn_id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,6 @@ namespace esp32_ble_server {
|
|||||||
using namespace esp32_ble;
|
using namespace esp32_ble;
|
||||||
using namespace bytebuffer;
|
using namespace bytebuffer;
|
||||||
|
|
||||||
// Base class for BLE server
|
|
||||||
class BLEServer : public Component, public GATTsEventHandler, public BLEStatusEventHandler, public Parented<ESP32BLE> {
|
class BLEServer : public Component, public GATTsEventHandler, public BLEStatusEventHandler, public Parented<ESP32BLE> {
|
||||||
public:
|
public:
|
||||||
void setup() override;
|
void setup() override;
|
||||||
@@ -56,12 +55,12 @@ class BLEServer : public Component, public GATTsEventHandler, public BLEStatusEv
|
|||||||
|
|
||||||
void ble_before_disabled_event_handler() override;
|
void ble_before_disabled_event_handler() override;
|
||||||
|
|
||||||
// Direct callback registration - only allocates when callback is set
|
// Direct callback registration - supports multiple callbacks
|
||||||
void on_connect(std::function<void(uint16_t)> &&callback) {
|
void on_connect(std::function<void(uint16_t)> &&callback) {
|
||||||
this->on_connect_callback_ = std::make_unique<std::function<void(uint16_t)>>(std::move(callback));
|
this->on_connect_callbacks_.push_back(std::move(callback));
|
||||||
}
|
}
|
||||||
void on_disconnect(std::function<void(uint16_t)> &&callback) {
|
void on_disconnect(std::function<void(uint16_t)> &&callback) {
|
||||||
this->on_disconnect_callback_ = std::make_unique<std::function<void(uint16_t)>>(std::move(callback));
|
this->on_disconnect_callbacks_.push_back(std::move(callback));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -76,8 +75,8 @@ class BLEServer : public Component, public GATTsEventHandler, public BLEStatusEv
|
|||||||
void add_client_(uint16_t conn_id) { this->clients_.insert(conn_id); }
|
void add_client_(uint16_t conn_id) { this->clients_.insert(conn_id); }
|
||||||
void remove_client_(uint16_t conn_id) { this->clients_.erase(conn_id); }
|
void remove_client_(uint16_t conn_id) { this->clients_.erase(conn_id); }
|
||||||
|
|
||||||
std::unique_ptr<std::function<void(uint16_t)>> on_connect_callback_;
|
std::vector<std::function<void(uint16_t)>> on_connect_callbacks_;
|
||||||
std::unique_ptr<std::function<void(uint16_t)>> on_disconnect_callback_;
|
std::vector<std::function<void(uint16_t)>> on_disconnect_callbacks_;
|
||||||
|
|
||||||
std::vector<uint8_t> manufacturer_data_{};
|
std::vector<uint8_t> manufacturer_data_{};
|
||||||
esp_gatt_if_t gatts_if_{0};
|
esp_gatt_if_t gatts_if_{0};
|
||||||
|
Reference in New Issue
Block a user