From f8d615c8f8b8f8f65e7187dd84191b71fc6dc41f Mon Sep 17 00:00:00 2001
From: Elliott Hughes <enh@google.com>
Date: Mon, 12 Dec 2022 19:01:49 +0000
Subject: [PATCH] Revert "Revert^2 [Invisalign] Build changes to split out
 libbluetooth-core"

This reverts commit 02ddb3feb2c873bc6b245f12a3c75e3481a01db3.

Reason for revert: broken build (https://android-build.googleplex.com/builds/submitted/9395755/full-eng/latest/view/logs/build_error.log)

Bug: http://b/262263387
Change-Id: I59b17187c7bda730a688717af51303a2f8d775fb
---
 android/app/Android.bp                       |  45 -------
 system/audio_hal_interface/fuzzer/Android.bp |   3 -
 system/bta/Android.bp                        |  69 ++++-------
 system/btcore/Android.bp                     |  24 +---
 system/btif/Android.bp                       | 119 ++++++-------------
 system/btif/BUILD.gn                         |   4 +-
 system/btif/include/btif_dm.h                |   3 +-
 system/btif/src/bluetooth.cc                 |   4 +-
 system/btif/src/btif_bqr.cc                  |   8 +-
 system/btif/src/btif_dm.cc                   |  36 +++---
 system/btif/src/btif_storage.cc              |   2 +-
 system/build/Android.bp                      |   3 -
 system/gd/rust/topshim/facade/Android.bp     |   4 -
 system/service/Android.bp                    |   6 -
 system/stack/Android.bp                      |  87 +++-----------
 system/stack/test/fuzzers/Android.bp         |   4 +-
 system/test/headless/Android.bp              |   3 -
 system/test/suite/Android.bp                 |   3 -
 18 files changed, 101 insertions(+), 326 deletions(-)

diff --git a/android/app/Android.bp b/android/app/Android.bp
index 4c45dff3487..6d2fa40e96f 100644
--- a/android/app/Android.bp
+++ b/android/app/Android.bp
@@ -79,51 +79,6 @@ cc_library_shared {
     min_sdk_version: "Tiramisu",
 }
 
-cc_library {
-    name: "libbluetooth-core",
-    defaults: ["fluoride_basic_defaults"],
-    header_libs: [
-        "jni_headers",
-        "libbluetooth_headers",
-    ],
-    include_dirs: [
-        "packages/modules/Bluetooth/system/types",
-    ],
-    whole_static_libs: [
-        "libbte",
-        "libbt-bta-core",
-        "libbt-common",
-        "libbtdevice",
-        "libbtif-core",
-        "libbt-hci",
-        "libbt-stack-core",
-        "libbt-utils",
-        "libbtcore",
-        "libosi",
-        "lib-bt-packets",
-        "lib-bt-packets-base",
-
-        "libbluetooth-types",
-        "libc++fs",
-    ],
-    cflags: [
-        /* we export all classes, so change default visibility, instead of having EXPORT_SYMBOL on each class*/
-        "-fvisibility=default",
-        "-Wall",
-        "-Werror",
-        "-Wextra",
-        "-Wno-unused-parameter",
-    ],
-    sanitize: {
-        scs: true,
-    },
-    apex_available: [
-        "com.android.btservices",
-    ],
-    host_supported: true,
-    min_sdk_version: "Tiramisu",
-}
-
 // Bluetooth APK
 
 android_app {
diff --git a/system/audio_hal_interface/fuzzer/Android.bp b/system/audio_hal_interface/fuzzer/Android.bp
index 2467c13fce5..16ce56f1c5f 100644
--- a/system/audio_hal_interface/fuzzer/Android.bp
+++ b/system/audio_hal_interface/fuzzer/Android.bp
@@ -51,7 +51,6 @@ cc_defaults {
         "liblog",
         "libosi",
         "libbtif",
-        "libbtif-core",
         "libbase",
         "libutils",
         "libevent",
@@ -59,7 +58,6 @@ cc_defaults {
         "libchrome",
         "libbtcore",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-hci",
         "libbt_shim_bridge",
         "libbt_shim_ffi",
@@ -70,7 +68,6 @@ cc_defaults {
         "libflatbuffers-cpp",
         "libhidlbase",
         "libbt-stack",
-        "libbt-stack-core",
         "libg722codec",
         "libudrv-uipc",
         "libbt-common",
diff --git a/system/bta/Android.bp b/system/bta/Android.bp
index cfb84e3f117..d8037fb7b5e 100644
--- a/system/bta/Android.bp
+++ b/system/bta/Android.bp
@@ -32,9 +32,6 @@ cc_defaults {
         "packages/modules/Bluetooth/system/gd/rust/shim",
     ],
     header_libs: ["libbluetooth_headers"],
-    generated_headers: [
-        "BluetoothGeneratedDumpsysDataSchema_h",
-    ],
     cflags: ["-DBUILDCFG"],
 }
 
@@ -55,6 +52,7 @@ cc_library_static {
     name: "libbt-bta",
     defaults: ["fluoride_bta_defaults"],
     srcs: [
+        ":BtaDmSources",
         "ag/bta_ag_act.cc",
         "ag/bta_ag_api.cc",
         "ag/bta_ag_at.cc",
@@ -73,6 +71,20 @@ cc_library_static {
         "av/bta_av_main.cc",
         "av/bta_av_ssm.cc",
         "csis/csis_client.cc",
+        "gatt/bta_gattc_act.cc",
+        "gatt/bta_gattc_api.cc",
+        "gatt/bta_gattc_cache.cc",
+        "gatt/bta_gattc_db_storage.cc",
+        "gatt/bta_gattc_main.cc",
+        "gatt/bta_gattc_queue.cc",
+        "gatt/bta_gattc_utils.cc",
+        "gatt/bta_gatts_act.cc",
+        "gatt/bta_gatts_api.cc",
+        "gatt/bta_gatts_main.cc",
+        "gatt/bta_gatts_queue.cc",
+        "gatt/bta_gatts_utils.cc",
+        "gatt/database.cc",
+        "gatt/database_builder.cc",
         "groups/groups.cc",
         "vc/device.cc",
         "vc/vc.cc",
@@ -117,49 +129,13 @@ cc_library_static {
         "hd/bta_hd_act.cc",
         "hd/bta_hd_api.cc",
         "hd/bta_hd_main.cc",
+        "jv/bta_jv_act.cc",
+        "jv/bta_jv_api.cc",
+        "jv/bta_jv_cfg.cc",
         "pan/bta_pan_act.cc",
         "pan/bta_pan_api.cc",
         "pan/bta_pan_ci.cc",
         "pan/bta_pan_main.cc",
-    ],
-    cflags: [
-        /* we export all classes, so change default visibility, instead of having EXPORT_SYMBOL on each class*/
-        "-fvisibility=default",
-    ],
-    static_libs: [
-        "avrcp-target-service",
-        "lib-bt-packets",
-        "libbt-bta-core",
-    ],
-    generated_headers: [
-        "LeAudioSetConfigSchemas_h",
-    ],
-    host_supported: true,
-    min_sdk_version: "Tiramisu"
-}
-
-cc_library_static {
-    name: "libbt-bta-core",
-    defaults: ["fluoride_bta_defaults"],
-    srcs: [
-        ":BtaDmSources",
-        "gatt/bta_gattc_act.cc",
-        "gatt/bta_gattc_api.cc",
-        "gatt/bta_gattc_cache.cc",
-        "gatt/bta_gattc_db_storage.cc",
-        "gatt/bta_gattc_main.cc",
-        "gatt/bta_gattc_queue.cc",
-        "gatt/bta_gattc_utils.cc",
-        "gatt/bta_gatts_act.cc",
-        "gatt/bta_gatts_api.cc",
-        "gatt/bta_gatts_main.cc",
-        "gatt/bta_gatts_queue.cc",
-        "gatt/bta_gatts_utils.cc",
-        "gatt/database.cc",
-        "gatt/database_builder.cc",
-        "jv/bta_jv_act.cc",
-        "jv/bta_jv_api.cc",
-        "jv/bta_jv_cfg.cc",
         "sdp/bta_sdp.cc",
         "sdp/bta_sdp_act.cc",
         "sdp/bta_sdp_api.cc",
@@ -168,13 +144,13 @@ cc_library_static {
         "sys/bta_sys_main.cc",
         "sys/utl.cc",
     ],
-    cflags: [
-        /* we export all classes, so change default visibility, instead of having EXPORT_SYMBOL on each class*/
-        "-fvisibility=default",
-    ],
     static_libs: [
+        "avrcp-target-service",
         "lib-bt-packets",
     ],
+    generated_headers: [
+        "LeAudioSetConfigSchemas_h",
+    ],
     host_supported: true,
     min_sdk_version: "Tiramisu"
 }
@@ -208,7 +184,6 @@ cc_test {
         "crypto_toolbox_for_tests",
         "libbtcore",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-audio-hal-interface",
         "libbluetooth-types",
         "libbt-protos-lite",
diff --git a/system/btcore/Android.bp b/system/btcore/Android.bp
index 62e11249268..cae1c379480 100644
--- a/system/btcore/Android.bp
+++ b/system/btcore/Android.bp
@@ -18,6 +18,7 @@ cc_defaults {
     ],
     srcs: [
         "src/device_class.cc",
+        "src/hal_util.cc",
         "src/module.cc",
         "src/osi_module.cc",
         "src/property.cc",
@@ -34,29 +35,6 @@ cc_defaults {
     },
 }
 
-cc_library_static {
-    name: "libbthalutils",
-    defaults: ["fluoride_basic_defaults"],
-    srcs: [
-        "src/hal_util.cc",
-    ],
-    local_include_dirs: ["include"],
-    include_dirs: [
-        "packages/modules/Bluetooth/system",
-        "packages/modules/Bluetooth/system/gd",
-    ],
-    header_libs: ["libbluetooth_headers"],
-    host_supported: true,
-    apex_available: [
-        "com.android.btservices",
-    ],
-    target: {
-        host_linux: {
-            cflags: ["-D_GNU_SOURCE"],
-        },
-    },
-}
-
 cc_library_static {
     name: "libbtcore",
     visibility:[
diff --git a/system/btif/Android.bp b/system/btif/Android.bp
index 71b551602c7..ad752e7d83b 100644
--- a/system/btif/Android.bp
+++ b/system/btif/Android.bp
@@ -87,17 +87,19 @@ genrule {
 }
 
 // libbtif static library for target
-
-cc_library_static {
-    name: "libbtif",
+cc_defaults {
+    name: "libbtif_defaults",
     defaults: ["fluoride_basic_defaults"],
     include_dirs: btifCommonIncludes,
     srcs: [
         // AVRCP Target Service
         "avrcp/avrcp_service.cc",
+        // Callouts
+        "co/bta_dm_co.cc",
         "co/bta_av_co.cc",
         "co/bta_hh_co.cc",
         "co/bta_pan_co.cc",
+        "co/bta_gatts_co.cc",
         // HAL layer
         "src/bluetooth.cc",
         "src/bluetooth_data_migration.cc",
@@ -106,72 +108,8 @@ cc_library_static {
         "src/btif_a2dp_control.cc",
         "src/btif_a2dp_sink.cc",
         "src/btif_a2dp_source.cc",
-        "src/btif_av.cc",
-        "src/btif_csis_client.cc",
-        "src/btif_vc.cc",
-        "src/btif_has_client.cc",
-        "src/btif_hearing_aid.cc",
-        "src/btif_hf.cc",
-        "src/btif_hf_client.cc",
-        "src/btif_hh.cc",
-        "src/btif_hd.cc",
-        "src/btif_le_audio.cc",
-        "src/btif_le_audio_broadcaster.cc",
-        "src/btif_pan.cc",
-        "src/btif_profile_queue.cc",
-        "src/btif_profile_storage.cc",
-        "src/btif_rc.cc",
-        "src/profile_log_levels.cc",
-    ],
-    generated_headers: [
-        "BluetoothGeneratedDumpsysDataSchema_h",
-        "BluetoothGeneratedPackets_h",
-    ],
-    local_include_dirs: [
-        "include"
-    ],
-    target: {
-        android: {
-            whole_static_libs: [
-                "libPlatformProperties",
-            ],
-            srcs: ["src/btif_avrcp_audio_track.cc"],
-        },
-        host: {
-            srcs: [
-                     "src/btif_avrcp_audio_track_linux.cc",
-                     "src/btif_leaudio_hal_version_host.cc",
-                  ],
-        },
-    },
-    static_libs: [
-        "avrcp-target-service",
-        "lib-bt-packets",
-        "lib-bt-packets-base",
-        "lib-bt-packets-avrcp",
-        "libbt-audio-hal-interface",
-        "libbt-stack",
-        "libbt-stack-core",
-        "libbtif-core",
-        "libaudio-a2dp-hw-utils",
-    ],
-    cflags: [
-        "-DBUILDCFG",
-    ],
-    host_supported: true,
-    min_sdk_version: "Tiramisu"
-}
-
-cc_library_static {
-    name: "libbtif-core",
-    defaults: ["fluoride_basic_defaults"],
-    include_dirs: btifCommonIncludes,
-    srcs: [
-        // Callouts
-        "co/bta_dm_co.cc",
-        "co/bta_gatts_co.cc",
-        // BTIF implementation
         "src/btif_activity_attribution.cc",
+        "src/btif_av.cc",
         "src/btif_ble_advertiser.cc",
         "src/btif_ble_scanner.cc",
         "src/btif_bqr.cc",
@@ -179,6 +117,7 @@ cc_library_static {
         "src/btif_config_cache.cc",
         "src/btif_config_transcode.cc",
         "src/btif_core.cc",
+        "src/btif_csis_client.cc",
         "src/btif_debug_conn.cc",
         "src/btif_dm.cc",
         "src/btif_gatt.cc",
@@ -186,8 +125,20 @@ cc_library_static {
         "src/btif_gatt_server.cc",
         "src/btif_gatt_test.cc",
         "src/btif_gatt_util.cc",
+        "src/btif_vc.cc",
+        "src/btif_has_client.cc",
+        "src/btif_hearing_aid.cc",
+        "src/btif_hf.cc",
+        "src/btif_hf_client.cc",
+        "src/btif_hh.cc",
+        "src/btif_hd.cc",
+        "src/btif_le_audio.cc",
+        "src/btif_le_audio_broadcaster.cc",
         "src/btif_metrics_logging.cc",
+        "src/btif_pan.cc",
         "src/btif_profile_queue.cc",
+        "src/btif_profile_storage.cc",
+        "src/btif_rc.cc",
         "src/btif_sdp.cc",
         "src/btif_sdp_server.cc",
         "src/btif_sock.cc",
@@ -201,12 +152,16 @@ cc_library_static {
         "src/btif_uid.cc",
         "src/btif_util.cc",
         "src/btif_keystore.cc",
+        "src/profile_log_levels.cc",
         "src/stack_manager.cc",
     ],
     generated_headers: [
         "BluetoothGeneratedDumpsysDataSchema_h",
         "BluetoothGeneratedPackets_h",
     ],
+    local_include_dirs: [
+        "include"
+    ],
     target: {
         android: {
             whole_static_libs: [
@@ -222,18 +177,23 @@ cc_library_static {
         },
     },
     static_libs: [
+        "avrcp-target-service",
         "lib-bt-packets",
         "lib-bt-packets-base",
+        "lib-bt-packets-avrcp",
         "libbt-audio-hal-interface",
-        "libbt-stack-core",
+        "libbt-stack",
         "libaudio-a2dp-hw-utils",
     ],
     cflags: [
-        /* we export all classes, so change default visibility, instead of having EXPORT_SYMBOL on each class*/
-        "-fvisibility=default",
         "-DBUILDCFG",
     ],
     host_supported: true,
+}
+
+cc_library_static {
+    name: "libbtif",
+    defaults: ["libbtif_defaults"],
     min_sdk_version: "Tiramisu"
 }
 
@@ -269,9 +229,6 @@ cc_test {
         "libbluetooth-types",
         "libbt-audio-hal-interface",
         "libbt-bta",
-        "libbt-bta-core",
-        "libbtif",
-        "libbtif-core",
         "libbt-common",
         "libbtcore",
         "libbtdevice",
@@ -280,7 +237,6 @@ cc_test {
         "libbt-sbc-decoder",
         "libbt-sbc-encoder",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-utils",
         "libFraunhoferAAC",
         "libg722codec",
@@ -289,6 +245,7 @@ cc_test {
         "libudrv-uipc",
    ],
     whole_static_libs: [
+        "libbtif",
         "libbluetooth-dumpsys",
         "libbluetooth-for-tests",
     ],
@@ -524,6 +481,9 @@ cc_test {
           "liblog",
           "libtinyxml2",
       ],
+      whole_static_libs: [
+          "libbtif",
+      ],
       static_libs: [
           "android.hardware.bluetooth.a2dp@1.0",
           "avrcp-target-service",
@@ -533,9 +493,6 @@ cc_test {
           "libbt-sbc-decoder",
           "libbt-sbc-encoder",
           "libbt-stack",
-          "libbt-stack-core",
-          "libbtif",
-          "libbtif-core",
           "libbtdevice",
           "lib-bt-packets",
           "lib-bt-packets-avrcp",
@@ -647,6 +604,9 @@ cc_test {
           "liblog",
           "libtinyxml2",
       ],
+      whole_static_libs: [
+          "libbtif",
+      ],
       static_libs: [
           "android.hardware.bluetooth.a2dp@1.0",
           "avrcp-target-service",
@@ -655,10 +615,7 @@ cc_test {
           "libbt-audio-hal-interface",
           "libbt-sbc-decoder",
           "libbt-sbc-encoder",
-          "libbtif",
-          "libbtif-core",
           "libbt-stack",
-          "libbt-stack-core",
           "libbtdevice",
           "lib-bt-packets",
           "lib-bt-packets-avrcp",
diff --git a/system/btif/BUILD.gn b/system/btif/BUILD.gn
index 814c911dde8..3b55c8bdd51 100644
--- a/system/btif/BUILD.gn
+++ b/system/btif/BUILD.gn
@@ -33,9 +33,6 @@ static_library("btif") {
     # HAL layer
     "src/bluetooth.cc",
 
-    # Initializing core library
-    "src/profile_log_levels.cc",
-
     # BTIF implementation
     "src/btif_a2dp.cc",
 
@@ -90,6 +87,7 @@ static_library("btif") {
     "src/btif_storage.cc",
     "src/btif_uid.cc",
     "src/btif_util.cc",
+    "src/profile_log_levels.cc",
     "src/stack_manager.cc",
   ]
 
diff --git a/system/btif/include/btif_dm.h b/system/btif/include/btif_dm.h
index 6acdd55a722..790998fcd02 100644
--- a/system/btif/include/btif_dm.h
+++ b/system/btif/include/btif_dm.h
@@ -82,8 +82,7 @@ void btif_dm_disconnect_all_acls();
 
 void btif_dm_le_rand(LeRandCallback callback);
 void btif_dm_set_event_filter_connection_setup_all_devices();
-void btif_dm_allow_wake_by_hid(
-    std::vector<std::pair<RawAddress, uint8_t>> addrs);
+void btif_dm_allow_wake_by_hid();
 void btif_dm_restore_filter_accept_list();
 void btif_dm_set_default_event_mask_except(uint64_t mask, uint64_t le_mask);
 void btif_dm_set_event_filter_inquiry_result_all_devices();
diff --git a/system/btif/src/bluetooth.cc b/system/btif/src/bluetooth.cc
index 483e7631d60..f1a32845f9a 100644
--- a/system/btif/src/bluetooth.cc
+++ b/system/btif/src/bluetooth.cc
@@ -733,9 +733,7 @@ static int restore_filter_accept_list() {
 
 static int allow_wake_by_hid() {
   if (!interface_ready()) return BT_STATUS_NOT_READY;
-  auto hid_addrs = btif_storage_get_hid_device_addresses();
-  do_in_main_thread(FROM_HERE, base::BindOnce(btif_dm_allow_wake_by_hid,
-                                              std::move(hid_addrs)));
+  do_in_main_thread(FROM_HERE, base::BindOnce(btif_dm_allow_wake_by_hid));
   return BT_STATUS_SUCCESS;
 }
 
diff --git a/system/btif/src/btif_bqr.cc b/system/btif/src/btif_bqr.cc
index dd35c28795f..e79fda32d9f 100644
--- a/system/btif/src/btif_bqr.cc
+++ b/system/btif/src/btif_bqr.cc
@@ -23,7 +23,6 @@
 #include <stdio.h>
 #include <sys/stat.h>
 
-#include "btif/include/stack_manager.h"
 #include "btif_bqr.h"
 #include "btif_common.h"
 #include "btm_api.h"
@@ -32,6 +31,7 @@
 #include "common/time_util.h"
 #include "core_callbacks.h"
 #include "osi/include/properties.h"
+#include "stack_manager.h"
 
 namespace bluetooth {
 namespace bqr {
@@ -329,8 +329,7 @@ void ConfigureBqr(const BqrConfiguration& bqr_config) {
 
 void BqrVscCompleteCallback(tBTM_VSC_CMPL* p_vsc_cmpl_params) {
   if (p_vsc_cmpl_params->param_len < 1) {
-    LOG(ERROR) << __func__
-               << ": The length of returned parameters is less than 1";
+    LOG(ERROR) << __func__ << ": The length of returned parameters is less than 1";
     return;
   }
 
@@ -341,8 +340,7 @@ void BqrVscCompleteCallback(tBTM_VSC_CMPL* p_vsc_cmpl_params) {
   // Current_Quality_Event_Mask | 4 octets | Indicates current bit mask setting
   STREAM_TO_UINT8(status, p_event_param_buf);
   if (status != HCI_SUCCESS) {
-    LOG(ERROR) << __func__
-               << ": Fail to configure BQR. status: " << loghex(status);
+    LOG(ERROR) << __func__ << ": Fail to configure BQR. status: " << loghex(status);
     return;
   }
 
diff --git a/system/btif/src/btif_dm.cc b/system/btif/src/btif_dm.cc
index 371815d60b4..2c700e403fa 100644
--- a/system/btif/src/btif_dm.cc
+++ b/system/btif/src/btif_dm.cc
@@ -96,8 +96,7 @@ const Uuid UUID_HEARING_AID = Uuid::FromString("FDF0");
 const Uuid UUID_VC = Uuid::FromString("1844");
 const Uuid UUID_CSIS = Uuid::FromString("1846");
 const Uuid UUID_LE_AUDIO = Uuid::FromString("184E");
-const Uuid UUID_LE_MIDI =
-    Uuid::FromString("03B80E5A-EDE8-4B33-A751-6CE34EC4C700");
+const Uuid UUID_LE_MIDI = Uuid::FromString("03B80E5A-EDE8-4B33-A751-6CE34EC4C700");
 const Uuid UUID_HAS = Uuid::FromString("1854");
 const Uuid UUID_BASS = Uuid::FromString("184F");
 const Uuid UUID_BATTERY = Uuid::FromString("180F");
@@ -192,9 +191,7 @@ typedef struct {
   bt_oob_data_t p256_data; /* P256 Data or empty */
 } btif_dm_oob_cb_t;
 
-typedef struct {
-  unsigned int manufact_id;
-} skip_sdp_entry_t;
+typedef struct { unsigned int manufact_id; } skip_sdp_entry_t;
 
 typedef struct {
   bluetooth::common::LruCache<RawAddress, std::vector<uint8_t>> le_audio_cache;
@@ -293,7 +290,9 @@ static bool is_bonding_or_sdp() {
          (pairing_cb.state == BT_BOND_STATE_BONDED && pairing_cb.sdp_attempts);
 }
 
-void btif_dm_init(uid_set_t* set) { uid_set = set; }
+void btif_dm_init(uid_set_t* set) {
+  uid_set = set;
+}
 
 void btif_dm_cleanup(void) {
   if (uid_set) {
@@ -1913,7 +1912,7 @@ static void btif_dm_upstreams_evt(uint16_t event, char* p_param) {
       break;
 
     case BTA_DM_LINK_UP_FAILED_EVT:
-      GetInterfaceToProfiles()->events->invoke_acl_state_changed_cb(
+      invoke_acl_state_changed_cb(
           BT_STATUS_FAIL, p_data->link_up_failed.bd_addr,
           BT_ACL_STATE_DISCONNECTED, p_data->link_up_failed.transport_link_type,
           p_data->link_up_failed.status,
@@ -2502,8 +2501,7 @@ void btif_dm_get_local_class_of_device(DEV_CLASS device_class) {
     // Build a string of all the chars until the next comma, null, or end of the
     // buffer is reached. If any char is not a digit, then return the default.
     std::string value;
-    while (i < PROPERTY_VALUE_MAX && prop_cod[i] != ',' &&
-           prop_cod[i] != '\0') {
+    while (i < PROPERTY_VALUE_MAX && prop_cod[i] != ',' && prop_cod[i] != '\0') {
       char c = prop_cod[i++];
       if (!std::isdigit(c)) {
         LOG_ERROR("%s: COD malformed, '%c' is a non-digit", __func__, c);
@@ -2521,7 +2519,7 @@ void btif_dm_get_local_class_of_device(DEV_CLASS device_class) {
     // Each number in the list must be one byte, meaning 0 (0x00) -> 255 (0xFF)
     if (value.size() > 3 || value.size() == 0) {
       LOG_ERROR("%s: COD malformed, '%s' must be between [0, 255]", __func__,
-                value.c_str());
+          value.c_str());
       return;
     }
 
@@ -2529,7 +2527,7 @@ void btif_dm_get_local_class_of_device(DEV_CLASS device_class) {
     uint32_t uint32_val = static_cast<uint32_t>(std::stoul(value.c_str()));
     if (uint32_val > 0xFF) {
       LOG_ERROR("%s: COD malformed, '%s' must be between [0, 255]", __func__,
-                value.c_str());
+          value.c_str());
       return;
     }
 
@@ -2564,7 +2562,7 @@ void btif_dm_get_local_class_of_device(DEV_CLASS device_class) {
   }
 
   LOG_DEBUG("%s: Using class of device '0x%x, 0x%x, 0x%x'", __func__,
-            device_class[0], device_class[1], device_class[2]);
+      device_class[0], device_class[1], device_class[2]);
 }
 
 /*******************************************************************************
@@ -2608,10 +2606,9 @@ bt_status_t btif_dm_get_adapter_property(bt_property_t* prop) {
       prop->len = sizeof(DEV_CLASS);
     } break;
 
-      // While fetching IO_CAP* values for the local device, we maintain
-      // backward compatibility by using the value from #define macros
-      // BTM_LOCAL_IO_CAPS, BTM_LOCAL_IO_CAPS_BLE if the values have never been
-      // explicitly set.
+    // While fetching IO_CAP* values for the local device, we maintain backward
+    // compatibility by using the value from #define macros BTM_LOCAL_IO_CAPS,
+    // BTM_LOCAL_IO_CAPS_BLE if the values have never been explicitly set.
 
     case BT_PROPERTY_LOCAL_IO_CAPS: {
       *(bt_io_cap_t*)prop->val = (bt_io_cap_t)BTM_LOCAL_IO_CAPS;
@@ -3691,9 +3688,10 @@ void btif_dm_set_event_filter_connection_setup_all_devices() {
   BTA_DmSetEventFilterConnectionSetupAllDevices();
 }
 
-void btif_dm_allow_wake_by_hid(
-    std::vector<std::pair<RawAddress, uint8_t>> addrs) {
-  BTA_DmAllowWakeByHid(std::move(addrs));
+void btif_dm_allow_wake_by_hid() {
+  // Autoplumbed
+  auto le_hid_devices = btif_storage_get_hid_device_addresses();
+  BTA_DmAllowWakeByHid(le_hid_devices);
 }
 
 void btif_dm_restore_filter_accept_list() {
diff --git a/system/btif/src/btif_storage.cc b/system/btif/src/btif_storage.cc
index f3a3d2f6a45..44deb466ee2 100644
--- a/system/btif/src/btif_storage.cc
+++ b/system/btif/src/btif_storage.cc
@@ -42,7 +42,6 @@
 #include <unordered_set>
 #include <vector>
 
-#include "btif/include/stack_manager.h"
 #include "btif_api.h"
 #include "btif_config.h"
 #include "btif_util.h"
@@ -56,6 +55,7 @@
 #include "osi/include/osi.h"
 #include "stack/include/bt_octets.h"
 #include "stack/include/btu.h"
+#include "stack_manager.h"
 #include "types/bluetooth/uuid.h"
 #include "types/raw_address.h"
 
diff --git a/system/build/Android.bp b/system/build/Android.bp
index fd3264740e9..d35a434abbe 100644
--- a/system/build/Android.bp
+++ b/system/build/Android.bp
@@ -267,14 +267,11 @@ fluoride_defaults {
     static_libs: [
         "libbte",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-common",
         "libbtdevice",
         "libbtif",
-        "libbtif-core",
         "libbt-hci",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-utils",
         "libbtcore",
         "libosi",
diff --git a/system/gd/rust/topshim/facade/Android.bp b/system/gd/rust/topshim/facade/Android.bp
index d11b624383f..5d2b06b2ca7 100644
--- a/system/gd/rust/topshim/facade/Android.bp
+++ b/system/gd/rust/topshim/facade/Android.bp
@@ -40,17 +40,13 @@ rust_binary_host {
         "libevent",
         "libbt_topshim_cxx",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-common",
         "libbtdevice",
         "libbtif",
-        "libbtif-core",
         "libbt-hci",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-utils",
         "libbtcore",
-        "libbthalutils",
         "libosi",
         "libbt-protos-lite",
         "libbte",
diff --git a/system/service/Android.bp b/system/service/Android.bp
index bf0214b602b..91dcff058dd 100644
--- a/system/service/Android.bp
+++ b/system/service/Android.bp
@@ -99,15 +99,12 @@ cc_binary {
         "libbluetooth-types",
         "libbt-audio-hal-interface",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-common",
         "libbtcore",
         "libbtdevice",
         "libbte",
         "libbt-hci",
-        "libbthalutils",
         "libbtif",
-        "libbtif-core",
         "lib-bt-packets",
         "lib-bt-packets-avrcp",
         "lib-bt-packets-base",
@@ -183,14 +180,12 @@ cc_test {
         "libbluetooth-types",
         "libbt-audio-hal-interface",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-common",
         "libbtcore",
         "libbtdevice",
         "libbte",
         "libbt-hci",
         "libbtif",
-        "libbtif-core",
         "lib-bt-packets",
         "lib-bt-packets-avrcp",
         "lib-bt-packets-base",
@@ -198,7 +193,6 @@ cc_test {
         "libbt-sbc-decoder",
         "libbt-sbc-encoder",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-utils",
         "libc++fs",
         "libchrome",
diff --git a/system/stack/Android.bp b/system/stack/Android.bp
index edd9e00660f..e60e2f4139f 100644
--- a/system/stack/Android.bp
+++ b/system/stack/Android.bp
@@ -111,68 +111,6 @@ cc_library_static {
         "bnep/bnep_api.cc",
         "bnep/bnep_main.cc",
         "bnep/bnep_utils.cc",
-        "btm/hfp_msbc_encoder.cc",
-        "btm/hfp_msbc_decoder.cc",
-        "hid/hidh_api.cc",
-        "hid/hidh_conn.cc",
-        "hid/hidd_api.cc",
-        "hid/hidd_conn.cc",
-        "pan/pan_api.cc",
-        "pan/pan_main.cc",
-        "pan/pan_utils.cc",
-    ],
-    static_libs: [
-        "libbt-hci",
-        "libbt-stack-core",
-    ],
-    whole_static_libs: [
-        "libldacBT_abr",
-        "libldacBT_enc",
-        "libaptx_enc",
-        "libaptxhd_enc",
-    ],
-    host_supported: true,
-    min_sdk_version: "Tiramisu"
-}
-
-cc_library_static {
-    name: "libbt-stack-core",
-    defaults: ["fluoride_basic_defaults"],
-    local_include_dirs: [
-        "include",
-        "avct",
-        "btm",
-        "avrc",
-        "l2cap",
-        "avdt",
-        "eatt",
-        "gatt",
-        "gap",
-        "pan",
-        "bnep",
-        "hid",
-        "metrics",
-        "sdp",
-        "smp",
-        "srvc",
-    ],
-    header_libs: [
-        "libbluetooth_headers",
-    ],
-    include_dirs: [
-        "packages/modules/Bluetooth/system",
-        "packages/modules/Bluetooth/system/gd",
-        "packages/modules/Bluetooth/system/vnd/include",
-        "packages/modules/Bluetooth/system/vnd/ble",
-        "packages/modules/Bluetooth/system/btif/include",
-        "packages/modules/Bluetooth/system/internal_include",
-        "packages/modules/Bluetooth/system/udrv/include",
-        "packages/modules/Bluetooth/system/bta/include",
-        "packages/modules/Bluetooth/system/bta/sys",
-        "packages/modules/Bluetooth/system/utils/include",
-        "packages/modules/Bluetooth/system/gd/rust/shim",
-    ],
-    srcs: crypto_toolbox_srcs + [
         "btm/ble_advertiser_hci_interface.cc",
         "acl/acl.cc",
         "acl/btm_acl.cc",
@@ -201,6 +139,8 @@ cc_library_static {
         "btm/btm_iso.cc",
         "btm/btm_sec.cc",
         "btm/btm_scn.cc",
+        "btm/hfp_msbc_encoder.cc",
+        "btm/hfp_msbc_decoder.cc",
         "btu/btu_hcif.cc",
         "btu/btu_task.cc",
         "eatt/eatt.cc",
@@ -219,6 +159,10 @@ cc_library_static {
         "gatt/gatt_utils.cc",
         "hcic/hciblecmds.cc",
         "hcic/hcicmds.cc",
+        "hid/hidh_api.cc",
+        "hid/hidh_conn.cc",
+        "hid/hidd_api.cc",
+        "hid/hidd_conn.cc",
         "l2cap/l2c_api.cc",
         "l2cap/l2c_ble.cc",
         "l2cap/l2c_csm.cc",
@@ -227,6 +171,9 @@ cc_library_static {
         "l2cap/l2c_main.cc",
         "l2cap/l2c_utils.cc",
         "metrics/stack_metrics_logging.cc",
+        "pan/pan_api.cc",
+        "pan/pan_main.cc",
+        "pan/pan_utils.cc",
         "rfcomm/port_api.cc",
         "rfcomm/port_rfc.cc",
         "rfcomm/port_utils.cc",
@@ -255,16 +202,15 @@ cc_library_static {
         "srvc/srvc_dis.cc",
         "srvc/srvc_eng.cc",
     ],
-    generated_headers: [
-        "BluetoothGeneratedDumpsysDataSchema_h",
-    ],
-    cflags: [
-        /* we export all classes, so change default visibility, instead of having EXPORT_SYMBOL on each class*/
-        "-fvisibility=default",
-    ],
     static_libs: [
         "libbt-hci",
     ],
+    whole_static_libs: [
+        "libldacBT_abr",
+        "libldacBT_enc",
+        "libaptx_enc",
+        "libaptxhd_enc",
+    ],
     host_supported: true,
     min_sdk_version: "Tiramisu"
 }
@@ -316,15 +262,12 @@ cc_test {
         "libbluetooth-dumpsys",
         "libbtcore",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-common",
         "libbt-sbc-decoder",
         "libbt-sbc-encoder",
         "libbt-utils",
         "libbtif",
-        "libbtif-core",
         "libFraunhoferAAC",
         "libbt-hci",
         "libbtdevice",
diff --git a/system/stack/test/fuzzers/Android.bp b/system/stack/test/fuzzers/Android.bp
index 4b7a69c2406..54812c0b298 100644
--- a/system/stack/test/fuzzers/Android.bp
+++ b/system/stack/test/fuzzers/Android.bp
@@ -20,19 +20,17 @@ cc_defaults {
     ],
     static_libs: [
         "libbt-stack",
-        "libbt-stack-core",
         "libbte",
         "libFraunhoferAAC",
         "libbt-audio-hal-interface",
         "libbtcore",
         "libbt-bta",
-        "libbt-bta-core",
+        "libbt-stack",
         "libbt-common",
         "libbt-sbc-decoder",
         "libbt-sbc-encoder",
         "libbt-utils",
         "libbtif",
-        "libbtif-core",
         "libbt-hci",
         "libbtdevice",
         "libg722codec",
diff --git a/system/test/headless/Android.bp b/system/test/headless/Android.bp
index 520850bb08e..9755dd09b20 100644
--- a/system/test/headless/Android.bp
+++ b/system/test/headless/Android.bp
@@ -75,14 +75,12 @@ cc_binary {
         "libbluetooth_rust_interop",
         "libbt-audio-hal-interface",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt_callbacks_cxx",
         "libbt-common",
         "libbtdevice",
         "libbte",
         "libbt-hci",
         "libbtif",
-        "libbtif-core",
         "lib-bt-packets",
         "lib-bt-packets-avrcp",
         "lib-bt-packets-base",
@@ -92,7 +90,6 @@ cc_binary {
         "libbt_shim_bridge",
         "libbt_shim_ffi",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-utils",
         "libc++fs",
         "libflatbuffers-cpp",
diff --git a/system/test/suite/Android.bp b/system/test/suite/Android.bp
index f56427d4acf..c39b1eb2048 100644
--- a/system/test/suite/Android.bp
+++ b/system/test/suite/Android.bp
@@ -72,21 +72,18 @@ cc_defaults {
         "libbluetoothtbd_hal",
         "libbt-audio-hal-interface",
         "libbt-bta",
-        "libbt-bta-core",
         "libbt-common",
         "libbtcore",
         "libbtdevice",
         "libbte",
         "libbt-hci",
         "libbtif",
-        "libbtif-core",
         "lib-bt-packets",
         "lib-bt-packets-avrcp",
         "lib-bt-packets-base",
         "libbt-sbc-decoder",
         "libbt-sbc-encoder",
         "libbt-stack",
-        "libbt-stack-core",
         "libbt-utils",
         "libflatbuffers-cpp",
         "libFraunhoferAAC",
-- 
GitLab