mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 12:15:33 +01:00
Ble client fixes for proxy (#6596)
This commit is contained in:
parent
bdc9c66f7e
commit
2fa5846893
@ -97,9 +97,11 @@ void Alpha3::handle_geni_response_(const uint8_t *response, uint16_t length) {
|
|||||||
void Alpha3::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) {
|
void Alpha3::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case ESP_GATTC_OPEN_EVT: {
|
case ESP_GATTC_OPEN_EVT: {
|
||||||
this->response_offset_ = 0;
|
if (param->open.status == ESP_GATT_OK) {
|
||||||
this->response_length_ = 0;
|
this->response_offset_ = 0;
|
||||||
ESP_LOGI(TAG, "[%s] connection open", this->parent_->address_str().c_str());
|
this->response_length_ = 0;
|
||||||
|
ESP_LOGI(TAG, "[%s] connection open", this->parent_->address_str().c_str());
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ESP_GATTC_CONNECT_EVT: {
|
case ESP_GATTC_CONNECT_EVT: {
|
||||||
|
@ -26,7 +26,9 @@ void Am43::setup() {
|
|||||||
void Am43::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) {
|
void Am43::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case ESP_GATTC_OPEN_EVT: {
|
case ESP_GATTC_OPEN_EVT: {
|
||||||
this->logged_in_ = false;
|
if (param->open.status == ESP_GATT_OK) {
|
||||||
|
this->logged_in_ = false;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ESP_GATTC_DISCONNECT_EVT: {
|
case ESP_GATTC_DISCONNECT_EVT: {
|
||||||
|
@ -25,9 +25,13 @@ bool BluetoothConnection::gattc_event_handler(esp_gattc_cb_event_t event, esp_ga
|
|||||||
this->proxy_->send_connections_free();
|
this->proxy_->send_connections_free();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ESP_GATTC_CLOSE_EVT: {
|
||||||
|
this->proxy_->send_device_connection(this->address_, false, 0, param->close.reason);
|
||||||
|
this->set_address(0);
|
||||||
|
this->proxy_->send_connections_free();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ESP_GATTC_OPEN_EVT: {
|
case ESP_GATTC_OPEN_EVT: {
|
||||||
if (param->open.conn_id != this->conn_id_)
|
|
||||||
break;
|
|
||||||
if (param->open.status != ESP_GATT_OK && param->open.status != ESP_GATT_ALREADY_OPEN) {
|
if (param->open.status != ESP_GATT_OK && param->open.status != ESP_GATT_ALREADY_OPEN) {
|
||||||
this->proxy_->send_device_connection(this->address_, false, 0, param->open.status);
|
this->proxy_->send_device_connection(this->address_, false, 0, param->open.status);
|
||||||
this->set_address(0);
|
this->set_address(0);
|
||||||
@ -39,9 +43,8 @@ bool BluetoothConnection::gattc_event_handler(esp_gattc_cb_event_t event, esp_ga
|
|||||||
this->seen_mtu_or_services_ = false;
|
this->seen_mtu_or_services_ = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ESP_GATTC_CFG_MTU_EVT: {
|
case ESP_GATTC_CFG_MTU_EVT:
|
||||||
if (param->cfg_mtu.conn_id != this->conn_id_)
|
case ESP_GATTC_SEARCH_CMPL_EVT: {
|
||||||
break;
|
|
||||||
if (!this->seen_mtu_or_services_) {
|
if (!this->seen_mtu_or_services_) {
|
||||||
// We don't know if we will get the MTU or the services first, so
|
// We don't know if we will get the MTU or the services first, so
|
||||||
// only send the device connection true if we have already received
|
// only send the device connection true if we have already received
|
||||||
@ -53,24 +56,8 @@ bool BluetoothConnection::gattc_event_handler(esp_gattc_cb_event_t event, esp_ga
|
|||||||
this->proxy_->send_connections_free();
|
this->proxy_->send_connections_free();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ESP_GATTC_SEARCH_CMPL_EVT: {
|
|
||||||
if (param->search_cmpl.conn_id != this->conn_id_)
|
|
||||||
break;
|
|
||||||
if (!this->seen_mtu_or_services_) {
|
|
||||||
// We don't know if we will get the MTU or the services first, so
|
|
||||||
// only send the device connection true if we have already received
|
|
||||||
// the mtu.
|
|
||||||
this->seen_mtu_or_services_ = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
this->proxy_->send_device_connection(this->address_, true, this->mtu_);
|
|
||||||
this->proxy_->send_connections_free();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ESP_GATTC_READ_DESCR_EVT:
|
case ESP_GATTC_READ_DESCR_EVT:
|
||||||
case ESP_GATTC_READ_CHAR_EVT: {
|
case ESP_GATTC_READ_CHAR_EVT: {
|
||||||
if (param->read.conn_id != this->conn_id_)
|
|
||||||
break;
|
|
||||||
if (param->read.status != ESP_GATT_OK) {
|
if (param->read.status != ESP_GATT_OK) {
|
||||||
ESP_LOGW(TAG, "[%d] [%s] Error reading char/descriptor at handle 0x%2X, status=%d", this->connection_index_,
|
ESP_LOGW(TAG, "[%d] [%s] Error reading char/descriptor at handle 0x%2X, status=%d", this->connection_index_,
|
||||||
this->address_str_.c_str(), param->read.handle, param->read.status);
|
this->address_str_.c_str(), param->read.handle, param->read.status);
|
||||||
@ -89,8 +76,6 @@ bool BluetoothConnection::gattc_event_handler(esp_gattc_cb_event_t event, esp_ga
|
|||||||
}
|
}
|
||||||
case ESP_GATTC_WRITE_CHAR_EVT:
|
case ESP_GATTC_WRITE_CHAR_EVT:
|
||||||
case ESP_GATTC_WRITE_DESCR_EVT: {
|
case ESP_GATTC_WRITE_DESCR_EVT: {
|
||||||
if (param->write.conn_id != this->conn_id_)
|
|
||||||
break;
|
|
||||||
if (param->write.status != ESP_GATT_OK) {
|
if (param->write.status != ESP_GATT_OK) {
|
||||||
ESP_LOGW(TAG, "[%d] [%s] Error writing char/descriptor at handle 0x%2X, status=%d", this->connection_index_,
|
ESP_LOGW(TAG, "[%d] [%s] Error writing char/descriptor at handle 0x%2X, status=%d", this->connection_index_,
|
||||||
this->address_str_.c_str(), param->write.handle, param->write.status);
|
this->address_str_.c_str(), param->write.handle, param->write.status);
|
||||||
@ -131,8 +116,6 @@ bool BluetoothConnection::gattc_event_handler(esp_gattc_cb_event_t event, esp_ga
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ESP_GATTC_NOTIFY_EVT: {
|
case ESP_GATTC_NOTIFY_EVT: {
|
||||||
if (param->notify.conn_id != this->conn_id_)
|
|
||||||
break;
|
|
||||||
ESP_LOGV(TAG, "[%d] [%s] ESP_GATTC_NOTIFY_EVT: handle=0x%2X", this->connection_index_, this->address_str_.c_str(),
|
ESP_LOGV(TAG, "[%d] [%s] ESP_GATTC_NOTIFY_EVT: handle=0x%2X", this->connection_index_, this->address_str_.c_str(),
|
||||||
param->notify.handle);
|
param->notify.handle);
|
||||||
api::BluetoothGATTNotifyDataResponse resp;
|
api::BluetoothGATTNotifyDataResponse resp;
|
||||||
|
@ -142,7 +142,7 @@ bool BLEClientBase::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_
|
|||||||
ESP_LOGW(TAG, "[%d] [%s] Connection failed, status=%d", this->connection_index_, this->address_str_.c_str(),
|
ESP_LOGW(TAG, "[%d] [%s] Connection failed, status=%d", this->connection_index_, this->address_str_.c_str(),
|
||||||
param->open.status);
|
param->open.status);
|
||||||
this->set_state(espbt::ClientState::IDLE);
|
this->set_state(espbt::ClientState::IDLE);
|
||||||
return false;
|
break;
|
||||||
}
|
}
|
||||||
auto ret = esp_ble_gattc_send_mtu_req(this->gattc_if_, param->open.conn_id);
|
auto ret = esp_ble_gattc_send_mtu_req(this->gattc_if_, param->open.conn_id);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -24,8 +24,10 @@ void PVVXDisplay::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t
|
|||||||
esp_ble_gattc_cb_param_t *param) {
|
esp_ble_gattc_cb_param_t *param) {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case ESP_GATTC_OPEN_EVT:
|
case ESP_GATTC_OPEN_EVT:
|
||||||
ESP_LOGV(TAG, "[%s] Connected successfully!", this->parent_->address_str().c_str());
|
if (param->open.status == ESP_GATT_OK) {
|
||||||
this->delayed_disconnect_();
|
ESP_LOGV(TAG, "[%s] Connected successfully!", this->parent_->address_str().c_str());
|
||||||
|
this->delayed_disconnect_();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case ESP_GATTC_DISCONNECT_EVT:
|
case ESP_GATTC_DISCONNECT_EVT:
|
||||||
ESP_LOGV(TAG, "[%s] Disconnected", this->parent_->address_str().c_str());
|
ESP_LOGV(TAG, "[%s] Disconnected", this->parent_->address_str().c_str());
|
||||||
|
Loading…
Reference in New Issue
Block a user