espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
13.28k stars 7.2k forks source link

Speed up Ble client connect time (IDFGH-4489) #6318

Open JerryZheng89 opened 3 years ago

JerryZheng89 commented 3 years ago

Environment

Problem Description

when I change remote_filter_xxx_uuid from 16bit to 128bit , in gatt_client example: I found that when esp32 connect to the remote ble client, it will read a lot attribute It wastes a little long time(about 400ms, 20~30 times communicate event ) to do this,

image image

Expected Behavior

after connected, read or write the service,characteristic, which already know.

Actual Behavior

after connected, send a lot read request, then read and write service or characteristic.

issues

How to speed up the communication after connected? How to change the request UUID to user define UUID ? my periperal don't have uuid 16bit. image

xiewenxiang commented 3 years ago

@JerryZheng89

IDF will automatically do service discovery by default, You can delete the corresponding code, for example:

version:

commit 6978fe58b1b6bdc250183b5c4ae7f706c94ed616 (HEAD -> master, origin/master, origin/HEAD)
Merge: 6b1a83b38b f9fe524c32
Author: Jiang Jiang Jian <jack@espressif.com>
Date:   Fri Mar 19 11:34:47 2021 +0000

    Merge branch 'mesh/ps_duty_signaling_master' into 'master'

    mesh/ps: network duty signaling

    See merge request espressif/esp-idf!12643

PATH: esp-idf/components/bt/host/bluedroid/bta/gatt/bta_gattc_act.c

In function void bta_gattc_conn(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)

delete :

                /* cache load failure, start discovery */
                bta_gattc_start_discover(p_clcb, NULL);
Alvin1Zhang commented 3 years ago

@JerryZheng89 Thanks for reporting, would you please help share if any updates for the issue? Thanks.