mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-29 22:24:26 +00:00 
			
		
		
		
	Merge branch 'cond_compile_service_char_desc_cond' into integration
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
| #include "esphome/core/log.h" | ||||
|  | ||||
| #ifdef USE_ESP32 | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|  | ||||
| namespace esphome::esp32_ble_client { | ||||
|  | ||||
| @@ -94,4 +95,5 @@ esp_err_t BLECharacteristic::write_value(uint8_t *new_val, int16_t new_val_size) | ||||
|  | ||||
| }  // namespace esphome::esp32_ble_client | ||||
|  | ||||
| #endif  // USE_ESP32_BLE_DEVICE | ||||
| #endif  // USE_ESP32 | ||||
|   | ||||
| @@ -1,6 +1,9 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "esphome/core/defines.h" | ||||
|  | ||||
| #ifdef USE_ESP32 | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|  | ||||
| #include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" | ||||
|  | ||||
| @@ -34,4 +37,5 @@ class BLECharacteristic { | ||||
|  | ||||
| }  // namespace esphome::esp32_ble_client | ||||
|  | ||||
| #endif  // USE_ESP32_BLE_DEVICE | ||||
| #endif  // USE_ESP32 | ||||
|   | ||||
| @@ -209,9 +209,11 @@ void BLEClientBase::unconditional_disconnect() { | ||||
| } | ||||
|  | ||||
| void BLEClientBase::release_services() { | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|   for (auto &svc : this->services_) | ||||
|     delete svc;  // NOLINT(cppcoreguidelines-owning-memory) | ||||
|   this->services_.clear(); | ||||
| #endif | ||||
| #ifndef CONFIG_BT_GATTC_CACHE_NVS_FLASH | ||||
|   esp_ble_gattc_cache_clean(this->remote_bda_); | ||||
| #endif | ||||
| @@ -380,12 +382,14 @@ bool BLEClientBase::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_ | ||||
|         // as they use the ESP APIs to get services. | ||||
|         break; | ||||
|       } | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|       BLEService *ble_service = new BLEService();  // NOLINT(cppcoreguidelines-owning-memory) | ||||
|       ble_service->uuid = espbt::ESPBTUUID::from_uuid(param->search_res.srvc_id.uuid); | ||||
|       ble_service->start_handle = param->search_res.start_handle; | ||||
|       ble_service->end_handle = param->search_res.end_handle; | ||||
|       ble_service->client = this; | ||||
|       this->services_.push_back(ble_service); | ||||
| #endif | ||||
|       break; | ||||
|     } | ||||
|     case ESP_GATTC_SEARCH_CMPL_EVT: { | ||||
| @@ -398,12 +402,14 @@ bool BLEClientBase::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_ | ||||
|           this->connection_type_ == espbt::ConnectionType::V3_WITH_CACHE) { | ||||
|         this->restore_medium_conn_params_(); | ||||
|       } else { | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|         for (auto &svc : this->services_) { | ||||
|           ESP_LOGV(TAG, "[%d] [%s] Service UUID: %s", this->connection_index_, this->address_str_.c_str(), | ||||
|                    svc->uuid.to_string().c_str()); | ||||
|           ESP_LOGV(TAG, "[%d] [%s]  start_handle: 0x%x  end_handle: 0x%x", this->connection_index_, | ||||
|                    this->address_str_.c_str(), svc->start_handle, svc->end_handle); | ||||
|         } | ||||
| #endif | ||||
|       } | ||||
|       ESP_LOGI(TAG, "[%d] [%s] Service discovery complete", this->connection_index_, this->address_str_.c_str()); | ||||
|       this->state_ = espbt::ClientState::ESTABLISHED; | ||||
| @@ -582,6 +588,7 @@ float BLEClientBase::parse_char_value(uint8_t *value, uint16_t length) { | ||||
|   return NAN; | ||||
| } | ||||
|  | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
| BLEService *BLEClientBase::get_service(espbt::ESPBTUUID uuid) { | ||||
|   for (auto *svc : this->services_) { | ||||
|     if (svc->uuid == uuid) | ||||
| @@ -658,6 +665,7 @@ BLEDescriptor *BLEClientBase::get_descriptor(uint16_t handle) { | ||||
|   } | ||||
|   return nullptr; | ||||
| } | ||||
| #endif  // USE_ESP32_BLE_DEVICE | ||||
|  | ||||
| }  // namespace esphome::esp32_ble_client | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,9 @@ | ||||
| #include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" | ||||
| #include "esphome/core/component.h" | ||||
|  | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
| #include "ble_service.h" | ||||
| #endif | ||||
|  | ||||
| #include <array> | ||||
| #include <string> | ||||
| @@ -67,6 +69,7 @@ class BLEClientBase : public espbt::ESPBTClient, public Component { | ||||
|   } | ||||
|   const std::string &address_str() const { return this->address_str_; } | ||||
|  | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|   BLEService *get_service(espbt::ESPBTUUID uuid); | ||||
|   BLEService *get_service(uint16_t uuid); | ||||
|   BLECharacteristic *get_characteristic(espbt::ESPBTUUID service, espbt::ESPBTUUID chr); | ||||
| @@ -77,6 +80,7 @@ class BLEClientBase : public espbt::ESPBTClient, public Component { | ||||
|   BLEDescriptor *get_descriptor(uint16_t handle); | ||||
|   // Get the configuration descriptor for the given characteristic handle. | ||||
|   BLEDescriptor *get_config_descriptor(uint16_t handle); | ||||
| #endif | ||||
|  | ||||
|   float parse_char_value(uint8_t *value, uint16_t length); | ||||
|  | ||||
| @@ -103,7 +107,9 @@ class BLEClientBase : public espbt::ESPBTClient, public Component { | ||||
|  | ||||
|   // Group 2: Container types (grouped for memory optimization) | ||||
|   std::string address_str_{}; | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|   std::vector<BLEService *> services_; | ||||
| #endif | ||||
|  | ||||
|   // Group 3: 4-byte types | ||||
|   int gattc_if_; | ||||
|   | ||||
| @@ -1,6 +1,9 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "esphome/core/defines.h" | ||||
|  | ||||
| #ifdef USE_ESP32 | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|  | ||||
| #include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" | ||||
|  | ||||
| @@ -20,4 +23,5 @@ class BLEDescriptor { | ||||
|  | ||||
| }  // namespace esphome::esp32_ble_client | ||||
|  | ||||
| #endif  // USE_ESP32_BLE_DEVICE | ||||
| #endif  // USE_ESP32 | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
| #include "esphome/core/log.h" | ||||
|  | ||||
| #ifdef USE_ESP32 | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|  | ||||
| namespace esphome::esp32_ble_client { | ||||
|  | ||||
| @@ -72,4 +73,5 @@ void BLEService::parse_characteristics() { | ||||
|  | ||||
| }  // namespace esphome::esp32_ble_client | ||||
|  | ||||
| #endif  // USE_ESP32_BLE_DEVICE | ||||
| #endif  // USE_ESP32 | ||||
|   | ||||
| @@ -1,6 +1,9 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "esphome/core/defines.h" | ||||
|  | ||||
| #ifdef USE_ESP32 | ||||
| #ifdef USE_ESP32_BLE_DEVICE | ||||
|  | ||||
| #include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" | ||||
|  | ||||
| @@ -31,4 +34,5 @@ class BLEService { | ||||
|  | ||||
| }  // namespace esphome::esp32_ble_client | ||||
|  | ||||
| #endif  // USE_ESP32_BLE_DEVICE | ||||
| #endif  // USE_ESP32 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user