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

Commit 4b776904 authored by Rahul Arya's avatar Rahul Arya
Browse files

[Private GATT] Add Arbiter to share ATT channel

Arbitration is done based on advertiser ID and packet type.
This links the legacy stack to the new implementation.

Bug: 255880936
Test: unit
Change-Id: Ia62aacb0bdeab67dd202dc6ad4239f7c553d84d6
parent c8a8d02e
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2103,8 +2103,12 @@ static void gattServerSendResponseNative(JNIEnv* env, jobject object,
    env->ReleaseByteArrayElements(val, array, JNI_ABORT);
  }

  if (bluetooth::gatt::is_connection_isolated(conn_id)) {
    // no-op
  } else {
    sGattIf->server->send_response(conn_id, trans_id, status, response);
  }
}

static void advertiseClassInitNative(JNIEnv* env, jclass clazz) {
  method_onAdvertisingSetStarted =
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ table InitFlagsData {
    gd_hci_enabled:bool (privacy:"Any");
    gd_controller_enabled:bool (privacy:"Any");

    always_use_private_gatt_for_debugging_is_enabled:bool (private:"Any");
    asynchronously_start_l2cap_coc_is_enabled:bool (privacy:"Any");
    btaa_hci_is_enabled:bool (privacy:"Any");
    bta_dm_clear_conn_id_on_client_close_is_enabled:bool (privacy:"Any");
@@ -37,6 +38,7 @@ table InitFlagsData {
    logging_debug_enabled_for_all_is_enabled:bool (privacy:"Any");
    pass_phy_update_callback_is_enabled:bool (privacy:"Any");
    periodic_advertising_adi_is_enabled:bool (privacy:"Any");
    private_gatt_is_enabled:bool (privacy:"Any");
    queue_l2cap_coc_while_encrypting_is_enabled:bool (privacy:"Any");
    redact_log_is_enabled:bool (privacy:"Any");
    rust_event_loop_is_enabled:bool (privacy:"Any");
+3 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ flatbuffers::Offset<bluetooth::common::InitFlagsData> bluetooth::dumpsys::InitFl
  builder.add_gd_hci_enabled(true);
  builder.add_gd_controller_enabled(true);

  builder.add_always_use_private_gatt_for_debugging_is_enabled(
      initFlags::always_use_private_gatt_for_debugging_is_enabled());
  builder.add_asynchronously_start_l2cap_coc_is_enabled(initFlags::asynchronously_start_l2cap_coc_is_enabled());
  builder.add_btaa_hci_is_enabled(initFlags::btaa_hci_is_enabled());
  builder.add_bta_dm_clear_conn_id_on_client_close_is_enabled(
@@ -67,6 +69,7 @@ flatbuffers::Offset<bluetooth::common::InitFlagsData> bluetooth::dumpsys::InitFl
  builder.add_periodic_advertising_adi_is_enabled(bluetooth::common::init_flags::periodic_advertising_adi_is_enabled());
  builder.add_queue_l2cap_coc_while_encrypting_is_enabled(
      initFlags::queue_l2cap_coc_while_encrypting_is_enabled());
  builder.add_private_gatt_is_enabled(initFlags::private_gatt_is_enabled());
  builder.add_redact_log_is_enabled(initFlags::redact_log_is_enabled());
  builder.add_rust_event_loop_is_enabled(initFlags::rust_event_loop_is_enabled());
  builder.add_sdp_serialization_is_enabled(initFlags::sdp_serialization_is_enabled());
+2 −0
Original line number Diff line number Diff line
@@ -251,6 +251,7 @@ fn parse_hci_adapter(flags: &mut InitFlags, values: Vec<&str>) {
init_flags!(
    // LINT.IfChange
    flags: {
        always_use_private_gatt_for_debugging,
        asynchronously_start_l2cap_coc = true,
        btaa_hci = true,
        bta_dm_clear_conn_id_on_client_close = true,
@@ -274,6 +275,7 @@ init_flags!(
        leaudio_targeted_announcement_reconnection_mode,
        pass_phy_update_callback = true,
        periodic_advertising_adi = true,
        private_gatt,
        queue_l2cap_coc_while_encrypting = true,
        redact_log = true,
        rust_event_loop,
+2 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ mod ffi {
        fn load(flags: Vec<String>);
        fn set_all_for_testing();

        fn always_use_private_gatt_for_debugging_is_enabled() -> bool;
        fn asynchronously_start_l2cap_coc_is_enabled() -> bool;
        fn btaa_hci_is_enabled() -> bool;
        fn bta_dm_clear_conn_id_on_client_close_is_enabled() -> bool;
@@ -29,6 +30,7 @@ mod ffi {
        fn logging_debug_enabled_for_all_is_enabled() -> bool;
        fn pass_phy_update_callback_is_enabled() -> bool;
        fn periodic_advertising_adi_is_enabled() -> bool;
        fn private_gatt_is_enabled() -> bool;
        fn queue_l2cap_coc_while_encrypting_is_enabled() -> bool;
        fn redact_log_is_enabled() -> bool;
        fn rust_event_loop_is_enabled() -> bool;
Loading