| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.bluetooth.control; |
| |
| using fuchsia.bluetooth; |
| |
| /// Input and Output Capabilities for pairing exchanges. |
| /// See Volume 3, Part C, Table 5.3 and 5.4 |
| enum InputCapabilityType { |
| NONE = 0; |
| CONFIRMATION = 1; |
| KEYBOARD = 2; |
| }; |
| |
| enum OutputCapabilityType { |
| NONE = 0; |
| DISPLAY = 1; |
| }; |
| |
| /// Different types required by the Security Manager for pairing methods. |
| /// Bluetooth SIG has different requirements for different device capabilities. |
| enum PairingMethod { |
| /// The user is asked to accept or reject pairing. |
| CONSENT = 0; |
| |
| /// The user is shown a 6-digit numerical passkey which they must enter on the |
| /// peer device. |
| PASSKEY_DISPLAY = 1; |
| |
| /// The user is shown a 6-digit numerical passkey which will also shown on the |
| /// peer device. The user must compare the passkeys and accept the pairing if |
| /// the passkeys match. |
| PASSKEY_COMPARISON = 2; |
| |
| /// The user is asked to enter a 6-digit passkey. |
| PASSKEY_ENTRY = 3; |
| }; |
| |
| enum PairingKeypressType { |
| /// The user has entered a single digit. |
| DIGIT_ENTERED = 0; |
| |
| /// The user has erased a single digit. |
| DIGIT_ERASED = 1; |
| |
| /// The user has cleared the entire passkey. |
| PASSKEY_CLEARED = 2; |
| |
| /// The user has finished entering the passkey. |
| PASSKEY_ENTERED = 3; |
| }; |
| |
| protocol PairingDelegate { |
| /// Called for most pairing requests. The delegate must respond with “true” or “false” to |
| /// either accept or reject the pairing request. If the pairing method requires a passkey |
| /// this is returned as well. |
| /// |
| /// Any response from this method will be ignored if the OnPairingComplete |
| /// event has already been sent for `device`. |
| OnPairingRequest(RemoteDevice device, PairingMethod method, string? displayed_passkey) |
| -> (bool accept, string? entered_passkey); |
| |
| /// Called if the pairing procedure for the device with the given ID is completed. |
| /// This can be due to successful completion or an error (e.g. due to cancellation |
| /// by the peer, a timeout, or disconnection) which is indicated by `status`. |
| OnPairingComplete(string device_id, fuchsia.bluetooth.Status status); |
| |
| /// Called to notify keypresses from the peer device during pairing using |
| /// PairingMethod.PASSKEY_DISPLAY. |
| /// |
| /// This event is used to provide key press events to the delegate for a responsive user |
| /// experience as the user types the passkey on the peer device. This event will be called |
| /// once for each key-press. |
| OnRemoteKeypress(string device_id, PairingKeypressType keypress); |
| |
| /// The delegate can send this event to notify the peer of local keypresses |
| /// during pairing using PairingMethod.PASSKEY_ENTRY. |
| -> OnLocalKeypress(string device_id, PairingKeypressType keypress); |
| }; |