mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Merge branch 'remove_searching' into integration
This commit is contained in:
		| @@ -183,6 +183,12 @@ void BluetoothProxy::bluetooth_device_request(const api::BluetoothDeviceRequest | |||||||
|         this->send_device_connection(msg.address, false); |         this->send_device_connection(msg.address, false); | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
|  |       if (!msg.has_address_type) { | ||||||
|  |         ESP_LOGE(TAG, "[%d] [%s] Missing address type in connect request", connection->get_connection_index(), | ||||||
|  |                  connection->address_str().c_str()); | ||||||
|  |         this->send_device_connection(msg.address, false); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|       if (connection->state() == espbt::ClientState::CONNECTED || |       if (connection->state() == espbt::ClientState::CONNECTED || | ||||||
|           connection->state() == espbt::ClientState::ESTABLISHED) { |           connection->state() == espbt::ClientState::ESTABLISHED) { | ||||||
|         this->log_connection_request_ignored_(connection, connection->state()); |         this->log_connection_request_ignored_(connection, connection->state()); | ||||||
| @@ -209,13 +215,9 @@ void BluetoothProxy::bluetooth_device_request(const api::BluetoothDeviceRequest | |||||||
|         connection->set_connection_type(espbt::ConnectionType::V3_WITHOUT_CACHE); |         connection->set_connection_type(espbt::ConnectionType::V3_WITHOUT_CACHE); | ||||||
|         this->log_connection_info_(connection, "v3 without cache"); |         this->log_connection_info_(connection, "v3 without cache"); | ||||||
|       } |       } | ||||||
|       if (msg.has_address_type) { |       uint64_to_bd_addr(msg.address, connection->remote_bda_); | ||||||
|         uint64_to_bd_addr(msg.address, connection->remote_bda_); |       connection->set_remote_addr_type(static_cast<esp_ble_addr_type_t>(msg.address_type)); | ||||||
|         connection->set_remote_addr_type(static_cast<esp_ble_addr_type_t>(msg.address_type)); |       connection->set_state(espbt::ClientState::DISCOVERED); | ||||||
|         connection->set_state(espbt::ClientState::DISCOVERED); |  | ||||||
|       } else { |  | ||||||
|         connection->set_state(espbt::ClientState::SEARCHING); |  | ||||||
|       } |  | ||||||
|       this->send_connections_free(); |       this->send_connections_free(); | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ bool BLEClientBase::parse_device(const espbt::ESPBTDevice &device) { | |||||||
|     return false; |     return false; | ||||||
|   if (this->address_ == 0 || device.address_uint64() != this->address_) |   if (this->address_ == 0 || device.address_uint64() != this->address_) | ||||||
|     return false; |     return false; | ||||||
|   if (this->state_ != espbt::ClientState::IDLE && this->state_ != espbt::ClientState::SEARCHING) |   if (this->state_ != espbt::ClientState::IDLE) | ||||||
|     return false; |     return false; | ||||||
|  |  | ||||||
|   this->log_event_("Found device"); |   this->log_event_("Found device"); | ||||||
| @@ -190,8 +190,7 @@ void BLEClientBase::unconditional_disconnect() { | |||||||
|     this->log_gattc_warning_("esp_ble_gattc_close", err); |     this->log_gattc_warning_("esp_ble_gattc_close", err); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (this->state_ == espbt::ClientState::SEARCHING || this->state_ == espbt::ClientState::READY_TO_CONNECT || |   if (this->state_ == espbt::ClientState::READY_TO_CONNECT || this->state_ == espbt::ClientState::DISCOVERED) { | ||||||
|       this->state_ == espbt::ClientState::DISCOVERED) { |  | ||||||
|     this->set_address(0); |     this->set_address(0); | ||||||
|     this->set_state(espbt::ClientState::IDLE); |     this->set_state(espbt::ClientState::IDLE); | ||||||
|   } else { |   } else { | ||||||
|   | |||||||
| @@ -49,8 +49,6 @@ const char *client_state_to_string(ClientState state) { | |||||||
|       return "DISCONNECTING"; |       return "DISCONNECTING"; | ||||||
|     case ClientState::IDLE: |     case ClientState::IDLE: | ||||||
|       return "IDLE"; |       return "IDLE"; | ||||||
|     case ClientState::SEARCHING: |  | ||||||
|       return "SEARCHING"; |  | ||||||
|     case ClientState::DISCOVERED: |     case ClientState::DISCOVERED: | ||||||
|       return "DISCOVERED"; |       return "DISCOVERED"; | ||||||
|     case ClientState::READY_TO_CONNECT: |     case ClientState::READY_TO_CONNECT: | ||||||
| @@ -136,9 +134,8 @@ void ESP32BLETracker::loop() { | |||||||
|   ClientStateCounts counts = this->count_client_states_(); |   ClientStateCounts counts = this->count_client_states_(); | ||||||
|   if (counts != this->client_state_counts_) { |   if (counts != this->client_state_counts_) { | ||||||
|     this->client_state_counts_ = counts; |     this->client_state_counts_ = counts; | ||||||
|     ESP_LOGD(TAG, "connecting: %d, discovered: %d, searching: %d, disconnecting: %d", |     ESP_LOGD(TAG, "connecting: %d, discovered: %d, disconnecting: %d", this->client_state_counts_.connecting, | ||||||
|              this->client_state_counts_.connecting, this->client_state_counts_.discovered, |              this->client_state_counts_.discovered, this->client_state_counts_.disconnecting); | ||||||
|              this->client_state_counts_.searching, this->client_state_counts_.disconnecting); |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (this->scanner_state_ == ScannerState::FAILED || |   if (this->scanner_state_ == ScannerState::FAILED || | ||||||
| @@ -158,10 +155,8 @@ void ESP32BLETracker::loop() { | |||||||
|     https://github.com/espressif/esp-idf/issues/6688 |     https://github.com/espressif/esp-idf/issues/6688 | ||||||
|  |  | ||||||
|   */ |   */ | ||||||
|   bool promote_to_connecting = counts.discovered && !counts.searching && !counts.connecting; |  | ||||||
|  |  | ||||||
|   if (this->scanner_state_ == ScannerState::IDLE && !counts.connecting && !counts.disconnecting && |   if (this->scanner_state_ == ScannerState::IDLE && !counts.connecting && !counts.disconnecting && !counts.discovered) { | ||||||
|       !promote_to_connecting) { |  | ||||||
| #ifdef USE_ESP32_BLE_SOFTWARE_COEXISTENCE | #ifdef USE_ESP32_BLE_SOFTWARE_COEXISTENCE | ||||||
|     this->update_coex_preference_(false); |     this->update_coex_preference_(false); | ||||||
| #endif | #endif | ||||||
| @@ -170,12 +165,11 @@ void ESP32BLETracker::loop() { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   // If there is a discovered client and no connecting |   // If there is a discovered client and no connecting | ||||||
|   // clients and no clients using the scanner to search for |   // clients, then promote the discovered client to ready to connect. | ||||||
|   // devices, then promote the discovered client to ready to connect. |  | ||||||
|   // We check both RUNNING and IDLE states because: |   // We check both RUNNING and IDLE states because: | ||||||
|   // - RUNNING: gap_scan_event_handler initiates stop_scan_() but promotion can happen immediately |   // - RUNNING: gap_scan_event_handler initiates stop_scan_() but promotion can happen immediately | ||||||
|   // - IDLE: Scanner has already stopped (naturally or by gap_scan_event_handler) |   // - IDLE: Scanner has already stopped (naturally or by gap_scan_event_handler) | ||||||
|   if (promote_to_connecting && |   if (counts.discovered && !counts.connecting && | ||||||
|       (this->scanner_state_ == ScannerState::RUNNING || this->scanner_state_ == ScannerState::IDLE)) { |       (this->scanner_state_ == ScannerState::RUNNING || this->scanner_state_ == ScannerState::IDLE)) { | ||||||
|     this->try_promote_discovered_clients_(); |     this->try_promote_discovered_clients_(); | ||||||
|   } |   } | ||||||
| @@ -633,9 +627,8 @@ void ESP32BLETracker::dump_config() { | |||||||
|                 this->scan_duration_, this->scan_interval_ * 0.625f, this->scan_window_ * 0.625f, |                 this->scan_duration_, this->scan_interval_ * 0.625f, this->scan_window_ * 0.625f, | ||||||
|                 this->scan_active_ ? "ACTIVE" : "PASSIVE", YESNO(this->scan_continuous_)); |                 this->scan_active_ ? "ACTIVE" : "PASSIVE", YESNO(this->scan_continuous_)); | ||||||
|   ESP_LOGCONFIG(TAG, "  Scanner State: %s", this->scanner_state_to_string_(this->scanner_state_)); |   ESP_LOGCONFIG(TAG, "  Scanner State: %s", this->scanner_state_to_string_(this->scanner_state_)); | ||||||
|   ESP_LOGCONFIG(TAG, "  Connecting: %d, discovered: %d, searching: %d, disconnecting: %d", |   ESP_LOGCONFIG(TAG, "  Connecting: %d, discovered: %d, disconnecting: %d", this->client_state_counts_.connecting, | ||||||
|                 this->client_state_counts_.connecting, this->client_state_counts_.discovered, |                 this->client_state_counts_.discovered, this->client_state_counts_.disconnecting); | ||||||
|                 this->client_state_counts_.searching, this->client_state_counts_.disconnecting); |  | ||||||
|   if (this->scan_start_fail_count_) { |   if (this->scan_start_fail_count_) { | ||||||
|     ESP_LOGCONFIG(TAG, "  Scan Start Fail Count: %d", this->scan_start_fail_count_); |     ESP_LOGCONFIG(TAG, "  Scan Start Fail Count: %d", this->scan_start_fail_count_); | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -141,12 +141,10 @@ class ESPBTDeviceListener { | |||||||
| struct ClientStateCounts { | struct ClientStateCounts { | ||||||
|   uint8_t connecting = 0; |   uint8_t connecting = 0; | ||||||
|   uint8_t discovered = 0; |   uint8_t discovered = 0; | ||||||
|   uint8_t searching = 0; |  | ||||||
|   uint8_t disconnecting = 0; |   uint8_t disconnecting = 0; | ||||||
|  |  | ||||||
|   bool operator==(const ClientStateCounts &other) const { |   bool operator==(const ClientStateCounts &other) const { | ||||||
|     return connecting == other.connecting && discovered == other.discovered && searching == other.searching && |     return connecting == other.connecting && discovered == other.discovered && disconnecting == other.disconnecting; | ||||||
|            disconnecting == other.disconnecting; |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   bool operator!=(const ClientStateCounts &other) const { return !(*this == other); } |   bool operator!=(const ClientStateCounts &other) const { return !(*this == other); } | ||||||
| @@ -159,8 +157,6 @@ enum class ClientState : uint8_t { | |||||||
|   DISCONNECTING, |   DISCONNECTING, | ||||||
|   // Connection is idle, no device detected. |   // Connection is idle, no device detected. | ||||||
|   IDLE, |   IDLE, | ||||||
|   // Searching for device. |  | ||||||
|   SEARCHING, |  | ||||||
|   // Device advertisement found. |   // Device advertisement found. | ||||||
|   DISCOVERED, |   DISCOVERED, | ||||||
|   // Device is discovered and the scanner is stopped |   // Device is discovered and the scanner is stopped | ||||||
| @@ -321,9 +317,6 @@ class ESP32BLETracker : public Component, | |||||||
|         case ClientState::DISCOVERED: |         case ClientState::DISCOVERED: | ||||||
|           counts.discovered++; |           counts.discovered++; | ||||||
|           break; |           break; | ||||||
|         case ClientState::SEARCHING: |  | ||||||
|           counts.searching++; |  | ||||||
|           break; |  | ||||||
|         case ClientState::CONNECTING: |         case ClientState::CONNECTING: | ||||||
|         case ClientState::READY_TO_CONNECT: |         case ClientState::READY_TO_CONNECT: | ||||||
|           counts.connecting++; |           counts.connecting++; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user