From adda403c4c5b29f25ca8dc87ea9f4cb4d86b7809 Mon Sep 17 00:00:00 2001 From: Chris Manton Date: Wed, 19 Aug 2020 13:36:54 -0700 Subject: [PATCH] Add gd acl init flag Tag: #gd-refactor Bug: 159815595 Test: cert/run --host Change-Id: If8344697c48a4a68eeb7606905c1d3b14e3da43a --- gd/common/init_flags.cc | 14 ++++++++++++-- gd/common/init_flags.fbs | 1 + gd/common/init_flags.h | 5 +++++ gd/dumpsys/init_flags.cc | 1 + main/shim/shim.cc | 4 ++++ main/shim/shim.h | 1 + main/shim/stack.cc | 4 +++- 7 files changed, 27 insertions(+), 3 deletions(-) diff --git a/gd/common/init_flags.cc b/gd/common/init_flags.cc index 7383891cb..ef356ecba 100644 --- a/gd/common/init_flags.cc +++ b/gd/common/init_flags.cc @@ -25,6 +25,9 @@ namespace bluetooth { namespace common { +const std::string kGdAclFlag = "INIT_gd_acl"; +bool InitFlags::gd_acl_enabled = false; + const std::string kGdHciFlag = "INIT_gd_hci"; bool InitFlags::gd_hci_enabled = false; @@ -42,6 +45,8 @@ void InitFlags::Load(const char** flags) { while (flags != nullptr && *flags != nullptr) { if (kGdCoreFlag == *flags) { gd_core_enabled = true; + } else if (kGdAclFlag == *flags) { + gd_acl_enabled = true; } else if (kGdHciFlag == *flags) { gd_hci_enabled = true; } else if (kGdControllerFlag == *flags) { @@ -52,7 +57,10 @@ void InitFlags::Load(const char** flags) { flags++; } - if (gd_core_enabled && !gd_controller_enabled) { + if (gd_core_enabled && !gd_acl_enabled) { + gd_acl_enabled = true; + } + if (gd_acl_enabled && !gd_controller_enabled) { gd_controller_enabled = true; } if (gd_controller_enabled && !gd_hci_enabled) { @@ -60,7 +68,8 @@ void InitFlags::Load(const char** flags) { } LOG_INFO( - "Flags loaded: gd_hci_enabled: %s, gd_controller_enabled: %s, gd_core_enabled: %s", + "Flags loaded: gd_acl_enabled: %s, gd_hci_enabled: %s, gd_controller_enabled: %s, gd_core_enabled: %s", + gd_acl_enabled ? "true" : "false", gd_hci_enabled ? "true" : "false", gd_controller_enabled ? "true" : "false", gd_core_enabled ? "true" : "false"); @@ -68,6 +77,7 @@ void InitFlags::Load(const char** flags) { void InitFlags::SetAll(bool value) { gd_core_enabled = value; + gd_acl_enabled = value; gd_controller_enabled = value; gd_hci_enabled = value; gatt_robust_caching_enabled = value; diff --git a/gd/common/init_flags.fbs b/gd/common/init_flags.fbs index 48ec64614..8e9ac509e 100644 --- a/gd/common/init_flags.fbs +++ b/gd/common/init_flags.fbs @@ -4,6 +4,7 @@ attribute "privacy"; table InitFlagsData { title:string; + gd_acl_enabled:bool; gd_hci_enabled:bool; gd_controller_enabled:bool; gd_core_enabled:bool; diff --git a/gd/common/init_flags.h b/gd/common/init_flags.h index ef2ef472b..15fb9e2a5 100644 --- a/gd/common/init_flags.h +++ b/gd/common/init_flags.h @@ -23,6 +23,10 @@ class InitFlags final { public: static void Load(const char** flags); + static bool GdAclEnabled() { + return gd_acl_enabled; + } + static bool GdHciEnabled() { return gd_hci_enabled; } @@ -43,6 +47,7 @@ class InitFlags final { private: static void SetAll(bool value); + static bool gd_acl_enabled; static bool gd_hci_enabled; static bool gd_controller_enabled; static bool gd_core_enabled; diff --git a/gd/dumpsys/init_flags.cc b/gd/dumpsys/init_flags.cc index 4ec9b3ad2..14d95af2e 100644 --- a/gd/dumpsys/init_flags.cc +++ b/gd/dumpsys/init_flags.cc @@ -23,6 +23,7 @@ flatbuffers::Offset bluetooth::dumpsys::InitFl auto title = fb_builder->CreateString("----- Init Flags -----"); common::InitFlagsDataBuilder builder(*fb_builder); builder.add_title(title); + builder.add_gd_acl_enabled(bluetooth::common::InitFlags::GdAclEnabled()); builder.add_gd_hci_enabled(bluetooth::common::InitFlags::GdHciEnabled()); builder.add_gd_controller_enabled(bluetooth::common::InitFlags::GdControllerEnabled()); builder.add_gd_core_enabled(bluetooth::common::InitFlags::GdCoreEnabled()); diff --git a/main/shim/shim.cc b/main/shim/shim.cc index 2e01c002b..54cae1ff8 100644 --- a/main/shim/shim.cc +++ b/main/shim/shim.cc @@ -54,6 +54,10 @@ EXPORT_SYMBOL extern const module_t gd_shim_module = { .clean_up = kUnusedModuleApi, .dependencies = {kUnusedModuleDependencies}}; +bool bluetooth::shim::is_gd_acl_enabled() { + return bluetooth::common::InitFlags::GdAclEnabled(); +} + bool bluetooth::shim::is_gd_hci_enabled() { return bluetooth::common::InitFlags::GdHciEnabled(); } diff --git a/main/shim/shim.h b/main/shim/shim.h index a5a30d845..3218baf64 100644 --- a/main/shim/shim.h +++ b/main/shim/shim.h @@ -45,6 +45,7 @@ namespace shim { * * @return true if using gd shim core, false if using legacy. */ +bool is_gd_acl_enabled(); bool is_gd_hci_enabled(); bool is_gd_controller_enabled(); bool is_gd_shim_enabled(); diff --git a/main/shim/stack.cc b/main/shim/stack.cc index ad9fe6047..9d5e36253 100644 --- a/main/shim/stack.cc +++ b/main/shim/stack.cc @@ -76,9 +76,11 @@ void Stack::StartEverything() { if (common::InitFlags::GdControllerEnabled()) { modules.add(); } + if (common::InitFlags::GdAclEnabled()) { + modules.add(); + } if (common::InitFlags::GdCoreEnabled()) { modules.add(); - modules.add(); modules.add(); modules.add(); modules.add(); -- 2.11.0