OSDN Git Service

gd: Add acl manager dumpsys data
authorChris Manton <cmanton@google.com>
Sun, 22 Nov 2020 02:58:55 +0000 (18:58 -0800)
committerChris Manton <cmanton@google.com>
Tue, 24 Nov 2020 07:05:44 +0000 (23:05 -0800)
Toward loggable code

Bug: 163134718
Tag: #refactor
Test: CtsVerifier

Change-Id: I4f47237754a9d16d1653f24a9d223b2a42f97543

gd/Android.bp
gd/dumpsys_data.fbs
gd/hci/acl_manager.cc
gd/hci/acl_manager.h
gd/hci/hci_acl_manager.fbs [new file with mode: 0644]

index 9d9cea9..100daf8 100644 (file)
@@ -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",
     ],
index 35e553b..5c3c76b 100644 (file)
@@ -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
 }
 
index d1b586b..977cd6c 100644 (file)
@@ -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<flatbuffers::Offset<AclManagerData>> 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<flatbuffers::Offset<AclManagerData>> promise, flatbuffers::FlatBufferBuilder* fb_builder) const {
+  auto title = fb_builder->CreateString("----- Acl Manager Dumpsys -----");
+  AclManagerDataBuilder builder(*fb_builder);
+  builder.add_title(title);
+  flatbuffers::Offset<AclManagerData> dumpsys_data = builder.Finish();
+  promise.set_value(dumpsys_data);
+}
+
+DumpsysDataFinisher AclManager::GetDumpsysData(flatbuffers::FlatBufferBuilder* fb_builder) const {
+  ASSERT(fb_builder != nullptr);
+
+  std::promise<flatbuffers::Offset<AclManagerData>> 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
index e4793a1..ba79f5d 100644 (file)
@@ -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 (file)
index 0000000..a8481eb
--- /dev/null
@@ -0,0 +1,9 @@
+namespace bluetooth.hci;
+
+attribute "privacy";
+
+table AclManagerData {
+    title:string (privacy:"Any");
+}
+
+root_type AclManagerData;