mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
Merge branch 'fix/ble_hidd_remove_ccc_gating_v5.5' into 'release/v5.5'
fix(esp_hid/bluedroid): remove app-layer CCC gating in HID device (5.5) See merge request espressif/esp-idf!51006
This commit is contained in:
@@ -170,7 +170,6 @@ menu "BT Logs"
|
|||||||
menuconfig BT_LOG_CRITICAL_ONLY
|
menuconfig BT_LOG_CRITICAL_ONLY
|
||||||
bool "Enable bandwidth-optimized log mode (critical logs only)"
|
bool "Enable bandwidth-optimized log mode (critical logs only)"
|
||||||
default n
|
default n
|
||||||
depends on !BT_STACK_NO_LOG
|
|
||||||
select BLE_LOG_ENABLED
|
select BLE_LOG_ENABLED
|
||||||
help
|
help
|
||||||
Enable bandwidth-optimized logging for the BLE Log Async Output
|
Enable bandwidth-optimized logging for the BLE Log Async Output
|
||||||
|
|||||||
@@ -562,6 +562,7 @@ endmenu #BT debug option
|
|||||||
config BT_STACK_NO_LOG
|
config BT_STACK_NO_LOG
|
||||||
bool "Disable BT debug logs (minimize bin size)"
|
bool "Disable BT debug logs (minimize bin size)"
|
||||||
depends on BT_BLUEDROID_ENABLED
|
depends on BT_BLUEDROID_ENABLED
|
||||||
|
default y if BLE_LOG_ENABLED && !BLE_LOG_HOST_LOG
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
This select can save the rodata code size
|
This select can save the rodata code size
|
||||||
|
|||||||
@@ -1114,6 +1114,12 @@ tBTM_STATUS BTM_BleExtendedScan(BOOLEAN enable, UINT16 duration, UINT16 period)
|
|||||||
if ((err = btsnd_hcic_ble_ext_scan_enable(enable, extend_adv_cb.scan_duplicate, duration, period)) != HCI_SUCCESS) {
|
if ((err = btsnd_hcic_ble_ext_scan_enable(enable, extend_adv_cb.scan_duplicate, duration, period)) != HCI_SUCCESS) {
|
||||||
BTM_TRACE_ERROR("LE ES En=%d: cmd err=0x%x", enable, err);
|
BTM_TRACE_ERROR("LE ES En=%d: cmd err=0x%x", enable, err);
|
||||||
status = BTM_HCI_ERROR | err;
|
status = BTM_HCI_ERROR | err;
|
||||||
|
} else {
|
||||||
|
if (enable) {
|
||||||
|
btm_cb.ble_ctr_cb.inq_var.state |= BTM_BLE_SCANNING;
|
||||||
|
} else {
|
||||||
|
btm_cb.ble_ctr_cb.inq_var.state &= ~BTM_BLE_SCANNING;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
@@ -1266,6 +1272,7 @@ void btm_ble_update_phy_evt(tBTM_BLE_UPDATE_PHY *params)
|
|||||||
#if (BLE_50_EXTEND_SCAN_EN == TRUE)
|
#if (BLE_50_EXTEND_SCAN_EN == TRUE)
|
||||||
void btm_ble_scan_timeout_evt(void)
|
void btm_ble_scan_timeout_evt(void)
|
||||||
{
|
{
|
||||||
|
btm_cb.ble_ctr_cb.inq_var.state &= ~BTM_BLE_SCANNING;
|
||||||
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_SCAN_TIMEOUT_EVT, NULL);
|
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_SCAN_TIMEOUT_EVT, NULL);
|
||||||
}
|
}
|
||||||
#endif // #if (BLE_50_EXTEND_SCAN_EN == TRUE)
|
#endif // #if (BLE_50_EXTEND_SCAN_EN == TRUE)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2017-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2017-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -822,17 +822,15 @@ static esp_err_t esp_ble_hidd_dev_battery_set(void *devp, uint8_t level)
|
|||||||
}
|
}
|
||||||
dev->bat_level = level;
|
dev->bat_level = level;
|
||||||
|
|
||||||
if (!dev->connected || dev->bat_ccc.value == 0) {
|
if (!dev->connected) {
|
||||||
//if we are not yet connected, that is not an error
|
//if we are not yet connected, that is not an error
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->bat_ccc.notify_enable) {
|
ret = esp_ble_gatts_send_indicate(dev->bat_svc.gatt_if, dev->conn_id, dev->bat_level_handle, 1, &dev->bat_level, false);
|
||||||
ret = esp_ble_gatts_send_indicate(dev->bat_svc.gatt_if, dev->conn_id, dev->bat_level_handle, 1, &dev->bat_level, false);
|
if (ret) {
|
||||||
if (ret) {
|
ESP_LOGE(TAG, "esp_ble_gatts_send_notify failed: %d", ret);
|
||||||
ESP_LOGE(TAG, "esp_ble_gatts_send_notify failed: %d", ret);
|
return ESP_FAIL;
|
||||||
return ESP_FAIL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
@@ -856,7 +854,7 @@ static esp_err_t esp_ble_hidd_dev_input_set(void *devp, size_t index, size_t id,
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((p_rpt = get_report_by_id_and_type(dev, id, ESP_HID_REPORT_TYPE_INPUT)) != NULL && p_rpt->ccc.value) {
|
if ((p_rpt = get_report_by_id_and_type(dev, id, ESP_HID_REPORT_TYPE_INPUT)) != NULL) {
|
||||||
esp_err_t err = esp_ble_gatts_send_indicate(dev->devices[index].hid_svc.gatt_if, dev->conn_id, p_rpt->handle, length, data, p_rpt->ccc.indicate_enable);
|
esp_err_t err = esp_ble_gatts_send_indicate(dev->devices[index].hid_svc.gatt_if, dev->conn_id, p_rpt->handle, length, data, p_rpt->ccc.indicate_enable);
|
||||||
if (err != ESP_OK) {
|
if (err != ESP_OK) {
|
||||||
ESP_LOGE(TAG, "Send Input Indicate Failed: %d", err);
|
ESP_LOGE(TAG, "Send Input Indicate Failed: %d", err);
|
||||||
@@ -896,7 +894,7 @@ static esp_err_t esp_ble_hidd_dev_feature_set(void *devp, size_t index, size_t i
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
WAIT_CB(dev);
|
WAIT_CB(dev);
|
||||||
if (dev->connected && p_rpt->ccc.value) {
|
if (dev->connected) {
|
||||||
ret = esp_ble_gatts_send_indicate(dev->devices[index].hid_svc.gatt_if, dev->conn_id, p_rpt->handle, length, data, p_rpt->ccc.indicate_enable);
|
ret = esp_ble_gatts_send_indicate(dev->devices[index].hid_svc.gatt_if, dev->conn_id, p_rpt->handle, length, data, p_rpt->ccc.indicate_enable);
|
||||||
if (ret != ESP_OK) {
|
if (ret != ESP_OK) {
|
||||||
ESP_LOGE(TAG, "Send Feature Indicate Failed: %d", ret);
|
ESP_LOGE(TAG, "Send Feature Indicate Failed: %d", ret);
|
||||||
|
|||||||
Reference in New Issue
Block a user