From ab18cff56aaf3e1cdd6de1a71a1ea7737a1d38ac Mon Sep 17 00:00:00 2001 From: Chris Manton Date: Sat, 21 Nov 2020 18:58:55 -0800 Subject: [PATCH] gd: Add acl manager dumpsys data Toward loggable code Bug: 163134718 Tag: #refactor Test: CtsVerifier Change-Id: I4f47237754a9d16d1653f24a9d223b2a42f97543 --- gd/Android.bp | 4 ++++ gd/dumpsys_data.fbs | 2 ++ gd/hci/acl_manager.cc | 27 +++++++++++++++++++++++++++ gd/hci/acl_manager.h | 2 ++ gd/hci/hci_acl_manager.fbs | 9 +++++++++ 5 files changed, 44 insertions(+) create mode 100644 gd/hci/hci_acl_manager.fbs diff --git a/gd/Android.bp b/gd/Android.bp index 9d9cea919..100daf848 100644 --- a/gd/Android.bp +++ b/gd/Android.bp @@ -480,6 +480,7 @@ genrule { srcs: [ "common/init_flags.fbs", "dumpsys_data.fbs", + "hci/hci_acl_manager.fbs", "l2cap/classic/l2cap_classic_module.fbs", "shim/dumpsys.fbs", ], @@ -487,6 +488,7 @@ genrule { "init_flags.bfbs", "dumpsys.bfbs", "dumpsys_data.bfbs", + "hci_acl_manager.bfbs", "l2cap_classic_module.bfbs", ], } @@ -500,12 +502,14 @@ genrule { srcs: [ "common/init_flags.fbs", "dumpsys_data.fbs", + "hci/hci_acl_manager.fbs", "l2cap/classic/l2cap_classic_module.fbs", "shim/dumpsys.fbs", ], out: [ "dumpsys_data_generated.h", "dumpsys_generated.h", + "hci_acl_manager_generated.h", "init_flags_generated.h", "l2cap_classic_module_generated.h", ], diff --git a/gd/dumpsys_data.fbs b/gd/dumpsys_data.fbs index 35e553bf9..5c3c76b0d 100644 --- a/gd/dumpsys_data.fbs +++ b/gd/dumpsys_data.fbs @@ -1,6 +1,7 @@ // Top level module dumpsys data schema include "common/init_flags.fbs"; include "l2cap/classic/l2cap_classic_module.fbs"; +include "hci/hci_acl_manager.fbs"; include "module_unittest.fbs"; include "shim/dumpsys.fbs"; @@ -13,6 +14,7 @@ table DumpsysData { init_flags:common.InitFlagsData (privacy:"Any"); shim_dumpsys_data:bluetooth.shim.DumpsysModuleData (privacy:"Any"); l2cap_classic_dumpsys_data:bluetooth.l2cap.classic.L2capClassicModuleData (privacy:"Any"); + hci_acl_manager_dumpsys_data:bluetooth.hci.AclManagerData (privacy:"Any"); module_unittest_data:bluetooth.ModuleUnitTestData; // private } diff --git a/gd/hci/acl_manager.cc b/gd/hci/acl_manager.cc index d1b586bcb..977cd6c01 100644 --- a/gd/hci/acl_manager.cc +++ b/gd/hci/acl_manager.cc @@ -27,6 +27,7 @@ #include "hci/acl_manager/round_robin_scheduler.h" #include "hci/controller.h" #include "hci/hci_layer.h" +#include "hci_acl_manager_generated.h" #include "security/security_module.h" namespace bluetooth { @@ -102,6 +103,9 @@ struct AclManager::impl { } } + void Dump( + std::promise> promise, flatbuffers::FlatBufferBuilder* fb_builder) const; + const AclManager& acl_manager_; classic_impl* classic_impl_ = nullptr; @@ -260,5 +264,28 @@ const ModuleFactory AclManager::Factory = ModuleFactory([]() { return new AclMan AclManager::~AclManager() = default; +void AclManager::impl::Dump( + std::promise> promise, flatbuffers::FlatBufferBuilder* fb_builder) const { + auto title = fb_builder->CreateString("----- Acl Manager Dumpsys -----"); + AclManagerDataBuilder builder(*fb_builder); + builder.add_title(title); + flatbuffers::Offset dumpsys_data = builder.Finish(); + promise.set_value(dumpsys_data); +} + +DumpsysDataFinisher AclManager::GetDumpsysData(flatbuffers::FlatBufferBuilder* fb_builder) const { + ASSERT(fb_builder != nullptr); + + std::promise> promise; + auto future = promise.get_future(); + pimpl_->Dump(std::move(promise), fb_builder); + + auto dumpsys_data = future.get(); + + return [dumpsys_data](DumpsysDataBuilder* dumpsys_builder) { + dumpsys_builder->add_hci_acl_manager_dumpsys_data(dumpsys_data); + }; +} + } // namespace hci } // namespace bluetooth diff --git a/gd/hci/acl_manager.h b/gd/hci/acl_manager.h index e4793a130..ba79f5da5 100644 --- a/gd/hci/acl_manager.h +++ b/gd/hci/acl_manager.h @@ -116,6 +116,8 @@ class AclManager : public Module { std::string ToString() const override; + DumpsysDataFinisher GetDumpsysData(flatbuffers::FlatBufferBuilder* builder) const override; // Module + private: virtual uint16_t HACK_GetHandle(const Address address); virtual uint16_t HACK_GetLeHandle(const Address address); diff --git a/gd/hci/hci_acl_manager.fbs b/gd/hci/hci_acl_manager.fbs new file mode 100644 index 000000000..a8481eb94 --- /dev/null +++ b/gd/hci/hci_acl_manager.fbs @@ -0,0 +1,9 @@ +namespace bluetooth.hci; + +attribute "privacy"; + +table AclManagerData { + title:string (privacy:"Any"); +} + +root_type AclManagerData; -- 2.11.0