diff options
-rw-r--r-- | Android.bp | 24 | ||||
-rw-r--r-- | AndroidGTestForce32Template.xml | 44 | ||||
-rw-r--r-- | system/audio_a2dp_hw/Android.bp | 1 | ||||
-rw-r--r-- | system/audio_hearing_aid_hw/Android.bp | 1 | ||||
-rw-r--r-- | system/bta/Android.bp | 11 | ||||
-rw-r--r-- | system/btcore/Android.bp | 1 | ||||
-rw-r--r-- | system/btif/Android.bp | 7 | ||||
-rw-r--r-- | system/common/Android.bp | 2 | ||||
-rw-r--r-- | system/device/Android.bp | 2 | ||||
-rw-r--r-- | system/embdrv/tests/Android.bp | 2 | ||||
-rw-r--r-- | system/gd/Android.bp | 2 | ||||
-rw-r--r-- | system/gd/dumpsys/Android.bp | 1 | ||||
-rw-r--r-- | system/hci/Android.bp | 2 | ||||
-rw-r--r-- | system/main/Android.bp | 1 | ||||
-rw-r--r-- | system/osi/Android.bp | 1 | ||||
-rw-r--r-- | system/packet/Android.bp | 1 | ||||
-rw-r--r-- | system/profile/avrcp/Android.bp | 1 | ||||
-rw-r--r-- | system/profile/sdp/Android.bp | 1 | ||||
-rw-r--r-- | system/stack/Android.bp | 24 | ||||
-rw-r--r-- | system/stack/test/a2dp/AndroidTestForce32.xml | 38 | ||||
-rw-r--r-- | system/test/suite/Android.bp | 1 | ||||
-rw-r--r-- | system/types/Android.bp | 1 |
22 files changed, 169 insertions, 0 deletions
diff --git a/Android.bp b/Android.bp index 521a562865..6f988c8cc0 100644 --- a/Android.bp +++ b/Android.bp @@ -67,3 +67,27 @@ filegroup { "AndroidTestTemplate.xml", ], } + +filegroup { + name: "BluetoothGTestForce32ConfigTemplate", + srcs: [ + "AndroidGTestForce32Template.xml", + ], +} + +// Address Sanitizer is flaky on Android x86_64 binaries but it's not on x86 +// binaries. +// This default workaround the x86_64 ASAN flakyness by running 32bit binaries +// on 64bit targets. +// TODO(b/154347133): Remove this workaround +cc_defaults { + name: "bluetooth_gtest_x86_asan_workaround", + target: { + android_x86: { + test_config_template: ":BluetoothGTestForce32ConfigTemplate", + }, + android_x86_64: { + enabled: false, + }, + }, +} diff --git a/AndroidGTestForce32Template.xml b/AndroidGTestForce32Template.xml new file mode 100644 index 0000000000..bad033a293 --- /dev/null +++ b/AndroidGTestForce32Template.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2023 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<configuration description="Runs {MODULE}."> + <option name="test-suite-tag" value="apct" /> + <option name="test-suite-tag" value="apct-native" /> + <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" /> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> + <option name="cleanup" value="true" /> + <option name="push" value="{MODULE}32->/data/local/tmp/{MODULE}" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> + <option name="run-command" value="settings put global ble_scan_always_enabled 0" /> + <option name="run-command" value="cmd bluetooth_manager disable" /> + <option name="run-command" value="cmd bluetooth_manager wait-for-state:STATE_OFF" /> + </target_preparer> + <target_preparer class="com.android.tradefed.targetprep.FolderSaver"> + <option name="device-path" value="/data/vendor/ssrdump" /> + </target_preparer> + <test class="com.android.tradefed.testtype.GTest" > + <option name="native-test-device-path" value="/data/local/tmp" /> + <option name="module-name" value="{MODULE}" /> + <option name="run-test-as" value="0" /> + </test> + + <!-- Only run tests in MTS if the Bluetooth Mainline module is installed. --> + <object type="module_controller" + class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController"> + <option name="mainline-module-package-name" value="com.android.btservices" /> + <option name="mainline-module-package-name" value="com.google.android.btservices" /> + </object> +</configuration> diff --git a/system/audio_a2dp_hw/Android.bp b/system/audio_a2dp_hw/Android.bp index b77046ac41..e1f1ad8f35 100644 --- a/system/audio_a2dp_hw/Android.bp +++ b/system/audio_a2dp_hw/Android.bp @@ -61,6 +61,7 @@ cc_test { defaults: [ "audio_a2dp_hw_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], srcs: [ "test/audio_a2dp_hw_test.cc", diff --git a/system/audio_hearing_aid_hw/Android.bp b/system/audio_hearing_aid_hw/Android.bp index 7dd259329e..3d6a30b050 100644 --- a/system/audio_hearing_aid_hw/Android.bp +++ b/system/audio_hearing_aid_hw/Android.bp @@ -43,6 +43,7 @@ cc_test { defaults: [ "audio_hearing_aid_hw_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], srcs: [ "test/audio_hearing_aid_hw_test.cc", diff --git a/system/bta/Android.bp b/system/bta/Android.bp index f19cd19aff..df561febe6 100644 --- a/system/bta/Android.bp +++ b/system/bta/Android.bp @@ -187,6 +187,7 @@ cc_test { defaults: [ "fluoride_bta_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], srcs: [ @@ -233,6 +234,7 @@ cc_test { defaults: [ "fluoride_bta_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -325,6 +327,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, include_dirs: [ @@ -379,6 +382,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, include_dirs: [ @@ -421,6 +425,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, include_dirs: [ @@ -540,6 +545,7 @@ cc_test { "fluoride_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, target: { @@ -628,6 +634,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below @@ -721,6 +728,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below @@ -772,6 +780,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, include_dirs: [ @@ -843,6 +852,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below @@ -899,6 +909,7 @@ cc_test { "fluoride_bta_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below diff --git a/system/btcore/Android.bp b/system/btcore/Android.bp index aea11045d8..2d9916b7fb 100644 --- a/system/btcore/Android.bp +++ b/system/btcore/Android.bp @@ -89,6 +89,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: ["include"], include_dirs: ["packages/modules/Bluetooth/system"], diff --git a/system/btif/Android.bp b/system/btif/Android.bp index 7e201380c1..f8de168646 100644 --- a/system/btif/Android.bp +++ b/system/btif/Android.bp @@ -244,6 +244,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], include_dirs: btifCommonIncludes, @@ -312,6 +313,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], include_dirs: btifCommonIncludes, @@ -342,6 +344,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -380,6 +383,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -420,6 +424,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], include_dirs: btifCommonIncludes, @@ -446,6 +451,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], include_dirs: [ @@ -569,6 +575,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], include_dirs: [ diff --git a/system/common/Android.bp b/system/common/Android.bp index 18aa470498..157efa7ab8 100644 --- a/system/common/Android.bp +++ b/system/common/Android.bp @@ -48,6 +48,7 @@ cc_test { "fluoride_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, test_options: { @@ -96,6 +97,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], include_dirs: ["packages/modules/Bluetooth/system"], diff --git a/system/device/Android.bp b/system/device/Android.bp index c46929f45d..94611ebf8c 100644 --- a/system/device/Android.bp +++ b/system/device/Android.bp @@ -38,6 +38,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, include_dirs: ["packages/modules/Bluetooth/system"], @@ -65,6 +66,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], include_dirs: [ "packages/modules/Bluetooth/system", diff --git a/system/embdrv/tests/Android.bp b/system/embdrv/tests/Android.bp index 065569bcbb..1364229693 100644 --- a/system/embdrv/tests/Android.bp +++ b/system/embdrv/tests/Android.bp @@ -11,6 +11,7 @@ cc_test { name: "libaptx_enc_tests", defaults: [ "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -30,6 +31,7 @@ cc_test { name: "libaptxhd_enc_tests", defaults: [ "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, diff --git a/system/gd/Android.bp b/system/gd/Android.bp index 8697ec0493..83535db137 100644 --- a/system/gd/Android.bp +++ b/system/gd/Android.bp @@ -350,6 +350,7 @@ cc_test { "gd_clang_coverage_bin", "libchrome_support_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below @@ -445,6 +446,7 @@ cc_test { "gd_clang_coverage_bin", "libchrome_support_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], include_dirs: ["packages/modules/Bluetooth/system/gd"], host_supported: true, diff --git a/system/gd/dumpsys/Android.bp b/system/gd/dumpsys/Android.bp index d644a7d52d..4531601bd8 100644 --- a/system/gd/dumpsys/Android.bp +++ b/system/gd/dumpsys/Android.bp @@ -181,6 +181,7 @@ cc_test { defaults: [ "fluoride_common_options", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, test_options: { diff --git a/system/hci/Android.bp b/system/hci/Android.bp index b1e95037ec..8b130d81a8 100644 --- a/system/hci/Android.bp +++ b/system/hci/Android.bp @@ -65,6 +65,7 @@ cc_test { "fluoride_basic_defaults", "fluoride_test_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: false, local_include_dirs: [ @@ -99,6 +100,7 @@ cc_test { defaults: [ "fluoride_unit_test_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", diff --git a/system/main/Android.bp b/system/main/Android.bp index 2ef441409d..01cf677c05 100644 --- a/system/main/Android.bp +++ b/system/main/Android.bp @@ -155,6 +155,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], include_dirs: [ "packages/modules/Bluetooth/system", diff --git a/system/osi/Android.bp b/system/osi/Android.bp index 06a7f1f725..1c4e112dca 100644 --- a/system/osi/Android.bp +++ b/system/osi/Android.bp @@ -125,6 +125,7 @@ cc_test { defaults: [ "fluoride_osi_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, srcs: [ diff --git a/system/packet/Android.bp b/system/packet/Android.bp index cb70539fdf..97ca3b0244 100644 --- a/system/packet/Android.bp +++ b/system/packet/Android.bp @@ -30,6 +30,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, diff --git a/system/profile/avrcp/Android.bp b/system/profile/avrcp/Android.bp index 83e8bde1a1..eda175f6bf 100644 --- a/system/profile/avrcp/Android.bp +++ b/system/profile/avrcp/Android.bp @@ -49,6 +49,7 @@ cc_test { "clang_coverage_bin", "libchrome_support_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, test_options: { diff --git a/system/profile/sdp/Android.bp b/system/profile/sdp/Android.bp index 1c2f9edc10..2069b1ffa8 100644 --- a/system/profile/sdp/Android.bp +++ b/system/profile/sdp/Android.bp @@ -33,6 +33,7 @@ cc_test { "fluoride_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, include_dirs: [ diff --git a/system/stack/Android.bp b/system/stack/Android.bp index ea82d1d899..1919ff9c4f 100644 --- a/system/stack/Android.bp +++ b/system/stack/Android.bp @@ -293,6 +293,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], local_include_dirs: [ @@ -362,6 +363,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -431,6 +433,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, test_suites: ["device-tests"], @@ -495,6 +498,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], local_include_dirs: [ @@ -536,6 +540,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], local_include_dirs: [ @@ -564,6 +569,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], host_supported: true, test_suites: ["general-tests"], @@ -602,6 +608,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -651,6 +658,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -706,6 +714,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -737,6 +746,9 @@ cc_test { ], test_config: "test/a2dp/AndroidTest.xml", }, + android_x86: { + test_config: "test/a2dp/AndroidTestForce32.xml", + }, }, data: [ "test/a2dp/raw_data/*", @@ -808,6 +820,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -849,6 +862,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], test_suites: ["device-tests"], host_supported: true, @@ -896,6 +910,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "btm", @@ -944,6 +959,7 @@ cc_test { "fluoride_defaults", "clang_coverage_bin", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -997,6 +1013,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1106,6 +1123,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1152,6 +1170,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1207,6 +1226,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1271,6 +1291,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1350,6 +1371,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1423,6 +1445,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", @@ -1496,6 +1519,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], local_include_dirs: [ "include", diff --git a/system/stack/test/a2dp/AndroidTestForce32.xml b/system/stack/test/a2dp/AndroidTestForce32.xml new file mode 100644 index 0000000000..0aa2e362d6 --- /dev/null +++ b/system/stack/test/a2dp/AndroidTestForce32.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2022 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<configuration description="Runs net_test_stack_a2dp_codecs_native."> + <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" /> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> + <option name="cleanup" value="true" /> + <option name="push" value="net_test_stack_a2dp_codecs_native32->/data/local/tmp/net_test_stack_a2dp_codecs_native" /> + </target_preparer> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> + <option name="cleanup" value="true" /> + <option name="push" value="pcm0844s.wav->/data/local/tmp/test/a2dp/raw_data/pcm0844s.wav" /> + <option name="push" value="pcm1644s.wav->/data/local/tmp/test/a2dp/raw_data/pcm1644s.wav" /> + </target_preparer> + <test class="com.android.tradefed.testtype.GTest" > + <option name="native-test-device-path" value="/data/local/tmp" /> + <option name="module-name" value="net_test_stack_a2dp_codecs_native" /> + <option name="run-test-as" value="0" /> + </test> + + <!-- Only run tests in MTS if the Bluetooth Mainline module is installed. --> + <object type="module_controller" + class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController"> + <option name="mainline-module-package-name" value="com.google.android.bluetooth" /> + </object> +</configuration> diff --git a/system/test/suite/Android.bp b/system/test/suite/Android.bp index e7d9b6fa89..f73cc1031a 100644 --- a/system/test/suite/Android.bp +++ b/system/test/suite/Android.bp @@ -115,6 +115,7 @@ cc_test { defaults: [ "net_test_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], srcs: [ "adapter/adapter_unittest.cc", diff --git a/system/types/Android.bp b/system/types/Android.bp index 0923fe1e93..1f826ff02d 100644 --- a/system/types/Android.bp +++ b/system/types/Android.bp @@ -61,6 +61,7 @@ cc_test { defaults: [ "fluoride_defaults", "mts_defaults", + "bluetooth_gtest_x86_asan_workaround", ], include_dirs: [ "packages/modules/Bluetooth/system", |