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

Commit fb1bee98 authored by Eric Shih's avatar Eric Shih
Browse files

Turn on feature flag and add sysprop for bt power telemetry

To set the flag, run the following command in a root shell:
```
adb shell setprop persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags.bluetooth_power_telemetry true
```

Bug: 237393639
Bug: 301874865
Test: atest net_test_osi
Change-Id: I0bd64d31a048315a7a6c9c6f4682ef3fa8f0d7a7
parent bfe2ae56
Loading
Loading
Loading
Loading

flags/metric.aconfig

0 → 100644
+9 −0
Original line number Diff line number Diff line
package: "com.android.bluetooth.flags"
container: "com.android.btservices"

flag {
    name: "bluetooth_power_telemetry"
    namespace: "bluetooth"
    description: "Toggle the bluetooth power telemetry feature."
    bug: "301874865"
}
+1 −0
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ cc_library_static {
        "libbluetooth_log",
        "libbt-platform-protos-lite",
        "libbt_shim_bridge",
        "server_configurable_flags",
    ],
}

+11 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@

#include "osi/include/stack_power_telemetry.h"

#include <android_bluetooth_flags.h>
#include <base/logging.h>
#include <sys/stat.h>
#include <time.h>
@@ -43,8 +44,9 @@ constexpr int64_t kTrafficLogTime = 120; // 120seconds
constexpr uint8_t kLogEntriesSize{15};
constexpr std::string_view kLogPerChannelProperty =
    "bluetooth.powertelemetry.log_per_channel.enabled";
bool power_telemerty_enabled_ =
    bluetooth::common::init_flags::bluetooth_power_telemetry_is_enabled();
constexpr std::string_view kPowerTelemetryEnabledProperty =
    "bluetooth.powertelemetry.enabled";
bool power_telemerty_enabled_ = false;

std::string GetTimeString(time_t tstamp) {
  char buffer[15];
@@ -151,6 +153,12 @@ struct power_telemetry::PowerTelemetryImpl {
    traffic_logged_ts_ = get_current_time();
    log_per_channel_ = osi_property_get_bool(
        std::string(kLogPerChannelProperty).c_str(), false);
    power_telemetry_enabled_property_ = osi_property_get_bool(
        std::string(kPowerTelemetryEnabledProperty).c_str(), true);

    // Enable this feature when both feature flag and sysprops turn on.
    power_telemerty_enabled_ = IS_FLAG_ENABLED(bluetooth_power_telemetry) &&
                               power_telemetry_enabled_property_;
  }

  LogDataContainer& GetCurrentLogDataContainer() {
@@ -189,6 +197,7 @@ struct power_telemetry::PowerTelemetryImpl {
  } cmd, event;
  bool scan_timer_started_ = false;
  bool log_per_channel_ = false;
  bool power_telemetry_enabled_property_ = false;
};

void power_telemetry::PowerTelemetryImpl::LogDataTransfer() {
+2 −2
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@ class PowerTelemetryTest : public ::testing::Test {
  }

  void SetUp() override {
    // Enable the feature flag
    power_telemerty_enabled_ = true;
    power_telemetry::GetInstance();   // Init the object.
    power_telemerty_enabled_ = true;  // Enable the feature flag
    RawAddress::FromString("00:00:00:00:00:00", bdaddr);
  }
};