summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sysprop/Android.bp1
-rw-r--r--sysprop/BUILD.gn1
-rw-r--r--sysprop/exported_include/android_bluetooth_sysprop.h1
-rw-r--r--sysprop/hardware.sysprop10
-rw-r--r--system/audio_hal_interface/Android.bp2
-rw-r--r--system/audio_hal_interface/fuzzer/Android.bp1
-rw-r--r--system/audio_hearing_aid_hw/Android.bp1
-rw-r--r--system/bta/Android.bp6
-rw-r--r--system/btcore/Android.bp1
-rw-r--r--system/btcore/fuzzer/Android.bp1
-rw-r--r--system/btif/Android.bp2
-rw-r--r--system/common/Android.bp2
-rw-r--r--system/device/Android.bp1
-rw-r--r--system/device/fuzzer/Android.bp1
-rw-r--r--system/hci/Android.bp1
-rw-r--r--system/osi/Android.bp2
-rw-r--r--system/osi/BUILD.gn2
-rw-r--r--system/osi/src/alarm.cc10
-rw-r--r--system/osi/test/fuzzers/alarm/Android.bp1
-rw-r--r--system/osi/test/fuzzers/allocator/Android.bp1
-rw-r--r--system/osi/test/fuzzers/fixed_queue/Android.bp1
-rw-r--r--system/osi/test/fuzzers/future/Android.bp1
-rw-r--r--system/osi/test/fuzzers/list/Android.bp1
-rw-r--r--system/osi/test/fuzzers/ringbuffer/Android.bp1
-rw-r--r--system/profile/avrcp/Android.bp1
-rw-r--r--system/stack/Android.bp17
-rw-r--r--system/stack/test/fuzzers/Android.bp1
-rw-r--r--system/test/headless/Android.bp1
-rw-r--r--system/types/Android.bp1
29 files changed, 72 insertions, 1 deletions
diff --git a/sysprop/Android.bp b/sysprop/Android.bp
index 1b72eb4cb7..e9d820b2f1 100644
--- a/sysprop/Android.bp
+++ b/sysprop/Android.bp
@@ -12,6 +12,7 @@ sysprop_library {
"bta.sysprop",
"device_id.sysprop",
"gap.sysprop",
+ "hardware.sysprop",
"hfp.sysprop",
],
property_owner: "Platform",
diff --git a/sysprop/BUILD.gn b/sysprop/BUILD.gn
index 407b7a88fc..9cdbf48530 100644
--- a/sysprop/BUILD.gn
+++ b/sysprop/BUILD.gn
@@ -8,6 +8,7 @@ sysprop("libcom.android.sysprop.bluetooth") {
"bta.sysprop",
"device_id.sysprop",
"gap.sysprop",
+ "hardware.sysprop",
"hfp.sysprop",
]
deps = [ "//bt/floss/android-base:android-base" ]
diff --git a/sysprop/exported_include/android_bluetooth_sysprop.h b/sysprop/exported_include/android_bluetooth_sysprop.h
index 8d5122d8e2..24053123ac 100644
--- a/sysprop/exported_include/android_bluetooth_sysprop.h
+++ b/sysprop/exported_include/android_bluetooth_sysprop.h
@@ -22,4 +22,5 @@
#include <bta.sysprop.h>
#include <device_id.sysprop.h>
#include <gap.sysprop.h>
+#include <hardware.sysprop.h>
#include <hfp.sysprop.h>
diff --git a/sysprop/hardware.sysprop b/sysprop/hardware.sysprop
new file mode 100644
index 0000000000..07c09134bb
--- /dev/null
+++ b/sysprop/hardware.sysprop
@@ -0,0 +1,10 @@
+module: "android.sysprop.bluetooth.hardware"
+owner: Platform
+
+prop {
+ api_name: "wakeup_supported"
+ type: Boolean
+ scope: Internal
+ access: Readonly
+ prop_name: "bluetooth.hardware.wakeup_supported"
+}
diff --git a/system/audio_hal_interface/Android.bp b/system/audio_hal_interface/Android.bp
index 987b859214..f485de80aa 100644
--- a/system/audio_hal_interface/Android.bp
+++ b/system/audio_hal_interface/Android.bp
@@ -187,6 +187,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libflagtest",
"libfmq",
"libgmock",
@@ -246,6 +247,7 @@ cc_defaults {
"libbtif",
"libbtif-core",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libcutils",
"libevent",
"libg722codec",
diff --git a/system/audio_hal_interface/fuzzer/Android.bp b/system/audio_hal_interface/fuzzer/Android.bp
index 93a734b02f..9a32f910e3 100644
--- a/system/audio_hal_interface/fuzzer/Android.bp
+++ b/system/audio_hal_interface/fuzzer/Android.bp
@@ -83,6 +83,7 @@ cc_defaults {
"libbtif",
"libbtif-core",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libcutils",
"libevent",
"libexpresslog",
diff --git a/system/audio_hearing_aid_hw/Android.bp b/system/audio_hearing_aid_hw/Android.bp
index 19694cac77..fa17bac274 100644
--- a/system/audio_hearing_aid_hw/Android.bp
+++ b/system/audio_hearing_aid_hw/Android.bp
@@ -59,6 +59,7 @@ cc_test {
static_libs: [
"audio.hearing_aid.default",
"libbluetooth_log",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
min_sdk_version: "29",
diff --git a/system/bta/Android.bp b/system/bta/Android.bp
index ad4e798016..8efc0fdba0 100644
--- a/system/bta/Android.bp
+++ b/system/bta/Android.bp
@@ -447,6 +447,7 @@ cc_test {
"libbt-platform-protos-lite",
"libbtcore",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"libosi",
"libstatslog_bt",
@@ -563,6 +564,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libcutils",
"libgmock",
"libosi",
@@ -610,6 +612,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"libosi",
],
@@ -823,6 +826,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libflatbuffers-cpp",
"libgmock",
@@ -933,6 +937,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libflatbuffers-cpp",
"libgmock",
@@ -1022,6 +1027,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libflagtest",
"libflatbuffers-cpp",
diff --git a/system/btcore/Android.bp b/system/btcore/Android.bp
index 96da5abf57..dc6df095ad 100644
--- a/system/btcore/Android.bp
+++ b/system/btcore/Android.bp
@@ -110,6 +110,7 @@ cc_test {
"libbluetooth_log",
"libbtcore",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
host_supported: true,
diff --git a/system/btcore/fuzzer/Android.bp b/system/btcore/fuzzer/Android.bp
index 746a3b31b5..c930086694 100644
--- a/system/btcore/fuzzer/Android.bp
+++ b/system/btcore/fuzzer/Android.bp
@@ -38,6 +38,7 @@ cc_defaults {
"libbt-common",
"libbtcore",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"liblog",
"libmodpb64",
diff --git a/system/btif/Android.bp b/system/btif/Android.bp
index 4aa018563b..649c08e941 100644
--- a/system/btif/Android.bp
+++ b/system/btif/Android.bp
@@ -396,6 +396,7 @@ cc_test {
"libbluetooth_gd",
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
shared_libs: [
@@ -430,6 +431,7 @@ cc_test {
"libbluetooth-types",
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
shared_libs: [
diff --git a/system/common/Android.bp b/system/common/Android.bp
index 3009c77ec0..4bc0bebf2d 100644
--- a/system/common/Android.bp
+++ b/system/common/Android.bp
@@ -140,6 +140,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"libosi",
@@ -168,6 +169,7 @@ cc_benchmark {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libosi",
],
diff --git a/system/device/Android.bp b/system/device/Android.bp
index 4753441a66..1a5d72ae45 100644
--- a/system/device/Android.bp
+++ b/system/device/Android.bp
@@ -68,6 +68,7 @@ cc_test {
"libbtcore",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
header_libs: ["libbluetooth_headers"],
diff --git a/system/device/fuzzer/Android.bp b/system/device/fuzzer/Android.bp
index 0b5e6c1296..a466d78d6b 100644
--- a/system/device/fuzzer/Android.bp
+++ b/system/device/fuzzer/Android.bp
@@ -52,6 +52,7 @@ cc_fuzz {
"libbtcore",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"libosi",
],
diff --git a/system/hci/Android.bp b/system/hci/Android.bp
index 5e493288a7..e4e0106606 100644
--- a/system/hci/Android.bp
+++ b/system/hci/Android.bp
@@ -66,6 +66,7 @@ cc_test {
"libbluetooth_log",
"libbt-hci",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
sanitize: {
diff --git a/system/osi/Android.bp b/system/osi/Android.bp
index aeabc7ad18..4806d61985 100644
--- a/system/osi/Android.bp
+++ b/system/osi/Android.bp
@@ -92,6 +92,7 @@ cc_library_static {
"libaconfig_storage_read_api_cc",
"libbluetooth_log",
"libbt-platform-protos-lite",
+ "libcom.android.sysprop.bluetooth.wrapped",
"server_configurable_flags",
],
}
@@ -145,6 +146,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"libosi",
diff --git a/system/osi/BUILD.gn b/system/osi/BUILD.gn
index fdd2736fab..ffc3dfcac8 100644
--- a/system/osi/BUILD.gn
+++ b/system/osi/BUILD.gn
@@ -55,6 +55,7 @@ static_library("osi") {
deps = [
"//bt/flags:bluetooth_flags_c_lib",
+ "//bt/sysprop:libcom.android.sysprop.bluetooth",
"//bt/system/common",
]
@@ -92,6 +93,7 @@ if (use.test) {
]
deps = [
+ "//bt/sysprop:libcom.android.sysprop.bluetooth",
"//bt/system/osi",
]
diff --git a/system/osi/src/alarm.cc b/system/osi/src/alarm.cc
index a280442bb0..c1a1b6da10 100644
--- a/system/osi/src/alarm.cc
+++ b/system/osi/src/alarm.cc
@@ -20,6 +20,7 @@
#include "osi/include/alarm.h"
+#include <android_bluetooth_sysprop.h>
#include <base/cancelable_callback.h>
#include <bluetooth/log.h>
#include <fcntl.h>
@@ -312,6 +313,13 @@ static bool lazy_initialize(void) {
bool timer_initialized = false;
bool wakeup_timer_initialized = false;
+ // some platforms are not wired up to be woken up by the controller.
+ // on those platforms, if we go to sleep with a timer armed, it will
+ // continue counting during sleep. to prevent unwanted timer fires on
+ // those platforms, use CLOCK_MONOTONIC and don't count up during sleep.
+ bool wakeup_supported = android::sysprop::bluetooth::hardware::wakeup_supported().value_or(true);
+ clockid_t alarm_clockid = wakeup_supported ? CLOCK_BOOTTIME_ALARM : CLOCK_MONOTONIC;
+
std::lock_guard<std::mutex> lock(alarms_mutex);
alarms = list_new(NULL);
@@ -325,7 +333,7 @@ static bool lazy_initialize(void) {
}
timer_initialized = true;
- if (!timer_create_internal(CLOCK_BOOTTIME_ALARM, &wakeup_timer)) {
+ if (!timer_create_internal(alarm_clockid, &wakeup_timer)) {
if (!timer_create_internal(CLOCK_BOOTTIME, &wakeup_timer)) {
goto error;
}
diff --git a/system/osi/test/fuzzers/alarm/Android.bp b/system/osi/test/fuzzers/alarm/Android.bp
index e1108e8731..3af1096546 100644
--- a/system/osi/test/fuzzers/alarm/Android.bp
+++ b/system/osi/test/fuzzers/alarm/Android.bp
@@ -25,6 +25,7 @@ cc_fuzz {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"libosi",
],
diff --git a/system/osi/test/fuzzers/allocator/Android.bp b/system/osi/test/fuzzers/allocator/Android.bp
index f4874ff322..36b5ee4ae6 100644
--- a/system/osi/test/fuzzers/allocator/Android.bp
+++ b/system/osi/test/fuzzers/allocator/Android.bp
@@ -18,6 +18,7 @@ cc_fuzz {
"libbase",
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"liblog",
"libosi",
],
diff --git a/system/osi/test/fuzzers/fixed_queue/Android.bp b/system/osi/test/fuzzers/fixed_queue/Android.bp
index 8758597a55..02ad1896bd 100644
--- a/system/osi/test/fuzzers/fixed_queue/Android.bp
+++ b/system/osi/test/fuzzers/fixed_queue/Android.bp
@@ -22,6 +22,7 @@ cc_fuzz {
static_libs: [
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
}
diff --git a/system/osi/test/fuzzers/future/Android.bp b/system/osi/test/fuzzers/future/Android.bp
index 46673e2659..c96dd2f984 100644
--- a/system/osi/test/fuzzers/future/Android.bp
+++ b/system/osi/test/fuzzers/future/Android.bp
@@ -22,6 +22,7 @@ cc_fuzz {
static_libs: [
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi",
],
}
diff --git a/system/osi/test/fuzzers/list/Android.bp b/system/osi/test/fuzzers/list/Android.bp
index 5c8f15e81e..bc5dd9a66e 100644
--- a/system/osi/test/fuzzers/list/Android.bp
+++ b/system/osi/test/fuzzers/list/Android.bp
@@ -18,6 +18,7 @@ cc_fuzz {
"libbase",
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"liblog",
"libosi",
],
diff --git a/system/osi/test/fuzzers/ringbuffer/Android.bp b/system/osi/test/fuzzers/ringbuffer/Android.bp
index bbba16690f..08d308c70c 100644
--- a/system/osi/test/fuzzers/ringbuffer/Android.bp
+++ b/system/osi/test/fuzzers/ringbuffer/Android.bp
@@ -18,6 +18,7 @@ cc_fuzz {
"libbase",
"libbluetooth_log",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"liblog",
"libosi",
],
diff --git a/system/profile/avrcp/Android.bp b/system/profile/avrcp/Android.bp
index 133d2a4712..8db8f11b2a 100644
--- a/system/profile/avrcp/Android.bp
+++ b/system/profile/avrcp/Android.bp
@@ -81,6 +81,7 @@ cc_test {
"libbluetooth_log",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libcutils",
"libevent",
"libgmock",
diff --git a/system/stack/Android.bp b/system/stack/Android.bp
index cb987debfc..7cffba529f 100644
--- a/system/stack/Android.bp
+++ b/system/stack/Android.bp
@@ -833,6 +833,7 @@ cc_test {
"libbtif",
"libbtif-core",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libflags_rust_cpp_bridge",
"libfmq",
"libg722codec",
@@ -934,6 +935,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1023,6 +1025,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1158,6 +1161,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1229,6 +1233,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1299,6 +1304,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1408,6 +1414,7 @@ cc_test {
"libbt-sbc-decoder",
"libbt-sbc-encoder",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"liblog",
"libopus",
@@ -1459,6 +1466,7 @@ cc_test {
"libbluetooth_log",
"libbt-common",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"liblog",
"libosi",
],
@@ -1523,6 +1531,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1581,6 +1590,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"liblog",
"libosi",
@@ -1657,6 +1667,7 @@ cc_test {
"libbt-common",
"libbt-platform-protos-lite",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1845,6 +1856,7 @@ cc_test {
"libbtdevice",
"libbte",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libgmock",
"liblog",
"libosi",
@@ -1904,6 +1916,7 @@ cc_test {
"libbtdevice",
"libbte",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -1980,6 +1993,7 @@ cc_test {
"libbt-platform-protos-lite",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -2069,6 +2083,7 @@ cc_test {
"libbt-platform-protos-lite",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libflagtest",
"libgmock",
@@ -2162,6 +2177,7 @@ cc_test {
"libbt-platform-protos-lite",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libgmock",
"liblog",
@@ -2256,6 +2272,7 @@ cc_test {
"libbt-platform-protos-lite",
"libbtdevice",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libcutils",
"libevent",
"libgmock",
diff --git a/system/stack/test/fuzzers/Android.bp b/system/stack/test/fuzzers/Android.bp
index 3c74de632d..a0b7947b1e 100644
--- a/system/stack/test/fuzzers/Android.bp
+++ b/system/stack/test/fuzzers/Android.bp
@@ -61,6 +61,7 @@ cc_defaults {
"libbte",
"libbtif",
"libbtif-core",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libexpresslog",
"libflags_rust_cpp_bridge",
"libg722codec",
diff --git a/system/test/headless/Android.bp b/system/test/headless/Android.bp
index 846f9ec4cc..118178199a 100644
--- a/system/test/headless/Android.bp
+++ b/system/test/headless/Android.bp
@@ -105,6 +105,7 @@ cc_binary {
"libbtif",
"libbtif-core",
"libchrome",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libevent",
"libflags_rust_cpp_bridge",
"libflatbuffers-cpp",
diff --git a/system/types/Android.bp b/system/types/Android.bp
index 4bff11709b..4201bafca4 100644
--- a/system/types/Android.bp
+++ b/system/types/Android.bp
@@ -58,6 +58,7 @@ cc_test {
"libbase",
"libbluetooth-types",
"libbluetooth_log",
+ "libcom.android.sysprop.bluetooth.wrapped",
"libosi", // strlcpy
],
test_suites: ["general-tests"],