Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e65f204a authored by Rahul Arya's avatar Rahul Arya Committed by Automerger Merge Worker
Browse files

Merge "Properly clean up HIDD control block on disconnect" am: b89661ad

parents f18b78dc b89661ad
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ table InitFlagsData {
    btaa_hci_is_enabled:bool (privacy:"Any");
    bta_dm_clear_conn_id_on_client_close_is_enabled:bool (privacy:"Any");
    btm_dm_flush_discovery_queue_on_search_cancel_is_enabled:bool (privacy:"Any");
    clear_hidd_interrupt_cid_on_disconnect_is_enabled:bool (privacy:"Any");
    device_iot_config_logging_is_enabled:bool (privacy:"Any");
    dynamic_avrcp_version_enhancement_is_enabled:bool (privacy:"Any");
    finite_att_timeout_is_enabled:bool (privacy:"Any");
+2 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ flatbuffers::Offset<bluetooth::common::InitFlagsData> bluetooth::dumpsys::InitFl
      initFlags::btm_dm_flush_discovery_queue_on_search_cancel_is_enabled());
  builder.add_device_iot_config_logging_is_enabled(
      initFlags::device_iot_config_logging_is_enabled());
  builder.add_clear_hidd_interrupt_cid_on_disconnect_is_enabled(
      initFlags::clear_hidd_interrupt_cid_on_disconnect_is_enabled());
  builder.add_dynamic_avrcp_version_enhancement_is_enabled(
      initFlags::dynamic_avrcp_version_enhancement_is_enabled());
  builder.add_gd_hal_snoop_logger_filtering_is_enabled(
+1 −0
Original line number Diff line number Diff line
@@ -256,6 +256,7 @@ init_flags!(
        btaa_hci = true,
        bta_dm_clear_conn_id_on_client_close = true,
        btm_dm_flush_discovery_queue_on_search_cancel,
        clear_hidd_interrupt_cid_on_disconnect = true,
        device_iot_config_logging,
        dynamic_avrcp_version_enhancement = true,
        finite_att_timeout = true,
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ mod ffi {
        fn bta_dm_clear_conn_id_on_client_close_is_enabled() -> bool;
        fn gd_hal_snoop_logger_filtering_is_enabled() -> bool;
        fn btm_dm_flush_discovery_queue_on_search_cancel_is_enabled() -> bool;
        fn clear_hidd_interrupt_cid_on_disconnect_is_enabled() -> bool;
        fn device_iot_config_logging_is_enabled() -> bool;
        fn dynamic_avrcp_version_enhancement_is_enabled() -> bool;
        fn finite_att_timeout_is_enabled() -> bool;
+5 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@

#include "bta/include/bta_api.h"
#include "btif/include/btif_hd.h"
#include "gd/common/init_flags.h"
#include "osi/include/allocator.h"
#include "stack/hid/hidd_int.h"
#include "stack/include/bt_hdr.h"
@@ -353,7 +354,6 @@ static void hidd_l2cif_disconnect_ind(uint16_t cid, bool ack_needed) {
static void hidd_l2cif_disconnect(uint16_t cid) {
  L2CA_DisconnectReq(cid);


  HIDD_TRACE_EVENT("%s: cid=%04x", __func__, cid);

  tHID_CONN* p_hcon = &hd_cb.device.conn;
@@ -371,6 +371,10 @@ static void hidd_l2cif_disconnect(uint16_t cid) {

    // now disconnect CTRL
    L2CA_DisconnectReq(p_hcon->ctrl_cid);
    if (bluetooth::common::init_flags::
            clear_hidd_interrupt_cid_on_disconnect_is_enabled()) {
      p_hcon->ctrl_cid = 0;
    }
  }

  if ((p_hcon->ctrl_cid == 0) && (p_hcon->intr_cid == 0)) {