Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: device/bluetooth/bluetooth_device_experimental_chromeos.h

Issue 13927010: Bluetooth: implement BlueZ 5 backend for Chrome OS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H
6 #define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H
7
8 #include <string>
9
10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h"
12 #include "chromeos/dbus/experimental_bluetooth_agent_service_provider.h"
13 #include "chromeos/dbus/experimental_bluetooth_device_client.h"
14 #include "dbus/object_path.h"
15 #include "device/bluetooth/bluetooth_device.h"
16
17 namespace chromeos {
18
19 class BluetoothAdapterExperimentalChromeOS;
20
21 // The BluetoothDeviceExperimentalChromeOS class is an alternate implementation
22 // of BluetoothDevice for the Chrome OS platform using the Bluetooth Smart
23 // capable backend. It will become the sole implementation for Chrome OS, and
24 // be renamed to BluetoothDeviceChromeOS, once the backend is switched.
25 class BluetoothDeviceExperimentalChromeOS
26 : public device::BluetoothDevice,
27 private chromeos::ExperimentalBluetoothAgentServiceProvider::Delegate {
28 public:
29 // BluetoothDevice override
30 virtual std::string GetAddress() const OVERRIDE;
31 virtual bool IsPaired() const OVERRIDE;
32 virtual bool IsConnected() const OVERRIDE;
33 virtual bool IsConnectable() const OVERRIDE;
34 virtual bool IsConnecting() const OVERRIDE;
35 virtual ServiceList GetServices() const OVERRIDE;
36 virtual void GetServiceRecords(
37 const ServiceRecordsCallback& callback,
38 const ErrorCallback& error_callback) OVERRIDE;
39 virtual void ProvidesServiceWithName(
40 const std::string& name,
41 const ProvidesServiceCallback& callback) OVERRIDE;
42 virtual bool ExpectingPinCode() const OVERRIDE;
43 virtual bool ExpectingPasskey() const OVERRIDE;
44 virtual bool ExpectingConfirmation() const OVERRIDE;
45 virtual void Connect(
46 device::BluetoothDevice::PairingDelegate* pairing_delegate,
47 const base::Closure& callback,
48 const ConnectErrorCallback& error_callback) OVERRIDE;
49 virtual void SetPinCode(const std::string& pincode) OVERRIDE;
50 virtual void SetPasskey(uint32 passkey) OVERRIDE;
51 virtual void ConfirmPairing() OVERRIDE;
52 virtual void RejectPairing() OVERRIDE;
53 virtual void CancelPairing() OVERRIDE;
54 virtual void Disconnect(
55 const base::Closure& callback,
56 const ErrorCallback& error_callback) OVERRIDE;
57 virtual void Forget(const ErrorCallback& error_callback) OVERRIDE;
58 virtual void ConnectToService(
59 const std::string& service_uuid,
60 const SocketCallback& callback) OVERRIDE;
61 virtual void ConnectToProfile(
62 device::BluetoothProfile* profile,
63 const ErrorCallback& error_callback) OVERRIDE;
64 virtual void SetOutOfBandPairingData(
65 const device::BluetoothOutOfBandPairingData& data,
66 const base::Closure& callback,
67 const ErrorCallback& error_callback) OVERRIDE;
68 virtual void ClearOutOfBandPairingData(
69 const base::Closure& callback,
70 const ErrorCallback& error_callback) OVERRIDE;
71
72 protected:
73 // BluetoothDevice override
74 virtual uint32 GetBluetoothClass() const OVERRIDE;
75 virtual std::string GetDeviceName() const OVERRIDE;
76
77 private:
78 friend class BluetoothAdapterExperimentalChromeOS;
79
80 BluetoothDeviceExperimentalChromeOS(
81 BluetoothAdapterExperimentalChromeOS* adapter,
82 const dbus::ObjectPath& object_path);
83 virtual ~BluetoothDeviceExperimentalChromeOS();
84
85 // ExperimentalBluetoothAgentServiceProvider::Delegate override.
86 virtual void Release() OVERRIDE;
87 virtual void RequestPinCode(const dbus::ObjectPath& device_path,
88 const PinCodeCallback& callback) OVERRIDE;
89 virtual void DisplayPinCode(const dbus::ObjectPath& device_path,
90 const std::string& pincode) OVERRIDE;
91 virtual void RequestPasskey(const dbus::ObjectPath& device_path,
92 const PasskeyCallback& callback) OVERRIDE;
93 virtual void DisplayPasskey(const dbus::ObjectPath& device_path,
94 uint32 passkey, int16 entered) OVERRIDE;
95 virtual void RequestConfirmation(const dbus::ObjectPath& device_path,
96 uint32 passkey,
97 const ConfirmationCallback& callback)
98 OVERRIDE;
99 virtual void RequestAuthorization(const dbus::ObjectPath& device_path,
100 const ConfirmationCallback& callback)
101 OVERRIDE;
102 virtual void AuthorizeService(const dbus::ObjectPath& device_path,
103 const std::string& uuid,
104 const ConfirmationCallback& callback) OVERRIDE;
105 virtual void Cancel() OVERRIDE;
106
107 void ConnectInternal(const base::Closure& callback,
108 const ConnectErrorCallback& error_callback);
109 void OnConnect(const base::Closure& callback);
110 void OnConnectError(const ConnectErrorCallback& error_callback,
111 const std::string& error_name,
112 const std::string& error_message);
113
114 void OnRegisterAgent(const base::Closure& callback,
115 const ConnectErrorCallback& error_callback);
116 void OnRegisterAgentError(const ConnectErrorCallback& error_callback,
117 const std::string& error_name,
118 const std::string& error_message);
119
120 void OnPair(const base::Closure& callback,
121 const ConnectErrorCallback& error_callback);
122 void OnPairError(const ConnectErrorCallback& error_callback,
123 const std::string& error_name,
124 const std::string& error_message);
125
126 void OnCancelPairingError(const std::string& error_name,
127 const std::string& error_message);
128
129 void OnSetTrusted(bool success);
130
131 void UnregisterAgent();
132 void OnUnregisterAgentError(const std::string& error_name,
133 const std::string& error_message);
134
135 void OnDisconnect(const base::Closure& callback);
136 void OnDisconnectError(const ErrorCallback& error_callback,
137 const std::string& error_name,
138 const std::string& error_message);
139
140 void OnForgetError(const ErrorCallback& error_callback,
141 const std::string& error_name,
142 const std::string& error_message);
143
144 const dbus::ObjectPath& object_path() const { return object_path_; }
145
146 // The adapter that owns this device instance.
147 BluetoothAdapterExperimentalChromeOS* adapter_;
148
149 // The dbus object path of the device object.
150 dbus::ObjectPath object_path_;
151
152 // Number of ongoing calls to Connect().
153 int connecting_calls_;
satorux1 2013/04/16 06:30:45 maybe: num_connecting_calls_
keybuk 2013/04/16 23:19:13 Done.
154
155 // During pairing this is set to an object that we don't own, but on which
156 // we can make method calls to request, display or confirm PIN Codes and
157 // Passkeys. Generally it is the object that owns this one.
158 PairingDelegate* pairing_delegate_;
159
160 // During pairing this is set to an instance of a D-Bus agent object
161 // intialized with our own class as its delegate.
162 scoped_ptr<ExperimentalBluetoothAgentServiceProvider> agent_;
163
164 // During pairing these callbacks are set to those provided by method calls
165 // made on us by |agent_| and are called by our own method calls such as
166 // SetPinCode() and SetPasskey().
167 PinCodeCallback pincode_callback_;
168 PasskeyCallback passkey_callback_;
169 ConfirmationCallback confirmation_callback_;
170
171 // Note: This should remain the last member so it'll be destroyed and
172 // invalidate its weak pointers before any other members are destroyed.
173 base::WeakPtrFactory<BluetoothDeviceExperimentalChromeOS> weak_ptr_factory_;
174
175 DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceExperimentalChromeOS);
176 };
177
178 } // namespace chromeos
179
180 #endif /* DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_EXPERIMENTAL_CHROMEOS_H */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698