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

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

Issue 1898643002: Refactor device::BluetoothGattXXX classes to split into remote/local. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
OLDNEW
(Empty)
1 // Copyright 2014 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_PAIRING_BLUEZ_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_PAIRING_BLUEZ_H_
7
8 #include <stdint.h>
9
10 #include "base/macros.h"
11 #include "device/bluetooth/bluetooth_device.h"
12 #include "device/bluetooth/dbus/bluetooth_agent_service_provider.h"
13
14 namespace bluez {
15
16 class BluetoothDeviceBlueZ;
17
18 // The BluetoothPairingBlueZ class encapsulates the logic for an individual
19 // device pairing, acting as a bridge between BluetoothAdapterBlueZ which
20 // communicates with the underlying Controller and Host Subsystem, and
21 // BluetoothDeviceBlueZ which presents the pairing logic to the application.
22 class BluetoothPairingBlueZ {
23 public:
24 BluetoothPairingBlueZ(
25 BluetoothDeviceBlueZ* device,
26 device::BluetoothDevice::PairingDelegate* pairing_delegate);
27 ~BluetoothPairingBlueZ();
28
29 // Indicates whether the device is currently pairing and expecting a
30 // Passkey to be returned.
31 bool ExpectingPasskey() const;
32
33 // Indicates whether the device is currently pairing and expecting
34 // confirmation of a displayed passkey.
35 bool ExpectingConfirmation() const;
36
37 // Requests a PIN code for the current device from the current pairing
38 // delegate, the SetPinCode(), RejectPairing() and CancelPairing() method
39 // calls on this object are translated into the appropriate response to
40 // |callback|.
41 void RequestPinCode(
42 const bluez::BluetoothAgentServiceProvider::Delegate::PinCodeCallback&
43 callback);
44
45 // Indicates whether the device is currently pairing and expecting a
46 // PIN Code to be returned.
47 bool ExpectingPinCode() const;
48
49 // Sends the PIN code |pincode| to the remote device during pairing.
50 //
51 // PIN Codes are generally required for Bluetooth 2.0 and earlier devices
52 // for which there is no automatic pairing or special handling.
53 void SetPinCode(const std::string& pincode);
54
55 // Requests a PIN code for the current device be displayed by the current
56 // pairing delegate. No response is expected from the delegate.
57 void DisplayPinCode(const std::string& pincode);
58
59 // Requests a Passkey for the current device from the current pairing
60 // delegate, the SetPasskey(), RejectPairing() and CancelPairing() method
61 // calls on this object are translated into the appropriate response to
62 // |callback|.
63 void RequestPasskey(
64 const bluez::BluetoothAgentServiceProvider::Delegate::PasskeyCallback&
65 callback);
66
67 // Sends the Passkey |passkey| to the remote device during pairing.
68 //
69 // Passkeys are generally required for Bluetooth 2.1 and later devices
70 // which cannot provide input or display on their own, and don't accept
71 // passkey-less pairing, and are a numeric in the range 0-999999.
72 void SetPasskey(uint32_t passkey);
73
74 // Requests a Passkey for the current device be displayed by the current
75 // pairing delegate. No response is expected from the delegate.
76 void DisplayPasskey(uint32_t passkey);
77
78 // Informs the current pairing delegate that |entered| keys have been
79 // provided to the remote device since the DisplayPasskey() call. No
80 // response is expected from the delegate.
81 void KeysEntered(uint16_t entered);
82
83 // Requests confirmation that |passkey| is displayed on the current device
84 // from the current pairing delegate. The ConfirmPairing(), RejectPairing()
85 // and CancelPairing() method calls on this object are translated into the
86 // appropriate response to |callback|.
87 void RequestConfirmation(uint32_t passkey,
88 const bluez::BluetoothAgentServiceProvider::
89 Delegate::ConfirmationCallback& callback);
90
91 // Requests authorization that the current device be allowed to pair with
92 // this device from the current pairing delegate. The ConfirmPairing(),
93 // RejectPairing() and CancelPairing() method calls on this object are
94 // translated into the appropriate response to |callback|.
95 void RequestAuthorization(const bluez::BluetoothAgentServiceProvider::
96 Delegate::ConfirmationCallback& callback);
97
98 // Confirms to the remote device during pairing that a passkey provided by
99 // the ConfirmPasskey() delegate call is displayed on both devices.
100 void ConfirmPairing();
101
102 // Rejects a pairing or connection request from a remote device, returns
103 // false if there was no way to reject the pairing.
104 bool RejectPairing();
105
106 // Cancels a pairing or connection attempt to a remote device, returns
107 // false if there was no way to cancel the pairing.
108 bool CancelPairing();
109
110 // Returns the pairing delegate being used by this pairing object.
111 device::BluetoothDevice::PairingDelegate* GetPairingDelegate() const;
112
113 private:
114 // Internal method to reset the current set of callbacks because a new
115 // request has arrived that supersedes them.
116 void ResetCallbacks();
117
118 // Internal method to respond to the relevant callback for a RejectPairing
119 // or CancelPairing call.
120 bool RunPairingCallbacks(
121 bluez::BluetoothAgentServiceProvider::Delegate::Status status);
122
123 // The underlying BluetoothDeviceBlueZ that owns this pairing context.
124 BluetoothDeviceBlueZ* device_;
125
126 // UI Pairing Delegate to make method calls on, this must live as long as
127 // the object capturing the PairingContext.
128 device::BluetoothDevice::PairingDelegate* pairing_delegate_;
129
130 // Flag to indicate whether any pairing delegate method has been called
131 // during pairing. Used to determine whether we need to log the
132 // "no pairing interaction" metric.
133 bool pairing_delegate_used_;
134
135 // During pairing these callbacks are set to those provided by method calls
136 // made on the BluetoothAdapterBlueZ instance by its respective
137 // bluez::BluetoothAgentServiceProvider instance, and are called by our own
138 // method calls such as SetPinCode() and SetPasskey().
139 bluez::BluetoothAgentServiceProvider::Delegate::PinCodeCallback
140 pincode_callback_;
141 bluez::BluetoothAgentServiceProvider::Delegate::PasskeyCallback
142 passkey_callback_;
143 bluez::BluetoothAgentServiceProvider::Delegate::ConfirmationCallback
144 confirmation_callback_;
145
146 DISALLOW_COPY_AND_ASSIGN(BluetoothPairingBlueZ);
147 };
148
149 } // namespace bluez
150
151 #endif // DEVICE_BLUETOOTH_BLUETOOTH_PAIRING_BLUEZ_H_
OLDNEW
« no previous file with comments | « device/bluetooth/bluetooth_local_gatt_service_bluez.cc ('k') | device/bluetooth/bluetooth_pairing_bluez.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698