blob: 8b97bfda5e0013281c0de65c335e4bd534f7560a [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "bluetooth/newblued/newblue_debug_manager.h"
#include <utility>
#include <base/bind.h>
#include <base/files/file_util.h>
#include <chromeos/dbus/service_constants.h>
namespace bluetooth {
namespace {
constexpr uint8_t kNewblueMinimumVerbosityLevel = 0;
} // namespace
NewblueDebugManager::NewblueDebugManager(scoped_refptr<dbus::Bus> bus)
: bus_(bus), weak_ptr_factory_(this) {}
void NewblueDebugManager::Init() {
bus_->GetObjectManager(
bluetooth_object_manager::kBluetoothObjectManagerServiceName,
dbus::ObjectPath(
bluetooth_object_manager::kBluetoothObjectManagerServicePath))
->RegisterInterface(bluetooth_debug::kBluetoothDebugInterface, this);
}
dbus::PropertySet* NewblueDebugManager::CreateProperties(
dbus::ObjectProxy* object_proxy,
const dbus::ObjectPath& object_path,
const std::string& interface) {
dbus::PropertySet* properties =
new dbus::PropertySet(object_proxy, interface,
base::Bind(&NewblueDebugManager::OnPropertyChanged,
weak_ptr_factory_.GetWeakPtr()));
properties->RegisterProperty(bluetooth_debug::kNewblueLevelProperty,
&newblue_level_);
return properties;
}
void NewblueDebugManager::OnPropertyChanged(const std::string& prop_name) {
if (prop_name != bluetooth_debug::kNewblueLevelProperty)
return;
if (newblue_level_.is_valid())
SetNewblueLogLevel(newblue_level_.value());
}
void NewblueDebugManager::SetNewblueLogLevel(int verbosity) {
if (verbosity < kNewblueMinimumVerbosityLevel) {
LOG(WARNING) << "Invalid verbosity level for newblue";
return;
}
if (current_verbosity_ == verbosity)
return;
current_verbosity_ = verbosity;
LOG(INFO) << "Log level is set to " << verbosity;
logging::SetMinLogLevel(-verbosity);
}
} // namespace bluetooth