Roll src/third_party/WebKit 787a07c:716df21 (svn 201034:201036)
[chromium-blink-merge.git] / device / bluetooth / bluetooth_device_win.h
blobd16c3a01d3540b04cbbabe06331e2b67ded05a1d
1 // Copyright (c) 2012 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.
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_WIN_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_WIN_H_
8 #include <string>
9 #include <vector>
11 #include "base/basictypes.h"
12 #include "base/observer_list.h"
13 #include "device/bluetooth/bluetooth_device.h"
14 #include "device/bluetooth/bluetooth_export.h"
15 #include "device/bluetooth/bluetooth_task_manager_win.h"
17 namespace device {
19 class BluetoothAdapterWin;
20 class BluetoothServiceRecordWin;
21 class BluetoothSocketThread;
23 class DEVICE_BLUETOOTH_EXPORT BluetoothDeviceWin : public BluetoothDevice {
24 public:
25 explicit BluetoothDeviceWin(
26 const BluetoothTaskManagerWin::DeviceState& device_state,
27 const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner,
28 const scoped_refptr<BluetoothSocketThread>& socket_thread,
29 net::NetLog* net_log,
30 const net::NetLog::Source& net_log_source);
31 ~BluetoothDeviceWin() override;
33 // BluetoothDevice override
34 uint32 GetBluetoothClass() const override;
35 std::string GetAddress() const override;
36 VendorIDSource GetVendorIDSource() const override;
37 uint16 GetVendorID() const override;
38 uint16 GetProductID() const override;
39 uint16 GetDeviceID() const override;
40 bool IsPaired() const override;
41 bool IsConnected() const override;
42 bool IsConnectable() const override;
43 bool IsConnecting() const override;
44 UUIDList GetUUIDs() const override;
45 int16 GetInquiryRSSI() const override;
46 int16 GetInquiryTxPower() const override;
47 bool ExpectingPinCode() const override;
48 bool ExpectingPasskey() const override;
49 bool ExpectingConfirmation() const override;
50 void GetConnectionInfo(const ConnectionInfoCallback& callback) override;
51 void Connect(PairingDelegate* pairing_delegate,
52 const base::Closure& callback,
53 const ConnectErrorCallback& error_callback) override;
54 void SetPinCode(const std::string& pincode) override;
55 void SetPasskey(uint32 passkey) override;
56 void ConfirmPairing() override;
57 void RejectPairing() override;
58 void CancelPairing() override;
59 void Disconnect(const base::Closure& callback,
60 const ErrorCallback& error_callback) override;
61 void Forget(const ErrorCallback& error_callback) override;
62 void ConnectToService(
63 const BluetoothUUID& uuid,
64 const ConnectToServiceCallback& callback,
65 const ConnectToServiceErrorCallback& error_callback) override;
66 void ConnectToServiceInsecurely(
67 const BluetoothUUID& uuid,
68 const ConnectToServiceCallback& callback,
69 const ConnectToServiceErrorCallback& error_callback) override;
70 void CreateGattConnection(
71 const GattConnectionCallback& callback,
72 const ConnectErrorCallback& error_callback) override;
74 // Used by BluetoothProfileWin to retrieve the service record for the given
75 // |uuid|.
76 const BluetoothServiceRecordWin* GetServiceRecord(
77 const device::BluetoothUUID& uuid) const;
79 // Returns true if all fields and services of this instance are equal to the
80 // fields and services stored in |device_state|.
81 bool IsEqual(const BluetoothTaskManagerWin::DeviceState& device_state);
83 // Updates this instance with all fields and properties stored in
84 // |device_state|.
85 void Update(const BluetoothTaskManagerWin::DeviceState& device_state);
87 protected:
88 // BluetoothDevice override
89 std::string GetDeviceName() const override;
91 private:
92 friend class BluetoothAdapterWin;
94 typedef ScopedVector<BluetoothServiceRecordWin> ServiceRecordList;
96 // Used by BluetoothAdapterWin to update the visible state during
97 // discovery.
98 void SetVisible(bool visible);
100 // Updates the services with services stored in |device_state|.
101 void UpdateServices(const BluetoothTaskManagerWin::DeviceState& device_state);
103 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
104 scoped_refptr<BluetoothSocketThread> socket_thread_;
105 net::NetLog* net_log_;
106 net::NetLog::Source net_log_source_;
108 // The Bluetooth class of the device, a bitmask that may be decoded using
109 // https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm
110 uint32 bluetooth_class_;
112 // The name of the device, as supplied by the remote device.
113 std::string name_;
115 // The Bluetooth address of the device.
116 std::string address_;
118 // Tracked device state, updated by the adapter managing the lifecycle of
119 // the device.
120 bool paired_;
121 bool connected_;
123 // Used to send change notifications when a device disappears during
124 // discovery.
125 bool visible_;
127 // The services (identified by UUIDs) that this device provides.
128 UUIDList uuids_;
130 // The service records retrieved from SDP.
131 ServiceRecordList service_record_list_;
133 DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceWin);
136 } // namespace device
138 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_WIN_H_