| // Copyright 2019 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.sys; |
| |
| using fuchsia.bluetooth as bt; |
| |
| /// Input and Output Capabilities for pairing exchanges. |
| /// See Volume 3, Part C, Table 5.3 and 5.4 |
| enum InputCapability { |
| NONE = 1; |
| CONFIRMATION = 2; |
| KEYBOARD = 3; |
| }; |
| |
| enum OutputCapability { |
| NONE = 1; |
| DISPLAY = 2; |
| }; |
| |
| /// 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 = 1; |
| |
| /// The user is shown a 6-digit numerical passkey which they must enter on the |
| /// peer device. |
| PASSKEY_DISPLAY = 2; |
| |
| /// 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 = 3; |
| |
| /// The user is asked to enter a 6-digit passkey. |
| PASSKEY_ENTRY = 4; |
| }; |
| |
| enum PairingKeypress { |
| /// The user has entered a single digit. |
| DIGIT_ENTERED = 1; |
| |
| /// The user has erased a single digit. |
| DIGIT_ERASED = 2; |
| |
| /// The user has cleared the entire passkey. |
| PASSKEY_CLEARED = 3; |
| |
| /// The user has finished entering the passkey. |
| PASSKEY_ENTERED = 4; |
| }; |
| |
| protocol PairingDelegate { |
| /// Called to initiate a pairing request. 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 `peer`. |
| /// |
| /// The `displayed_passkey` parameter should be displayed to the user if `method` equals |
| /// `PairingMethod.PASSKEY_DISPLAY` or `PairingMethod.PASSKEY_COMPARISON`. Otherwise, this parameter |
| /// has no meaning and should be ignored. |
| /// |
| /// The `entered_passkey` parameter only has meaning if `method` equals |
| /// `PairingMethod.PASSKEY_ENTRY`. It will be ignored otherwise. |
| OnPairingRequest(Peer peer, PairingMethod method, uint32 displayed_passkey) |
| -> (bool accept, uint32 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 `success`. |
| OnPairingComplete(bt.PeerId id, bool success); |
| |
| /// 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(bt.PeerId id, PairingKeypress keypress); |
| |
| /// The delegate can send this event to notify the peer of local keypresses |
| /// during pairing using `PairingMethod.PASSKEY_ENTRY`. |
| -> OnLocalKeypress(bt.PeerId id, PairingKeypress keypress); |
| }; |