From d5e78e79d32ec5513b902815b348604e6f91f4db Mon Sep 17 00:00:00 2001 From: zhiweijian Date: Wed, 12 Dec 2018 21:40:31 +0800 Subject: [PATCH] Component/bt: add api to clean gattc cache --- components/bt/bluedroid/api/esp_gattc_api.c | 15 +++++++++ .../bluedroid/api/include/api/esp_gattc_api.h | 30 +++++++++++++---- .../bt/bluedroid/bta/gatt/bta_gattc_act.c | 32 ++++++++++++++++++- .../bt/bluedroid/bta/gatt/bta_gattc_api.c | 28 ++++++++++++++++ .../bt/bluedroid/bta/gatt/bta_gattc_cache.c | 5 +++ .../bt/bluedroid/bta/gatt/bta_gattc_main.c | 9 ++++++ .../bta/gatt/include/bta_gattc_int.h | 2 ++ .../bluedroid/bta/include/bta/bta_gatt_api.h | 22 +++++++++++-- .../btc/profile/std/gatt/btc_gattc.c | 9 ++++++ .../btc/profile/std/include/btc_gattc.h | 5 +++ .../bluetooth/gatt_client/main/gattc_demo.c | 9 +++++- 11 files changed, 156 insertions(+), 10 deletions(-) diff --git a/components/bt/bluedroid/api/esp_gattc_api.c b/components/bt/bluedroid/api/esp_gattc_api.c index 578916e5f2..c8da7bcec1 100644 --- a/components/bt/bluedroid/api/esp_gattc_api.c +++ b/components/bt/bluedroid/api/esp_gattc_api.c @@ -591,6 +591,21 @@ esp_err_t esp_ble_gattc_cache_refresh(esp_bd_addr_t remote_bda) return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); } +esp_err_t esp_ble_gattc_cache_clean(esp_bd_addr_t remote_bda) +{ + btc_msg_t msg; + btc_ble_gattc_args_t arg; + + ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED); + + msg.sig = BTC_SIG_API_CALL; + msg.pid = BTC_PID_GATTC; + msg.act = BTC_GATTC_ACT_CACHE_CLEAN; + memcpy(arg.cache_clean.remote_bda, remote_bda, sizeof(esp_bd_addr_t)); + + return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL); +} + esp_err_t esp_ble_gattc_cache_assoc(esp_gatt_if_t gattc_if, esp_bd_addr_t src_addr, esp_bd_addr_t assoc_addr, bool is_assoc) { btc_msg_t msg; diff --git a/components/bt/bluedroid/api/include/api/esp_gattc_api.h b/components/bt/bluedroid/api/include/api/esp_gattc_api.h index b494bcfd39..d18b2e4c4e 100644 --- a/components/bt/bluedroid/api/include/api/esp_gattc_api.h +++ b/components/bt/bluedroid/api/include/api/esp_gattc_api.h @@ -67,6 +67,7 @@ typedef enum { ESP_GATTC_QUEUE_FULL_EVT = 43, /*!< When the gattc command queue full, the event comes */ ESP_GATTC_SET_ASSOC_EVT = 44, /*!< When the ble gattc set the associated address complete, the event comes */ ESP_GATTC_GET_ADDR_LIST_EVT = 45, /*!< When the ble get gattc address list in cache finish, the event comes */ + ESP_GATTC_DIS_SRVC_CMPL_EVT = 46, /*!< When the ble discover service complete, the event comes */ } esp_gattc_cb_event_t; @@ -243,6 +244,14 @@ typedef union { bool is_full; /*!< The gattc command queue is full or not */ } queue_full; /*!< Gatt client callback param of ESP_GATTC_QUEUE_FULL_EVT */ + /** + * @brief ESP_GATTC_DIS_SRVC_CMPL_EVT + */ + struct gattc_dis_srvc_cmpl_evt_param { + esp_gatt_status_t status; /*!< Operation status */ + uint16_t conn_id; /*!< Connection id */ + } dis_srvc_cmpl; /*!< Gatt client callback param of ESP_GATTC_DIS_SRVC_CMPL_EVT */ + } esp_ble_gattc_cb_param_t; /*!< GATT client callback parameter union type */ /** @@ -348,10 +357,8 @@ esp_err_t esp_ble_gattc_send_mtu_req (esp_gatt_if_t gattc_if, uint16_t conn_id); /** * @brief This function is called to get service from local cache. - * If it does not exist, request a GATT service discovery - * on a GATT server. This function report service search result - * by a callback event, and followed by a service search complete - * event. + * This function report service search result by a callback + * event, and followed by a service search complete event. * * @param[in] gattc_if: Gatt client access interface. * @param[in] conn_id: connection ID. @@ -792,7 +799,8 @@ esp_err_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gattc_if, /** -* @brief Refresh the server cache store in the gattc stack of the remote device +* @brief Refresh the server cache store in the gattc stack of the remote device. If +* the device is connected, this API will restart the discovery of service information of the remote device * * @param[in] remote_bda: remote device BD address. * @@ -836,7 +844,17 @@ esp_err_t esp_ble_gattc_cache_assoc(esp_gatt_if_t gattc_if, esp_bd_addr_t src_ad */ esp_err_t esp_ble_gattc_cache_get_addr_list(esp_gatt_if_t gattc_if); - +/** +* @brief Clean the service cache of this device in the gattc stack, +* +* @param[in] remote_bda: remote device BD address. +* +* @return +* - ESP_OK: success +* - other: failed +* +*/ +esp_err_t esp_ble_gattc_cache_clean(esp_bd_addr_t remote_bda); #ifdef __cplusplus } diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_act.c b/components/bt/bluedroid/bta/gatt/bta_gattc_act.c index 690b9c4efc..36b3fc8c11 100644 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_act.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_act.c @@ -980,6 +980,11 @@ void bta_gattc_start_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data) if (p_clcb->status != BTA_GATT_OK) { APPL_TRACE_ERROR("discovery on server failed"); bta_gattc_reset_discover_st(p_clcb->p_srcb, p_clcb->status); + //discover service complete, trigger callback + tBTA_GATTC cb_data; + cb_data.dis_cmpl.status = p_clcb->status; + cb_data.dis_cmpl.conn_id = p_clcb->bta_conn_id; + ( *p_clcb->p_rcb->p_cback)(BTA_GATTC_DIS_SRVC_CMPL_EVT, &cb_data); } else { p_clcb->disc_active = TRUE; } @@ -1725,7 +1730,10 @@ void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) } } if (found) { - bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); + // If the device is discovering services, return + if(p_clcb->state == BTA_GATTC_CONN_ST) { + bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL); + } return; } } @@ -1815,6 +1823,28 @@ void bta_gattc_process_api_cache_get_addr_list(tBTA_GATTC_CB *p_cb, tBTA_GATTC_D } } + +/******************************************************************************* +** +** Function bta_gattc_process_api_cache_clean +** +** Description process cache clean API to delete cache +** +** Returns None. +** +*******************************************************************************/ +void bta_gattc_process_api_cache_clean(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg) +{ + tBTA_GATTC_SERV *p_srvc_cb = bta_gattc_find_srvr_cache(p_msg->api_conn.remote_bda); + UNUSED(p_cb); + + if (p_srvc_cb != NULL && p_srvc_cb->p_srvc_cache != NULL) { + //mark it and delete the cache */ + list_free(p_srvc_cb->p_srvc_cache); + p_srvc_cb->p_srvc_cache = NULL; + } +} + /******************************************************************************* ** ** Function bta_gattc_process_srvc_chg_ind diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_api.c b/components/bt/bluedroid/bta/gatt/bta_gattc_api.c index 00771981d0..7a39d29524 100644 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_api.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_api.c @@ -974,6 +974,34 @@ void BTA_GATTC_CacheGetAddrList(tBTA_GATTC_IF client_if) return; } +/******************************************************************************* +** +** Function BTA_GATTC_Clean +** +** Description Clean the server cache of the remote device +** +** Parameters remote_bda: remote device BD address. +** +** Returns void +** +*******************************************************************************/ +void BTA_GATTC_Clean(BD_ADDR remote_bda) +{ +#if(GATTC_CACHE_NVS == TRUE) + /* used to reset cache in application */ + bta_gattc_cache_reset(remote_bda); +#endif + + tBTA_GATTC_API_OPEN *p_buf; + + if ((p_buf = (tBTA_GATTC_API_OPEN *) osi_malloc(sizeof(tBTA_GATTC_API_OPEN))) != NULL) { + p_buf->hdr.event = BTA_GATTC_API_CACHE_CLEAN_EVT; + memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN); + + bta_sys_sendmsg(p_buf); + } + return; +} /******************************************************************************* ** ** Function BTA_GATTC_Listen diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c b/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c index d9823d473a..7e3d68d707 100644 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_cache.c @@ -617,6 +617,11 @@ static void bta_gattc_explore_srvc(UINT16 conn_id, tBTA_GATTC_SERV *p_srvc_cb) if (p_clcb->transport == BTA_TRANSPORT_LE) { L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, TRUE); } + //discover service complete, trigger callback + tBTA_GATTC cb_data; + cb_data.dis_cmpl.status = p_clcb->status; + cb_data.dis_cmpl.conn_id = conn_id; + ( *p_clcb->p_rcb->p_cback)(BTA_GATTC_DIS_SRVC_CMPL_EVT, &cb_data); #endif #if(GATTC_CACHE_NVS == TRUE) /* save cache to NV */ diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_main.c b/components/bt/bluedroid/bta/gatt/bta_gattc_main.c index e20efe499e..afcc692fb5 100644 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_main.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_main.c @@ -126,6 +126,7 @@ static const UINT8 bta_gattc_st_idle[][BTA_GATTC_NUM_COLS] = { /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST}, /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, + /* BTA_GATTC_API_CACHE_CLEAN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST}, @@ -154,6 +155,7 @@ static const UINT8 bta_gattc_st_w4_conn[][BTA_GATTC_NUM_COLS] = { /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST}, /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, + /* BTA_GATTC_API_CACHE_CLEAN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST}, @@ -182,6 +184,7 @@ static const UINT8 bta_gattc_st_connected[][BTA_GATTC_NUM_COLS] = { /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_CONN_ST}, /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_READ_MULTI, BTA_GATTC_CONN_ST}, /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, + /* BTA_GATTC_API_CACHE_CLEAN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST}, /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST}, /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_START_DISCOVER, BTA_GATTC_DISCOVER_ST}, @@ -211,6 +214,7 @@ static const UINT8 bta_gattc_st_discover[][BTA_GATTC_NUM_COLS] = { /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_DISCOVER_ST}, /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST}, /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, + /* BTA_GATTC_API_CACHE_CLEAN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST}, /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_DISCOVER_ST}, /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_RESTART_DISCOVER, BTA_GATTC_DISCOVER_ST}, @@ -362,6 +366,9 @@ BOOLEAN bta_gattc_hdl_event(BT_HDR *p_msg) case BTA_GATTC_API_CACHE_GET_ADDR_LIST_EVT: bta_gattc_process_api_cache_get_addr_list(p_cb, (tBTA_GATTC_DATA *)p_msg); break; + case BTA_GATTC_API_CACHE_CLEAN_EVT: + bta_gattc_process_api_cache_clean(p_cb, (tBTA_GATTC_DATA *) p_msg); + break; #if BLE_INCLUDED == TRUE case BTA_GATTC_API_LISTEN_EVT: bta_gattc_listen(p_cb, (tBTA_GATTC_DATA *) p_msg); @@ -464,6 +471,8 @@ static char *gattc_evt_code(tBTA_GATTC_INT_EVT evt_code) return "BTA_GATTC_API_DEREG_EVT"; case BTA_GATTC_API_REFRESH_EVT: return "BTA_GATTC_API_REFRESH_EVT"; + case BTA_GATTC_API_CACHE_CLEAN_EVT: + return "BTA_GATTC_API_CACHE_CLEAN_EVT"; case BTA_GATTC_API_LISTEN_EVT: return "BTA_GATTC_API_LISTEN_EVT"; case BTA_GATTC_API_DISABLE_EVT: diff --git a/components/bt/bluedroid/bta/gatt/include/bta_gattc_int.h b/components/bt/bluedroid/bta/gatt/include/bta_gattc_int.h index ad440c2bcd..c25f5ddb30 100644 --- a/components/bt/bluedroid/bta/gatt/include/bta_gattc_int.h +++ b/components/bt/bluedroid/bta/gatt/include/bta_gattc_int.h @@ -52,6 +52,7 @@ enum { BTA_GATTC_API_CONFIRM_EVT, BTA_GATTC_API_READ_MULTI_EVT, BTA_GATTC_API_REFRESH_EVT, + BTA_GATTC_API_CACHE_CLEAN_EVT, BTA_GATTC_INT_CONN_EVT, BTA_GATTC_INT_DISCOVER_EVT, @@ -470,6 +471,7 @@ extern void bta_gattc_send_connect_cback( tBTA_GATTC_RCB *p_clreg, BD_ADDR remot extern void bta_gattc_send_disconnect_cback( tBTA_GATTC_RCB *p_clreg, tGATT_DISCONN_REASON reason, BD_ADDR remote_bda, UINT16 conn_id); extern void bta_gattc_process_api_refresh(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); +extern void bta_gattc_process_api_cache_clean(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_process_api_cache_assoc(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_process_api_cache_get_addr_list(tBTA_GATTC_CB *p_cb, tBTA_GATTC_DATA *p_msg); extern void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data); diff --git a/components/bt/bluedroid/bta/include/bta/bta_gatt_api.h b/components/bt/bluedroid/bta/include/bta/bta_gatt_api.h index 5048511c42..896ca151cc 100644 --- a/components/bt/bluedroid/bta/include/bta/bta_gatt_api.h +++ b/components/bt/bluedroid/bta/include/bta/bta_gatt_api.h @@ -185,6 +185,7 @@ typedef UINT8 tBTA_GATT_STATUS; #define BTA_GATTC_QUEUE_FULL_EVT 38 /* GATTC queue full event */ #define BTA_GATTC_ASSOC_EVT 39 /* GATTC association address event */ #define BTA_GATTC_GET_ADDR_LIST_EVT 40 /* GATTC get address list in the cache event */ +#define BTA_GATTC_DIS_SRVC_CMPL_EVT 41 /* GATTC discover service complete */ typedef UINT8 tBTA_GATTC_EVT; @@ -318,6 +319,11 @@ typedef struct { UINT8 searched_service_source; } tBTA_GATTC_SEARCH_CMPL; +typedef struct { + UINT16 conn_id; + tBTA_GATT_STATUS status; +}tBTA_GATTC_DIS_CMPL; + typedef struct { UINT16 conn_id; UINT16 start_handle; @@ -413,8 +419,8 @@ typedef struct { typedef union { tBTA_GATT_STATUS status; - - tBTA_GATTC_SEARCH_CMPL search_cmpl; /* discovery complete */ + tBTA_GATTC_DIS_CMPL dis_cmpl; /* discovery complete */ + tBTA_GATTC_SEARCH_CMPL search_cmpl; /* search complete */ tBTA_GATTC_SRVC_RES srvc_res; /* discovery result */ tBTA_GATTC_REG reg_oper; /* registration data */ tBTA_GATTC_OPEN open; @@ -1118,6 +1124,18 @@ extern void BTA_GATTC_CacheAssoc(tBTA_GATTC_IF client_if, BD_ADDR src_addr, BD_A extern void BTA_GATTC_CacheGetAddrList(tBTA_GATTC_IF client_if); +/******************************************************************************* +** +** Function BTA_GATTC_Clean +** +** Description Clean the server cache of the remote device +** +** Parameters remote_bda: remote device BD address. +** +** Returns void +** +*******************************************************************************/ +extern void BTA_GATTC_Clean(BD_ADDR remote_bda); /******************************************************************************* ** diff --git a/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c b/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c index 4c45f829d5..5eaee361b8 100644 --- a/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c +++ b/components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c @@ -757,6 +757,9 @@ void btc_gattc_call_handler(btc_msg_t *msg) case BTC_GATTC_ATC_CACHE_GET_ADDR_LIST: BTA_GATTC_CacheGetAddrList(arg->get_addr_list.gattc_if); break; + case BTC_GATTC_ACT_CACHE_CLEAN: + BTA_GATTC_Clean(arg->cache_clean.remote_bda); + break; default: BTC_TRACE_ERROR("%s: Unhandled event (%d)!\n", __FUNCTION__, msg->act); break; @@ -980,6 +983,12 @@ void btc_gattc_cb_handler(btc_msg_t *msg) btc_gattc_cb_to_app(ESP_GATTC_GET_ADDR_LIST_EVT, gattc_if, ¶m); break; } + case BTA_GATTC_DIS_SRVC_CMPL_EVT: + gattc_if = BTC_GATT_GET_GATT_IF(arg->dis_cmpl.conn_id); + param.dis_srvc_cmpl.status = arg->dis_cmpl.status; + param.dis_srvc_cmpl.conn_id = BTC_GATT_GET_CONN_ID(arg->dis_cmpl.conn_id); + btc_gattc_cb_to_app(ESP_GATTC_DIS_SRVC_CMPL_EVT, gattc_if, ¶m); + break; default: BTC_TRACE_DEBUG("%s: Unhandled event (%d)!", __FUNCTION__, msg->act); break; diff --git a/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h b/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h index afc3e4ba91..daa38ebeaa 100644 --- a/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h +++ b/components/bt/bluedroid/btc/profile/std/include/btc_gattc.h @@ -40,6 +40,7 @@ typedef enum { BTC_GATTC_ACT_CACHE_REFRESH, BTC_GATTC_ACT_CACHE_ASSOC, BTC_GATTC_ATC_CACHE_GET_ADDR_LIST, + BTC_GATTC_ACT_CACHE_CLEAN, } btc_gattc_act_t; /* btc_ble_gattc_args_t */ @@ -180,6 +181,10 @@ typedef union { struct cache_get_addr_list_arg { esp_gatt_if_t gattc_if; }get_addr_list; + //BTC_GATTC_ACT_CACHE_CLEAN, + struct cache_clean_arg { + esp_bd_addr_t remote_bda; + } cache_clean; } btc_ble_gattc_args_t; void btc_gattc_call_handler(btc_msg_t *msg); diff --git a/examples/bluetooth/gatt_client/main/gattc_demo.c b/examples/bluetooth/gatt_client/main/gattc_demo.c index 9909729418..2bd7798362 100644 --- a/examples/bluetooth/gatt_client/main/gattc_demo.c +++ b/examples/bluetooth/gatt_client/main/gattc_demo.c @@ -126,12 +126,19 @@ static void gattc_profile_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_ } ESP_LOGI(GATTC_TAG, "open success"); break; + case ESP_GATTC_DIS_SRVC_CMPL_EVT: + if (param->dis_srvc_cmpl.status != ESP_GATT_OK){ + ESP_LOGE(GATTC_TAG, "discover service failed, status %d", param->dis_srvc_cmpl.status); + break; + } + ESP_LOGI(GATTC_TAG, "discover service complete conn_id %d", param->dis_srvc_cmpl.conn_id); + esp_ble_gattc_search_service(gattc_if, param->cfg_mtu.conn_id, &remote_filter_service_uuid); + break; case ESP_GATTC_CFG_MTU_EVT: if (param->cfg_mtu.status != ESP_GATT_OK){ ESP_LOGE(GATTC_TAG,"config mtu failed, error status = %x", param->cfg_mtu.status); } ESP_LOGI(GATTC_TAG, "ESP_GATTC_CFG_MTU_EVT, Status %d, MTU %d, conn_id %d", param->cfg_mtu.status, param->cfg_mtu.mtu, param->cfg_mtu.conn_id); - esp_ble_gattc_search_service(gattc_if, param->cfg_mtu.conn_id, &remote_filter_service_uuid); break; case ESP_GATTC_SEARCH_RES_EVT: { ESP_LOGI(GATTC_TAG, "SEARCH RES: conn_id = %x is primary service %d", p_data->search_res.conn_id, p_data->search_res.is_primary);