From b0719d3fc61a7d711c7f32d5855d81632c448cc2 Mon Sep 17 00:00:00 2001 From: XieWenxiang Date: Tue, 22 Dec 2020 19:20:24 +0800 Subject: [PATCH] component/bt: fix Blufi sends longer customer data will will lead congested --- .../bluedroid/btc/profile/esp/blufi/blufi_prf.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c index 5bcc2ebea3..ad24892007 100644 --- a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c +++ b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c @@ -36,6 +36,7 @@ #include "blufi_int.h" #include "esp_blufi_api.h" +#include "esp_gatt_common_api.h" #if (GATTS_INCLUDED == TRUE) @@ -456,6 +457,7 @@ static void btc_blufi_recv_handler(uint8_t *data, int len) } } } + void btc_blufi_send_encap(uint8_t type, uint8_t *data, int total_data_len) { struct blufi_hdr *hdr = NULL; @@ -526,10 +528,21 @@ void btc_blufi_send_encap(uint8_t type, uint8_t *data, int total_data_len) remain_len -= hdr->data_len; } - btc_blufi_send_notify((uint8_t *)hdr, +retry: + if (blufi_env.is_connected == false) { + return; + } + + if (esp_ble_get_cur_sendable_packets_num(BTC_GATT_GET_CONN_ID(blufi_env.conn_id)) > 0) { + btc_blufi_send_notify((uint8_t *)hdr, ((hdr->fc & BLUFI_FC_CHECK) ? hdr->data_len + sizeof(struct blufi_hdr) + 2 : hdr->data_len + sizeof(struct blufi_hdr))); + } else { + BTC_TRACE_WARNING("%s wait to send blufi custom data\n", __func__); + vTaskDelay(pdMS_TO_TICKS(10)); + goto retry; + } osi_free(hdr); hdr = NULL;