From cbd76cec958cffc82cb626238c2ee5b924b12b4a Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Tue, 13 Jun 2023 16:25:23 +0200 Subject: [PATCH] gatt_client: add eatt state --- src/ble/gatt_client.c | 6 ++++++ src/ble/gatt_client.h | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/ble/gatt_client.c b/src/ble/gatt_client.c index 6a134c865..b0a96a4ef 100644 --- a/src/ble/gatt_client.c +++ b/src/ble/gatt_client.c @@ -189,6 +189,9 @@ static uint8_t gatt_client_provide_context_for_handle(hci_con_handle_t con_handl gatt_client->mtu_state = MTU_AUTO_EXCHANGE_DISABLED; } gatt_client->gatt_client_state = P_READY; +#ifdef ENABLE_GATT_OVER_EATT + gatt_client->eatt_state = GATT_CLIENT_EATT_IDLE; +#endif btstack_linked_list_add(&gatt_client_connections, (btstack_linked_item_t*)gatt_client); // get unenhanced att bearer state @@ -2849,6 +2852,9 @@ uint8_t gatt_client_classic_connect(btstack_packet_handler_t callback, bd_addr_t gatt_client->sdp_query_request.callback = &gatt_client_classic_sdp_start; gatt_client->sdp_query_request.context = gatt_client; gatt_client->callback = callback; +#ifdef ENABLE_GATT_OVER_EATT + gatt_client->eatt_state = GATT_CLIENT_EATT_IDLE; +#endif btstack_linked_list_add(&gatt_client_connections, (btstack_linked_item_t*)gatt_client); sdp_client_register_query_callback(&gatt_client->sdp_query_request); return ERROR_CODE_SUCCESS; diff --git a/src/ble/gatt_client.h b/src/ble/gatt_client.h index 704ecbad4..4658932d1 100644 --- a/src/ble/gatt_client.h +++ b/src/ble/gatt_client.h @@ -144,6 +144,17 @@ typedef enum{ MTU_AUTO_EXCHANGE_DISABLED } gatt_client_mtu_t; +#ifdef ENABLE_GATT_OVER_EATT +typedef enum { + GATT_CLIENT_EATT_IDLE, + GATT_CLIENT_EATT_W2_READ_SERVER_SUPPORTED_FEATURES, + GATT_CLIENT_EATT_W4_READ_SERVER_SUPPORTED_FEATURES, + GATT_CLIENT_EATT_W2_FIND_CLIENT_SUPPORTED_FEATURES, + GATT_CLIENT_EATT_W4_WRITE_ClIENT_SUPPORTED_FEATURES, + GATT_CLIENT_EATT_READY, +} gatt_client_eatt_state_t; +#endif + typedef struct gatt_client{ btstack_linked_item_t item; // TODO: rename gatt_client_state -> state @@ -172,6 +183,11 @@ typedef struct gatt_client{ btstack_context_callback_registration_t sdp_query_request; #endif +#ifdef ENABLE_GATT_OVER_EATT + gatt_client_eatt_state_t eatt_state; + uint16_t gatt_client_supported_features_handle; +#endif + uint16_t mtu; gatt_client_mtu_t mtu_state;