Skip to content

Commit

Permalink
Merge branch 'bugfix/fix_some_ble_bugs_v4.4' into 'release/v4.4'
Browse files Browse the repository at this point in the history
Fixed some BLE bugs (backport v4.4)

See merge request espressif/esp-idf!24283
  • Loading branch information
jack0c committed Jun 20, 2023
2 parents ebcb29b + b8e4f09 commit efdd085
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 12 deletions.
2 changes: 1 addition & 1 deletion components/bt/controller/lib_esp32
36 changes: 30 additions & 6 deletions components/bt/host/bluedroid/stack/l2cap/l2c_ble.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,35 @@
#if (BLE_INCLUDED == TRUE)

#if (BLE_50_FEATURE_SUPPORT == TRUE)
const tHCI_ExtConnParams ext_conn_params = {
#define EXT_CONN_INT_DEF_1M MAX(((MAX_ACL_CONNECTIONS + 1) * 4), 12)
#define EXT_CONN_INT_DEF_2M MAX(((MAX_ACL_CONNECTIONS + 1) * 2), 12)
#define EXT_CONN_INT_DEF_CODED (320) // 306-> 362Kbps

const static tHCI_ExtConnParams ext_conn_params_1m_phy = {
.scan_interval = 0x40,
.scan_window = 0x40,
.conn_interval_min = EXT_CONN_INT_DEF_1M,
.conn_interval_max = EXT_CONN_INT_DEF_1M,
.conn_latency = 0,
.sup_timeout = 600,
.min_ce_len = 0,
.max_ce_len = 0,
};
const static tHCI_ExtConnParams ext_conn_params_2m_phy = {
.scan_interval = 0x40,
.scan_window = 0x40,
.conn_interval_min = EXT_CONN_INT_DEF_2M,
.conn_interval_max = EXT_CONN_INT_DEF_2M,
.conn_latency = 0,
.sup_timeout = 600,
.min_ce_len = 0,
.max_ce_len = 0,
};
const static tHCI_ExtConnParams ext_conn_params_coded_phy = {
.scan_interval = 0x40,
.scan_window = 0x40,
.conn_interval_min = 320, // 306-> 362Kbps
.conn_interval_max = 320,
.conn_interval_min = EXT_CONN_INT_DEF_CODED,
.conn_interval_max = EXT_CONN_INT_DEF_CODED,
.conn_latency = 0,
.sup_timeout = 600,
.min_ce_len = 0,
Expand Down Expand Up @@ -929,9 +953,9 @@ BOOLEAN l2cble_init_direct_conn (tL2C_LCB *p_lcb)
if (p_dev_rec->ext_conn_params.phy_mask == BLE_PHY_NO_PREF) {
L2CAP_TRACE_WARNING("No extend connection parameters set, use default parameters");
aux_conn.init_phy_mask = BLE_PHY_PREF_MASK;
memcpy(&aux_conn.params[0], &ext_conn_params, sizeof(tHCI_ExtConnParams));
memcpy(&aux_conn.params[1], &ext_conn_params, sizeof(tHCI_ExtConnParams));
memcpy(&aux_conn.params[2], &ext_conn_params, sizeof(tHCI_ExtConnParams));
memcpy(&aux_conn.params[0], &ext_conn_params_1m_phy, sizeof(tHCI_ExtConnParams));
memcpy(&aux_conn.params[1], &ext_conn_params_2m_phy, sizeof(tHCI_ExtConnParams));
memcpy(&aux_conn.params[2], &ext_conn_params_coded_phy, sizeof(tHCI_ExtConnParams));
} else {
aux_conn.init_phy_mask = p_dev_rec->ext_conn_params.phy_mask;
memcpy(&aux_conn.params[0], &p_dev_rec->ext_conn_params.phy_1m_conn_params, sizeof(tHCI_ExtConnParams));
Expand Down
12 changes: 7 additions & 5 deletions components/esp_hid/src/ble_hidd.c
Original file line number Diff line number Diff line change
Expand Up @@ -832,12 +832,14 @@ static esp_err_t esp_ble_hidd_dev_battery_set(void *devp, uint8_t level)
return ESP_OK;
}

ret = esp_ble_gatts_send_indicate(dev->bat_svc.gatt_if, dev->conn_id, dev->bat_level_handle, 1, &dev->bat_level, dev->bat_ccc.indicate_enable);
if (ret) {
ESP_LOGE(TAG, "esp_ble_gatts_send_indicate failed: %d", ret);
return ESP_FAIL;
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);
if (ret) {
ESP_LOGE(TAG, "esp_ble_gatts_send_notify failed: %d", ret);
return ESP_FAIL;
}
}
WAIT_CB(dev);

return ESP_OK;
}

Expand Down

0 comments on commit efdd085

Please sign in to comment.