Index: device/bluetooth/bluetooth_device_experimental_chromeos.h |
diff --git a/device/bluetooth/bluetooth_device_experimental_chromeos.h b/device/bluetooth/bluetooth_device_experimental_chromeos.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..56a74daa04b83b97eaad71a5bd7e29a13342d027 |
--- /dev/null |
+++ b/device/bluetooth/bluetooth_device_experimental_chromeos.h |
@@ -0,0 +1,180 @@ |
+// Copyright (c) 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_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H |
+#define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H |
+ |
+#include <string> |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
+#include "chromeos/dbus/experimental_bluetooth_agent_service_provider.h" |
+#include "chromeos/dbus/experimental_bluetooth_device_client.h" |
+#include "dbus/object_path.h" |
+#include "device/bluetooth/bluetooth_device.h" |
+ |
+namespace chromeos { |
+ |
+class BluetoothAdapterExperimentalChromeOS; |
+ |
+// The BluetoothDeviceExperimentalChromeOS class is an alternate implementation |
+// of BluetoothDevice for the Chrome OS platform using the Bluetooth Smart |
+// capable backend. It will become the sole implementation for Chrome OS, and |
+// be renamed to BluetoothDeviceChromeOS, once the backend is switched. |
+class BluetoothDeviceExperimentalChromeOS |
+ : public device::BluetoothDevice, |
+ private chromeos::ExperimentalBluetoothAgentServiceProvider::Delegate { |
+ public: |
+ // BluetoothDevice override |
+ virtual std::string GetAddress() const OVERRIDE; |
+ virtual bool IsPaired() const OVERRIDE; |
+ virtual bool IsConnected() const OVERRIDE; |
+ virtual bool IsConnectable() const OVERRIDE; |
+ virtual bool IsConnecting() const OVERRIDE; |
+ virtual ServiceList GetServices() const OVERRIDE; |
+ virtual void GetServiceRecords( |
+ const ServiceRecordsCallback& callback, |
+ const ErrorCallback& error_callback) OVERRIDE; |
+ virtual void ProvidesServiceWithName( |
+ const std::string& name, |
+ const ProvidesServiceCallback& callback) OVERRIDE; |
+ virtual bool ExpectingPinCode() const OVERRIDE; |
+ virtual bool ExpectingPasskey() const OVERRIDE; |
+ virtual bool ExpectingConfirmation() const OVERRIDE; |
+ virtual void Connect( |
+ device::BluetoothDevice::PairingDelegate* pairing_delegate, |
+ const base::Closure& callback, |
+ const ConnectErrorCallback& error_callback) OVERRIDE; |
+ virtual void SetPinCode(const std::string& pincode) OVERRIDE; |
+ virtual void SetPasskey(uint32 passkey) OVERRIDE; |
+ virtual void ConfirmPairing() OVERRIDE; |
+ virtual void RejectPairing() OVERRIDE; |
+ virtual void CancelPairing() OVERRIDE; |
+ virtual void Disconnect( |
+ const base::Closure& callback, |
+ const ErrorCallback& error_callback) OVERRIDE; |
+ virtual void Forget(const ErrorCallback& error_callback) OVERRIDE; |
+ virtual void ConnectToService( |
+ const std::string& service_uuid, |
+ const SocketCallback& callback) OVERRIDE; |
+ virtual void ConnectToProfile( |
+ device::BluetoothProfile* profile, |
+ const ErrorCallback& error_callback) OVERRIDE; |
+ virtual void SetOutOfBandPairingData( |
+ const device::BluetoothOutOfBandPairingData& data, |
+ const base::Closure& callback, |
+ const ErrorCallback& error_callback) OVERRIDE; |
+ virtual void ClearOutOfBandPairingData( |
+ const base::Closure& callback, |
+ const ErrorCallback& error_callback) OVERRIDE; |
+ |
+ protected: |
+ // BluetoothDevice override |
+ virtual uint32 GetBluetoothClass() const OVERRIDE; |
+ virtual std::string GetDeviceName() const OVERRIDE; |
+ |
+ private: |
+ friend class BluetoothAdapterExperimentalChromeOS; |
+ |
+ BluetoothDeviceExperimentalChromeOS( |
+ BluetoothAdapterExperimentalChromeOS* adapter, |
+ const dbus::ObjectPath& object_path); |
+ virtual ~BluetoothDeviceExperimentalChromeOS(); |
+ |
+ // ExperimentalBluetoothAgentServiceProvider::Delegate override. |
+ virtual void Release() OVERRIDE; |
+ virtual void RequestPinCode(const dbus::ObjectPath& device_path, |
+ const PinCodeCallback& callback) OVERRIDE; |
+ virtual void DisplayPinCode(const dbus::ObjectPath& device_path, |
+ const std::string& pincode) OVERRIDE; |
+ virtual void RequestPasskey(const dbus::ObjectPath& device_path, |
+ const PasskeyCallback& callback) OVERRIDE; |
+ virtual void DisplayPasskey(const dbus::ObjectPath& device_path, |
+ uint32 passkey, int16 entered) OVERRIDE; |
+ virtual void RequestConfirmation(const dbus::ObjectPath& device_path, |
+ uint32 passkey, |
+ const ConfirmationCallback& callback) |
+ OVERRIDE; |
+ virtual void RequestAuthorization(const dbus::ObjectPath& device_path, |
+ const ConfirmationCallback& callback) |
+ OVERRIDE; |
+ virtual void AuthorizeService(const dbus::ObjectPath& device_path, |
+ const std::string& uuid, |
+ const ConfirmationCallback& callback) OVERRIDE; |
+ virtual void Cancel() OVERRIDE; |
+ |
+ void ConnectInternal(const base::Closure& callback, |
+ const ConnectErrorCallback& error_callback); |
+ void OnConnect(const base::Closure& callback); |
+ void OnConnectError(const ConnectErrorCallback& error_callback, |
+ const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ void OnRegisterAgent(const base::Closure& callback, |
+ const ConnectErrorCallback& error_callback); |
+ void OnRegisterAgentError(const ConnectErrorCallback& error_callback, |
+ const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ void OnPair(const base::Closure& callback, |
+ const ConnectErrorCallback& error_callback); |
+ void OnPairError(const ConnectErrorCallback& error_callback, |
+ const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ void OnCancelPairingError(const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ void OnSetTrusted(bool success); |
+ |
+ void UnregisterAgent(); |
+ void OnUnregisterAgentError(const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ void OnDisconnect(const base::Closure& callback); |
+ void OnDisconnectError(const ErrorCallback& error_callback, |
+ const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ void OnForgetError(const ErrorCallback& error_callback, |
+ const std::string& error_name, |
+ const std::string& error_message); |
+ |
+ const dbus::ObjectPath& object_path() const { return object_path_; } |
+ |
+ // The adapter that owns this device instance. |
+ BluetoothAdapterExperimentalChromeOS* adapter_; |
+ |
+ // The dbus object path of the device object. |
+ dbus::ObjectPath object_path_; |
+ |
+ // Number of ongoing calls to Connect(). |
+ int connecting_calls_; |
satorux1
2013/04/16 06:30:45
maybe: num_connecting_calls_
keybuk
2013/04/16 23:19:13
Done.
|
+ |
+ // During pairing this is set to an object that we don't own, but on which |
+ // we can make method calls to request, display or confirm PIN Codes and |
+ // Passkeys. Generally it is the object that owns this one. |
+ PairingDelegate* pairing_delegate_; |
+ |
+ // During pairing this is set to an instance of a D-Bus agent object |
+ // intialized with our own class as its delegate. |
+ scoped_ptr<ExperimentalBluetoothAgentServiceProvider> agent_; |
+ |
+ // During pairing these callbacks are set to those provided by method calls |
+ // made on us by |agent_| and are called by our own method calls such as |
+ // SetPinCode() and SetPasskey(). |
+ PinCodeCallback pincode_callback_; |
+ PasskeyCallback passkey_callback_; |
+ ConfirmationCallback confirmation_callback_; |
+ |
+ // Note: This should remain the last member so it'll be destroyed and |
+ // invalidate its weak pointers before any other members are destroyed. |
+ base::WeakPtrFactory<BluetoothDeviceExperimentalChromeOS> weak_ptr_factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceExperimentalChromeOS); |
+}; |
+ |
+} // namespace chromeos |
+ |
+#endif /* DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H */ |