forked from sanyaade-mobiledev/chromium.src
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbluetooth_device_chromeos.h
180 lines (152 loc) · 7.43 KB
/
bluetooth_device_chromeos.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
// 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_BLUETOOTH_DEVICE_CHROMEOS_H
#define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_CHROMEOS_H
#include <string>
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/dbus/bluetooth_device_client.h"
#include "dbus/object_path.h"
#include "device/bluetooth/bluetooth_device.h"
namespace chromeos {
class BluetoothAdapterChromeOS;
class BluetoothPairingChromeOS;
// The BluetoothDeviceChromeOS class implements BluetoothDevice for the
// Chrome OS platform.
class BluetoothDeviceChromeOS
: public device::BluetoothDevice {
public:
// BluetoothDevice override
virtual uint32 GetBluetoothClass() const OVERRIDE;
virtual std::string GetAddress() const OVERRIDE;
virtual VendorIDSource GetVendorIDSource() const OVERRIDE;
virtual uint16 GetVendorID() const OVERRIDE;
virtual uint16 GetProductID() const OVERRIDE;
virtual uint16 GetDeviceID() 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 base::Closure& callback,
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;
// Creates a pairing object with the given delegate |pairing_delegate| and
// establishes it as the pairing context for this device. All pairing-related
// method calls will be forwarded to this object until it is released.
BluetoothPairingChromeOS* BeginPairing(
BluetoothDevice::PairingDelegate* pairing_delegate);
// Releases the current pairing object, any pairing-related method calls will
// be ignored.
void EndPairing();
// Returns the current pairing object or NULL if no pairing is in progress.
BluetoothPairingChromeOS* GetPairing() const;
protected:
// BluetoothDevice override
virtual std::string GetDeviceName() const OVERRIDE;
private:
friend class BluetoothAdapterChromeOS;
BluetoothDeviceChromeOS(BluetoothAdapterChromeOS* adapter,
const dbus::ObjectPath& object_path);
virtual ~BluetoothDeviceChromeOS();
// Internal method to initiate a connection to this device, and methods called
// by dbus:: on completion of the D-Bus method call.
void ConnectInternal(bool after_pairing,
const base::Closure& callback,
const ConnectErrorCallback& error_callback);
void OnConnect(bool after_pairing,
const base::Closure& callback);
void OnConnectError(bool after_pairing,
const ConnectErrorCallback& error_callback,
const std::string& error_name,
const std::string& error_message);
// Called by dbus:: on completion of the D-Bus method call to pair the device.
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);
// Called by dbus:: on failure of the D-Bus method call to cancel pairing,
// there is no matching completion call since we don't do anything special
// in that case.
void OnCancelPairingError(const std::string& error_name,
const std::string& error_message);
// Internal method to set the device as trusted. Trusted devices can connect
// to us automatically, and we can connect to them after rebooting; it also
// causes the device to be remembered by the stack even if not paired.
// |success| to the callback indicates whether or not the request succeeded.
void SetTrusted();
void OnSetTrusted(bool success);
// Called by dbus:: on completion of the D-Bus method call to disconnect the
// device.
void OnDisconnect(const base::Closure& callback);
void OnDisconnectError(const ErrorCallback& error_callback,
const std::string& error_name,
const std::string& error_message);
// Called by dbus:: on failure of the D-Bus method call to unpair the device;
// there is no matching completion call since this object is deleted in the
// process of unpairing.
void OnForgetError(const ErrorCallback& error_callback,
const std::string& error_name,
const std::string& error_message);
// Called by dbus:: on completion of the D-Bus method call to
// connect a peofile.
void OnConnectProfile(device::BluetoothProfile* profile,
const base::Closure& callback);
void OnConnectProfileError(device::BluetoothProfile* profile,
const ErrorCallback& error_callback,
const std::string& error_name,
const std::string& error_message);
// Returns the object path of the device; used by BluetoothAdapterChromeOS
const dbus::ObjectPath& object_path() const { return object_path_; }
// The adapter that owns this device instance.
BluetoothAdapterChromeOS* adapter_;
// The dbus object path of the device object.
dbus::ObjectPath object_path_;
// Number of ongoing calls to Connect().
int num_connecting_calls_;
// 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.
scoped_ptr<BluetoothPairingChromeOS> pairing_;
// 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<BluetoothDeviceChromeOS> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceChromeOS);
};
} // namespace chromeos
#endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_CHROMEOS_H