910e62b5创建于 1月15日历史提交
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEVICE_BLUETOOTH_DBUS_BLUETOOTH_DEBUG_MANAGER_CLIENT_H_
#define DEVICE_BLUETOOTH_DBUS_BLUETOOTH_DEBUG_MANAGER_CLIENT_H_

#include <string>
#include <vector>

#include "base/functional/callback.h"
#include "dbus/object_path.h"
#include "device/bluetooth/bluetooth_export.h"
#include "device/bluetooth/dbus/bluez_dbus_client.h"

namespace bluez {

// BluetoothDebugManagerClient is used to communicate with the debug manager
// object of the Bluetooth daemon.
class DEVICE_BLUETOOTH_EXPORT BluetoothDebugManagerClient
    : public BluezDBusClient {
 public:
  BluetoothDebugManagerClient(const BluetoothDebugManagerClient&) = delete;
  BluetoothDebugManagerClient& operator=(const BluetoothDebugManagerClient&) =
      delete;

  ~BluetoothDebugManagerClient() override;

  // The ErrorCallback is used by debug manager methods to indicate failure.
  // It receives two arguments: the name of the error in |error_name| and
  // an optional message in |error_message|.
  typedef base::OnceCallback<void(const std::string& error_name,
                                  const std::string& error_message)>
      ErrorCallback;

  // Invoke D-Bus API to enable or disable LL privacy.
  virtual void SetLLPrivacy(const bool enable,
                            base::OnceClosure callback,
                            ErrorCallback error_callback) = 0;

  // Invoke D-Bus API to enable or disable the Bluetooth Quality Report.
  virtual void SetBluetoothQualityReport(const bool enable,
                                         base::OnceClosure callback,
                                         ErrorCallback error_callback) = 0;

  // Invoke D-Bus API to set the levels of logging verbosity for each of
  // the bluetooth daemons and kernel.
  virtual void SetLogLevels(const uint8_t bluez_level,
                            const uint8_t kernel_level,
                            base::OnceClosure callback,
                            ErrorCallback error_callback) = 0;

  // Creates the instance.
  static BluetoothDebugManagerClient* Create();

  // Constants used to indicate exceptional error conditions. These are
  // returned as the |error_name| in ErrorCallback.
  static const char kNoResponseError[];
  static const char kInvalidArgumentError[];

 protected:
  BluetoothDebugManagerClient();
};

}  // namespace bluez

#endif  // DEVICE_BLUETOOTH_DBUS_BLUETOOTH_DEBUG_MANAGER_CLIENT_H_