summaryrefslogtreecommitdiffstats
path: root/device/bluetooth/dbus/bluetooth_input_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'device/bluetooth/dbus/bluetooth_input_client.h')
-rw-r--r--device/bluetooth/dbus/bluetooth_input_client.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/device/bluetooth/dbus/bluetooth_input_client.h b/device/bluetooth/dbus/bluetooth_input_client.h
new file mode 100644
index 0000000..829e94c
--- /dev/null
+++ b/device/bluetooth/dbus/bluetooth_input_client.h
@@ -0,0 +1,82 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// 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_INPUT_CLIENT_H_
+#define DEVICE_BLUETOOTH_DBUS_BLUETOOTH_INPUT_CLIENT_H_
+
+#include <string>
+#include <vector>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "base/observer_list.h"
+#include "dbus/object_path.h"
+#include "dbus/property.h"
+#include "device/bluetooth/bluetooth_export.h"
+#include "device/bluetooth/dbus/bluez_dbus_client.h"
+
+namespace bluez {
+
+// BluetoothInputClient is used to communicate with objects representing
+// Bluetooth Input (HID) devices.
+class DEVICE_BLUETOOTH_EXPORT BluetoothInputClient : public BluezDBusClient {
+ public:
+ // Structure of properties associated with bluetooth input devices.
+ struct Properties : public dbus::PropertySet {
+ // The Bluetooth input device reconnect mode. Read-only.
+ dbus::Property<std::string> reconnect_mode;
+
+ Properties(dbus::ObjectProxy* object_proxy,
+ const std::string& interface_name,
+ const PropertyChangedCallback& callback);
+ ~Properties() override;
+ };
+
+ // Interface for observing changes from a remote bluetooth input device.
+ class Observer {
+ public:
+ virtual ~Observer() {}
+
+ // Called when the remote device with object path |object_path| implementing
+ // the Input interface is added to the set of known devices or an already
+ // known device implements the Input interface.
+ virtual void InputAdded(const dbus::ObjectPath& object_path) {}
+
+ // Called when the remote device with object path |object_path| is removed
+ // from the set of known devices or does not implement the Input interface
+ // anymore.
+ virtual void InputRemoved(const dbus::ObjectPath& object_path) {}
+
+ // Called when the device with object path |object_path| has a
+ // change in value of the property named |property_name| of its Input
+ // interface.
+ virtual void InputPropertyChanged(const dbus::ObjectPath& object_path,
+ const std::string& property_name) {}
+ };
+
+ ~BluetoothInputClient() override;
+
+ // Adds and removes observers for events on all remote bluetooth input
+ // devices. Check the |object_path| parameter of observer methods to
+ // determine which device is issuing the event.
+ virtual void AddObserver(Observer* observer) = 0;
+ virtual void RemoveObserver(Observer* observer) = 0;
+
+ // Obtain the properties for the device with object path |object_path|,
+ // any values should be copied if needed.
+ virtual Properties* GetProperties(const dbus::ObjectPath& object_path) = 0;
+
+ // Creates the instance.
+ static BluetoothInputClient* Create();
+
+ protected:
+ BluetoothInputClient();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BluetoothInputClient);
+};
+
+} // namespace bluez
+
+#endif // DEVICE_BLUETOOTH_DBUS_BLUETOOTH_INPUT_CLIENT_H_