+++ /dev/null
-// libbtaa static library for target
-// ========================================================
-cc_library_static {
- name: "libbtaa",
- defaults: ["fluoride_defaults"],
- include_dirs: [
- "system/bt",
- "system/bt/hci/include",
- "system/bt/stack/include",
- ],
- local_include_dirs: [
- "include",
- ],
- srcs: [
- "src/activity_attribution.cc",
- ],
- static_libs: [
- "libbt-hci",
- ],
- shared_libs: [
- "android.system.suspend.control-ndk",
- "libbinder_ndk",
- ],
- apex_available: [
- "//apex_available:platform",
- "com.android.bluetooth.updatable",
- ],
-}
+++ /dev/null
-/******************************************************************************
- *
- * Copyright 2020 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.
- *
- ******************************************************************************/
-
-#pragma once
-
-#include <aidl/android/system/suspend/BnSuspendCallback.h>
-#include <aidl/android/system/suspend/BnWakelockCallback.h>
-#include <hardware/bt_activity_attribution.h>
-
-using aidl::android::system::suspend::BnSuspendCallback;
-using aidl::android::system::suspend::BnWakelockCallback;
-using Status = ::ndk::ScopedAStatus;
-
-namespace bluetooth {
-namespace activity_attribution {
-class ActivityAttribution {
- public:
- virtual ~ActivityAttribution() = default;
-
- static void CleanUp();
- static void Initialize(ActivityAttributionCallbacks* callbacks);
-};
-
-class WakelockCallback : public BnWakelockCallback {
- public:
- Status notifyAcquired(void) override;
- Status notifyReleased(void) override;
-};
-
-class WakeupCallback : public BnSuspendCallback {
- public:
- Status notifyWakeup(bool success,
- const std::vector<std::string>& wakeupReasons) override;
-};
-
-} // namespace activity_attribution
-} // namespace bluetooth
+++ /dev/null
-/******************************************************************************
- *
- * Copyright 2020 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.
- *
- ******************************************************************************/
-
-#include "activity_attribution.h"
-
-#include <aidl/android/system/suspend/ISuspendControlService.h>
-#include <android/binder_manager.h>
-#include <base/logging.h>
-
-#include "btsnoop_mem.h"
-
-using aidl::android::system::suspend::ISuspendCallback;
-using aidl::android::system::suspend::ISuspendControlService;
-using namespace ndk;
-
-namespace bluetooth {
-namespace activity_attribution {
-
-static const std::string kBtWakelockName("hal_bluetooth_lock");
-
-class ActivityAttributionImpl;
-static std::shared_ptr<ISuspendControlService> controlService;
-static std::unique_ptr<ActivityAttributionImpl> instance;
-
-class ActivityAttributionImpl : public ActivityAttribution {
- public:
- ~ActivityAttributionImpl() override = default;
- ActivityAttributionImpl(ActivityAttributionCallbacks* callbacks);
-
- static void onHciCaptured(const uint16_t type, const uint8_t* data,
- const size_t length, const uint64_t timestamp_us);
- void onWakelockAcquired(void);
- void onWakelockReleased(void);
- void onWakeup(bool success, const std::vector<std::string>& wakeupReasons);
-
- private:
- [[maybe_unused]] ActivityAttributionCallbacks* mCallbacks;
-};
-
-ActivityAttributionImpl::ActivityAttributionImpl(
- ActivityAttributionCallbacks* callbacks)
- : mCallbacks(callbacks) {}
-
-void ActivityAttributionImpl::onHciCaptured(const uint16_t type,
- const uint8_t* data,
- const size_t length,
- const uint64_t timestamp_us) {}
-
-void ActivityAttributionImpl::onWakelockAcquired(void) {}
-
-void ActivityAttributionImpl::onWakelockReleased(void) {}
-
-void ActivityAttributionImpl::onWakeup(
- bool success, const std::vector<std::string>& wakeupReasons) {}
-
-Status WakelockCallback::notifyAcquired(void) {
- if (instance) {
- instance->onWakelockAcquired();
- }
- return Status::ok();
-}
-
-Status WakelockCallback::notifyReleased(void) {
- if (instance) {
- instance->onWakelockReleased();
- }
- return Status::ok();
-}
-
-Status WakeupCallback::notifyWakeup(
- bool success, const std::vector<std::string>& wakeupReasons) {
- if (instance) {
- instance->onWakeup(success, wakeupReasons);
- }
- return Status::ok();
-}
-
-void ActivityAttribution::CleanUp() { instance.reset(); };
-
-void ActivityAttribution::Initialize(ActivityAttributionCallbacks* callbacks) {
- bool is_registered = false;
-
- if (instance) {
- LOG(ERROR) << __func__ << " Already initialized!";
- return;
- }
- instance.reset(new ActivityAttributionImpl(callbacks));
-
- activity_attribution_set_callback(instance->onHciCaptured);
-
- controlService = ISuspendControlService::fromBinder(
- SpAIBinder(AServiceManager_getService("suspend_control")));
- if (!controlService) {
- LOG(ERROR) << __func__ << " Fail to obtain suspend_control";
- return;
- }
-
- Status register_callback_status = controlService->registerCallback(
- SharedRefBase::make<WakeupCallback>(), &is_registered);
- if (!is_registered || !register_callback_status.isOk()) {
- LOG(ERROR) << __func__ << " Fail to register wakeup callback";
- return;
- }
-
- register_callback_status = controlService->registerWakelockCallback(
- SharedRefBase::make<WakelockCallback>(), kBtWakelockName, &is_registered);
- if (!is_registered || !register_callback_status.isOk()) {
- LOG(ERROR) << __func__ << " Fail to register wakelock callback";
- return;
- }
-}
-
-} // namespace activity_attribution
-} // namespace bluetooth
"src/btif_a2dp_control.cc",
"src/btif_a2dp_sink.cc",
"src/btif_a2dp_source.cc",
- "src/btif_activity_attribution.cc",
"src/btif_av.cc",
"src/btif_avrcp_audio_track.cc",
"src/btif_ble_advertiser.cc",
shared_libs: [
"android.hardware.bluetooth.a2dp@1.0",
"android.hardware.bluetooth.audio@2.0",
- "android.system.suspend.control-ndk",
"libaaudio",
"libcrypto",
"libcutils",
"lib-bt-packets",
"libaudio-a2dp-hw-utils",
"libbt-audio-hal-interface",
- "libbtaa",
],
cflags: [
"-DBUILDCFG",
+++ /dev/null
-/*
- * Copyright 2020 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.
- */
-
-#include <hardware/bt_activity_attribution.h>
-
-namespace bluetooth {
-namespace activity_attribution {
-
-ActivityAttributionInterface* getActivityAttributionInterface();
-
-} // namespace activity_attribution
-} // namespace bluetooth
\ No newline at end of file
#include "bta/include/bta_hf_client_api.h"
#include "btif/avrcp/avrcp_service.h"
#include "btif_a2dp.h"
-#include "btif_activity_attribution.h"
#include "btif_api.h"
#include "btif_av.h"
#include "btif_bqr.h"
return bluetooth::bluetooth_keystore::getBluetoothKeystoreInterface();
if (is_profile(profile_id, BT_ACTIVITY_ATTRIBUTION_ID)) {
- return bluetooth::activity_attribution::getActivityAttributionInterface();
+ return NULL;
}
return NULL;
+++ /dev/null
-/******************************************************************************
- *
- * Copyright 2020 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.
- *
- ******************************************************************************/
-
-/* Activity Attribution Interface */
-
-#include <hardware/bt_activity_attribution.h>
-
-#include "btaa/include/activity_attribution.h"
-#include "btif/include/btif_common.h"
-#include "gd/common/init_flags.h"
-#include "stack/include/btu.h"
-
-using base::Bind;
-using base::Unretained;
-
-namespace bluetooth {
-namespace activity_attribution {
-
-std::unique_ptr<ActivityAttributionInterface> activityAttributionInstance;
-
-class ActivityAttributionInterfaceImpl : public ActivityAttributionCallbacks,
- public ActivityAttributionInterface {
- ~ActivityAttributionInterfaceImpl() override = default;
-
- void Init(ActivityAttributionCallbacks* callbacks) override {
- if (!bluetooth::common::InitFlags::BtaaHciLogEnabled()) {
- LOG(INFO) << __func__ << " BTAA not enabled!";
- return;
- }
-
- this->callbacks = callbacks;
- ActivityAttribution::Initialize(this);
- }
-
- void OnWakeup(Activity activity, const RawAddress& address) override {
- VLOG(2) << __func__ << " activity: " << (int)activity
- << " address: " << address;
- do_in_jni_thread(FROM_HERE, Bind(&ActivityAttributionCallbacks::OnWakeup,
- Unretained(callbacks), activity, address));
- }
-
- void Cleanup(void) override {
- do_in_main_thread(FROM_HERE, Bind(&ActivityAttribution::CleanUp));
- }
-
- private:
- ActivityAttributionCallbacks* callbacks;
-};
-
-ActivityAttributionInterface* getActivityAttributionInterface() {
- if (!activityAttributionInstance)
- activityAttributionInstance.reset(new ActivityAttributionInterfaceImpl());
-
- return activityAttributionInstance.get();
-}
-
-} // namespace activity_attribution
-} // namespace bluetooth
"android.hardware.bluetooth.audio@2.0",
"android.hardware.bluetooth@1.0",
"android.hardware.bluetooth@1.1",
- "android.system.suspend.control-ndk",
"libaaudio",
"libbase",
- "libbinder_ndk",
"libcrypto",
"libcutils", // property_get_bool
"libfmq",