Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0a865db authored by Chris Manton's avatar Chris Manton Committed by Android (Google) Code Review
Browse files

Merge "Add gd controller data to dumpsys" into tm-qpr-dev

parents 5409cd52 01a72f3b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -718,6 +718,7 @@ genrule {
        "common/init_flags.fbs",
        "dumpsys_data.fbs",
        "hci/hci_acl_manager.fbs",
        "hci/hci_controller.fbs",
        "l2cap/classic/l2cap_classic_module.fbs",
        "shim/dumpsys.fbs",
        "os/wakelock_manager.fbs",
@@ -728,6 +729,7 @@ genrule {
        "dumpsys.bfbs",
        "dumpsys_data.bfbs",
        "hci_acl_manager.bfbs",
        "hci_controller.bfbs",
        "l2cap_classic_module.bfbs",
        "wakelock_manager.bfbs",
    ],
@@ -744,6 +746,7 @@ genrule {
        "common/init_flags.fbs",
        "dumpsys_data.fbs",
        "hci/hci_acl_manager.fbs",
        "hci/hci_controller.fbs",
        "l2cap/classic/l2cap_classic_module.fbs",
        "shim/dumpsys.fbs",
        "os/wakelock_manager.fbs",
@@ -753,6 +756,7 @@ genrule {
        "dumpsys_data_generated.h",
        "dumpsys_generated.h",
        "hci_acl_manager_generated.h",
        "hci_controller_generated.h",
        "init_flags_generated.h",
        "l2cap_classic_module_generated.h",
        "wakelock_manager_generated.h",
+2 −0
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ flatbuffer("BluetoothGeneratedDumpsysDataSchema_h") {
    "common/init_flags.fbs",
    "dumpsys_data.fbs",
    "hci/hci_acl_manager.fbs",
    "hci/hci_controller.fbs",
    "l2cap/classic/l2cap_classic_module.fbs",
    "os/wakelock_manager.fbs",
    "shim/dumpsys.fbs",
@@ -100,6 +101,7 @@ bt_flatc_binary_schema("BluetoothGeneratedDumpsysBinarySchema_bfbs") {
    "common/init_flags.fbs",
    "dumpsys_data.fbs",
    "hci/hci_acl_manager.fbs",
    "hci/hci_controller.fbs",
    "l2cap/classic/l2cap_classic_module.fbs",
    "os/wakelock_manager.fbs",
    "shim/dumpsys.fbs",
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
include "btaa/activity_attribution.fbs";
include "common/init_flags.fbs";
include "hci/hci_acl_manager.fbs";
include "hci/hci_controller.fbs";
include "l2cap/classic/l2cap_classic_module.fbs";
include "module_unittest.fbs";
include "os/wakelock_manager.fbs";
@@ -28,6 +29,7 @@ table DumpsysData {
    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");
    hci_controller_dumpsys_data:bluetooth.hci.ControllerData (privacy:"Any");
    module_unittest_data:bluetooth.ModuleUnitTestData; // private
    activity_attribution_dumpsys_data:bluetooth.activity_attribution.ActivityAttributionData (privacy:"Any");
}
+1 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ filegroup {
        "address_unittest.cc",
        "address_with_type_test.cc",
        "class_of_device_unittest.cc",
        "controller_test.cc",
        "hci_layer_unittest.cc",
        "hci_packets_test.cc",
        "uuid_unittest.cc",
@@ -53,7 +54,6 @@ filegroup {
    srcs: [
        "acl_manager/round_robin_scheduler_test.cc",
        "acl_manager_test.cc",
        "controller_test.cc",
        "hci_layer_test.cc",
        "le_address_manager_test.cc",
        "le_advertising_manager_test.cc",
+103 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@

#include "common/init_flags.h"
#include "hci/hci_layer.h"
#include "hci_controller_generated.h"
#include "os/metrics.h"

namespace bluetooth {
@@ -570,6 +571,9 @@ struct Controller::impl {
    return supported;                                                          \
  }

  void Dump(
      std::promise<flatbuffers::Offset<ControllerData>> promise, flatbuffers::FlatBufferBuilder* fb_builder) const;

  bool is_supported(OpCode op_code) {
    switch (op_code) {
      OP_CODE_MAPPING(INQUIRY)
@@ -1170,5 +1174,104 @@ void Controller::Stop() {
std::string Controller::ToString() const {
  return "Controller";
}

void Controller::impl::Dump(
    std::promise<flatbuffers::Offset<ControllerData>> promise, flatbuffers::FlatBufferBuilder* fb_builder) const {
  ASSERT(fb_builder != nullptr);
  auto title = fb_builder->CreateString("----- Hci Controller Dumpsys -----");

  auto local_version_information_data = CreateLocalVersionInformationData(
      *fb_builder,
      fb_builder->CreateString(HciVersionText(local_version_information_.hci_version_)),
      local_version_information_.hci_revision_,
      fb_builder->CreateString(LmpVersionText(local_version_information_.lmp_version_)),
      local_version_information_.manufacturer_name_,
      local_version_information_.lmp_subversion_);

  auto acl_buffer_size_data = BufferSizeData(acl_buffer_length_, acl_buffers_);

  auto sco_buffer_size_data = BufferSizeData(sco_buffer_length_, sco_buffers_);

  auto le_buffer_size_data =
      BufferSizeData(le_buffer_size_.le_data_packet_length_, le_buffer_size_.total_num_le_packets_);

  auto iso_buffer_size_data =
      BufferSizeData(iso_buffer_size_.le_data_packet_length_, iso_buffer_size_.total_num_le_packets_);

  auto le_maximum_data_length_data = LeMaximumDataLengthData(
      le_maximum_data_length_.supported_max_tx_octets_,
      le_maximum_data_length_.supported_max_tx_time_,
      le_maximum_data_length_.supported_max_rx_octets_,
      le_maximum_data_length_.supported_max_rx_time_);

  std::vector<LocalSupportedCommandsData> local_supported_commands_vector;
  for (uint8_t index = 0; index < local_supported_commands_.size(); index++) {
    local_supported_commands_vector.push_back(LocalSupportedCommandsData(index, local_supported_commands_[index]));
  }
  auto local_supported_commands_data = fb_builder->CreateVectorOfStructs(local_supported_commands_vector);

  auto vendor_capabilities_data = VendorCapabilitiesData(
      vendor_capabilities_.is_supported_,
      vendor_capabilities_.max_advt_instances_,
      vendor_capabilities_.offloaded_resolution_of_private_address_,
      vendor_capabilities_.total_scan_results_storage_,
      vendor_capabilities_.max_irk_list_sz_,
      vendor_capabilities_.filtering_support_,
      vendor_capabilities_.max_filter_,
      vendor_capabilities_.activity_energy_info_support_,
      vendor_capabilities_.version_supported_,
      vendor_capabilities_.total_num_of_advt_tracked_,
      vendor_capabilities_.extended_scan_support_,
      vendor_capabilities_.debug_logging_supported_,
      vendor_capabilities_.le_address_generation_offloading_support_,
      vendor_capabilities_.a2dp_source_offload_capability_mask_,
      vendor_capabilities_.bluetooth_quality_report_support_);

  auto extended_lmp_features_vector = fb_builder->CreateVector(extended_lmp_features_array_);

  // Create the root table
  ControllerDataBuilder builder(*fb_builder);

  builder.add_title(title);
  builder.add_local_version_information(local_version_information_data);

  builder.add_acl_buffer_size(&acl_buffer_size_data);
  builder.add_sco_buffer_size(&sco_buffer_size_data);
  builder.add_iso_buffer_size(&iso_buffer_size_data);
  builder.add_le_buffer_size(&le_buffer_size_data);

  builder.add_le_connect_list_size(le_connect_list_size_);
  builder.add_le_resolving_list_size(le_resolving_list_size_);

  builder.add_le_maximum_data_length(&le_maximum_data_length_data);
  builder.add_le_maximum_advertising_data_length(le_maximum_advertising_data_length_);
  builder.add_le_suggested_default_data_length(le_suggested_default_data_length_);
  builder.add_le_number_supported_advertising_sets(le_number_supported_advertising_sets_);
  builder.add_le_periodic_advertiser_list_size(le_periodic_advertiser_list_size_);

  builder.add_local_supported_commands(local_supported_commands_data);
  builder.add_extended_lmp_features_array(extended_lmp_features_vector);
  builder.add_le_local_supported_features(le_local_supported_features_);
  builder.add_le_supported_states(le_supported_states_);
  builder.add_vendor_capabilities(&vendor_capabilities_data);

  flatbuffers::Offset<ControllerData> dumpsys_data = builder.Finish();
  promise.set_value(dumpsys_data);
}

DumpsysDataFinisher Controller::GetDumpsysData(flatbuffers::FlatBufferBuilder* fb_builder) const {
  ASSERT(fb_builder != nullptr);

  std::promise<flatbuffers::Offset<ControllerData>> promise;
  auto future = promise.get_future();
  impl_->Dump(std::move(promise), fb_builder);

  auto dumpsys_data = future.get();

  return [dumpsys_data](DumpsysDataBuilder* dumpsys_builder) {
    dumpsys_builder->add_hci_controller_dumpsys_data(dumpsys_data);
  };
}

}  // namespace hci
}  // namespace bluetooth
Loading