* @brief Handle GATT Client events */
| 648 | * @brief Handle GATT Client events |
| 649 | */ |
| 650 | void BLEClient::gattClientEventHandler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *evtParam) { |
| 651 | |
| 652 | log_d("gattClientEventHandler [esp_gatt_if: %u] ... %s", gattc_if, BLEUtils::gattClientEventTypeToString(event).c_str()); |
| 653 | |
| 654 | // it is possible to receive events from other connections while waiting for registration |
| 655 | if (m_gattc_if == ESP_GATT_IF_NONE && event != ESP_GATTC_REG_EVT) { |
| 656 | return; |
| 657 | } |
| 658 | |
| 659 | // Execute handler code based on the type of event received. |
| 660 | switch (event) { |
| 661 | |
| 662 | case ESP_GATTC_SRVC_CHG_EVT: log_i("SERVICE CHANGED"); break; |
| 663 | |
| 664 | case ESP_GATTC_CLOSE_EVT: |
| 665 | { |
| 666 | // esp_ble_gattc_app_unregister(m_appId); |
| 667 | // BLEDevice::removePeerDevice(m_gattc_if, true); |
| 668 | break; |
| 669 | } |
| 670 | |
| 671 | // |
| 672 | // ESP_GATTC_DISCONNECT_EVT |
| 673 | // |
| 674 | // disconnect: |
| 675 | // - esp_gatt_status_t status |
| 676 | // - uint16_t conn_id |
| 677 | // - esp_bd_addr_t remote_bda |
| 678 | case ESP_GATTC_DISCONNECT_EVT: |
| 679 | { |
| 680 | if (evtParam->disconnect.conn_id != getConnId()) { |
| 681 | break; |
| 682 | } |
| 683 | // If we receive a disconnect event, set the class flag that indicates that we are |
| 684 | // no longer connected. |
| 685 | bool m_wasConnected = m_isConnected; |
| 686 | m_isConnected = false; |
| 687 | esp_ble_gattc_app_unregister(m_gattc_if); |
| 688 | m_gattc_if = ESP_GATT_IF_NONE; |
| 689 | m_semaphoreOpenEvt.give(ESP_GATT_IF_NONE); |
| 690 | m_semaphoreRssiCmplEvt.give(); |
| 691 | m_semaphoreSearchCmplEvt.give(1); |
| 692 | BLEDevice::removePeerDevice(m_appId, true); |
| 693 | // Reset security state on disconnect |
| 694 | BLESecurity::resetSecurity(); |
| 695 | if (m_wasConnected && m_pClientCallbacks != nullptr) { |
| 696 | m_pClientCallbacks->onDisconnect(this); |
| 697 | } |
| 698 | break; |
| 699 | } // ESP_GATTC_DISCONNECT_EVT |
| 700 | |
| 701 | // |
| 702 | // ESP_GATTC_OPEN_EVT |
| 703 | // |
| 704 | // open: |
| 705 | // - esp_gatt_status_t status |
| 706 | // - uint16_t conn_id |
| 707 | // - esp_bd_addr_t remote_bda |