mirror of
https://github.com/esphome/esphome.git
synced 2024-11-27 09:18:00 +01:00
A few esp32_ble_server/improv fixes (#2562)
This commit is contained in:
parent
adb5d27d95
commit
dad244fb7a
3 changed files with 18 additions and 15 deletions
|
@ -98,19 +98,20 @@ bool BLEServer::create_device_characteristics_() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
BLEService *BLEServer::create_service(const uint8_t *uuid, bool advertise) {
|
std::shared_ptr<BLEService> BLEServer::create_service(const uint8_t *uuid, bool advertise) {
|
||||||
return this->create_service(ESPBTUUID::from_raw(uuid), advertise);
|
return this->create_service(ESPBTUUID::from_raw(uuid), advertise);
|
||||||
}
|
}
|
||||||
BLEService *BLEServer::create_service(uint16_t uuid, bool advertise) {
|
std::shared_ptr<BLEService> BLEServer::create_service(uint16_t uuid, bool advertise) {
|
||||||
return this->create_service(ESPBTUUID::from_uint16(uuid), advertise);
|
return this->create_service(ESPBTUUID::from_uint16(uuid), advertise);
|
||||||
}
|
}
|
||||||
BLEService *BLEServer::create_service(const std::string &uuid, bool advertise) {
|
std::shared_ptr<BLEService> BLEServer::create_service(const std::string &uuid, bool advertise) {
|
||||||
return this->create_service(ESPBTUUID::from_raw(uuid), advertise);
|
return this->create_service(ESPBTUUID::from_raw(uuid), advertise);
|
||||||
}
|
}
|
||||||
BLEService *BLEServer::create_service(ESPBTUUID uuid, bool advertise, uint16_t num_handles, uint8_t inst_id) {
|
std::shared_ptr<BLEService> BLEServer::create_service(ESPBTUUID uuid, bool advertise, uint16_t num_handles,
|
||||||
|
uint8_t inst_id) {
|
||||||
ESP_LOGV(TAG, "Creating service - %s", uuid.to_string().c_str());
|
ESP_LOGV(TAG, "Creating service - %s", uuid.to_string().c_str());
|
||||||
BLEService *service = new BLEService(uuid, num_handles, inst_id); // NOLINT(cppcoreguidelines-owning-memory)
|
std::shared_ptr<BLEService> service = std::make_shared<BLEService>(uuid, num_handles, inst_id);
|
||||||
this->services_.push_back(service);
|
this->services_.emplace_back(service);
|
||||||
if (advertise) {
|
if (advertise) {
|
||||||
esp32_ble::global_ble->get_advertising()->add_service_uuid(uuid);
|
esp32_ble::global_ble->get_advertising()->add_service_uuid(uuid);
|
||||||
}
|
}
|
||||||
|
@ -149,12 +150,12 @@ void BLEServer::gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t ga
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto *service : this->services_) {
|
for (const auto &service : this->services_) {
|
||||||
service->gatts_event_handler(event, gatts_if, param);
|
service->gatts_event_handler(event, gatts_if, param);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float BLEServer::get_setup_priority() const { return setup_priority::AFTER_BLUETOOTH; }
|
float BLEServer::get_setup_priority() const { return setup_priority::AFTER_BLUETOOTH + 10; }
|
||||||
|
|
||||||
void BLEServer::dump_config() { ESP_LOGCONFIG(TAG, "ESP32 BLE Server:"); }
|
void BLEServer::dump_config() { ESP_LOGCONFIG(TAG, "ESP32 BLE Server:"); }
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "esphome/core/preferences.h"
|
#include "esphome/core/preferences.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#ifdef USE_ESP32
|
#ifdef USE_ESP32
|
||||||
|
|
||||||
|
@ -43,10 +44,11 @@ class BLEServer : public Component {
|
||||||
void set_manufacturer(const std::string &manufacturer) { this->manufacturer_ = manufacturer; }
|
void set_manufacturer(const std::string &manufacturer) { this->manufacturer_ = manufacturer; }
|
||||||
void set_model(const std::string &model) { this->model_ = model; }
|
void set_model(const std::string &model) { this->model_ = model; }
|
||||||
|
|
||||||
BLEService *create_service(const uint8_t *uuid, bool advertise = false);
|
std::shared_ptr<BLEService> create_service(const uint8_t *uuid, bool advertise = false);
|
||||||
BLEService *create_service(uint16_t uuid, bool advertise = false);
|
std::shared_ptr<BLEService> create_service(uint16_t uuid, bool advertise = false);
|
||||||
BLEService *create_service(const std::string &uuid, bool advertise = false);
|
std::shared_ptr<BLEService> create_service(const std::string &uuid, bool advertise = false);
|
||||||
BLEService *create_service(ESPBTUUID uuid, bool advertise = false, uint16_t num_handles = 15, uint8_t inst_id = 0);
|
std::shared_ptr<BLEService> create_service(ESPBTUUID uuid, bool advertise = false, uint16_t num_handles = 15,
|
||||||
|
uint8_t inst_id = 0);
|
||||||
|
|
||||||
esp_gatt_if_t get_gatts_if() { return this->gatts_if_; }
|
esp_gatt_if_t get_gatts_if() { return this->gatts_if_; }
|
||||||
uint32_t get_connected_client_count() { return this->connected_clients_; }
|
uint32_t get_connected_client_count() { return this->connected_clients_; }
|
||||||
|
@ -74,8 +76,8 @@ class BLEServer : public Component {
|
||||||
uint32_t connected_clients_{0};
|
uint32_t connected_clients_{0};
|
||||||
std::map<uint16_t, void *> clients_;
|
std::map<uint16_t, void *> clients_;
|
||||||
|
|
||||||
std::vector<BLEService *> services_;
|
std::vector<std::shared_ptr<BLEService>> services_;
|
||||||
BLEService *device_information_service_;
|
std::shared_ptr<BLEService> device_information_service_;
|
||||||
|
|
||||||
std::vector<BLEServiceComponent *> service_components_;
|
std::vector<BLEServiceComponent *> service_components_;
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ class ESP32ImprovComponent : public Component, public BLEServiceComponent {
|
||||||
std::vector<uint8_t> incoming_data_;
|
std::vector<uint8_t> incoming_data_;
|
||||||
wifi::WiFiAP connecting_sta_;
|
wifi::WiFiAP connecting_sta_;
|
||||||
|
|
||||||
BLEService *service_;
|
std::shared_ptr<BLEService> service_;
|
||||||
BLECharacteristic *status_;
|
BLECharacteristic *status_;
|
||||||
BLECharacteristic *error_;
|
BLECharacteristic *error_;
|
||||||
BLECharacteristic *rpc_;
|
BLECharacteristic *rpc_;
|
||||||
|
|
Loading…
Reference in a new issue