mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	A few esp32_ble_server/improv fixes (#2562)
This commit is contained in:
		| @@ -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_; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user