| <link rel="stylesheet" href="../style.css" /> |
| |
| [TOC] |
| # fuchsia.bluetooth.sys |
| |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div> |
| |
| |
| ## **PROTOCOLS** |
| |
| ## Access {#Access} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=47)* |
| <p>Protocol that abstracts the operational modes and procedures defined in the Bluetooth Generic |
| Access Profile (see Core Specification v5.1, Vol 3, Part C).</p> |
| <p>The procedures under this protocol apply to the system as a whole. The Bluetooth controller that |
| plays an active role in these procedures can be managed using the HostWatcher protocol.</p> |
| <p>The procedures initiated by an Access protocol instance are terminated when the underlying |
| channel is closed.</p> |
| |
| |
| ### Connect {#Access.Connect} |
| |
| <p>Initiate a connection to the peer with the given <code>id</code>. This method connects both BR/EDR and |
| LE transports depending on the technologies that the peer is known to support.</p> |
| <ul> |
| <li>request <code>id</code> The id of the peer to connect.</li> |
| </ul> |
| <ul> |
| <li>error Reports <code>Error.FAILED</code> if a connection to the peer cannot be initiated.</li> |
| <li>error Reports <code>Error.PEER_NOT_FOUND</code> if <code>id</code> is not recognized.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.Connect_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Access.Connect_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Access_Connect_Result'>Access_Connect_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### Disconnect {#Access.Disconnect} |
| |
| <p>Disconnect all logical links to the peer with the given <code>id</code>. This includes LE and |
| BR/EDR links that have been initiated using all Access and fuchsia.bluetooth.le protocol |
| instances.</p> |
| <ul> |
| <li>request <code>id</code> The id of the peer to disconnect.</li> |
| </ul> |
| <ul> |
| <li>error Reports <code>Error.PEER_NOT_FOUND</code> if <code>id</code> is not recognized.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.Disconnect_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Access.Disconnect_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Access_Disconnect_Result'>Access_Disconnect_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### Forget {#Access.Forget} |
| |
| <p>Removes all bonding information and disconnects any existing links with the peer with the |
| given <code>id</code>.</p> |
| <ul> |
| <li>request <code>id</code> The id of the peer to forget.</li> |
| </ul> |
| <ul> |
| <li>error Reports <code>Error.PEER_NOT_FOUND</code> if <code>id</code> is not recognized.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.Forget_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Access.Forget_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Access_Forget_Result'>Access_Forget_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### MakeDiscoverable {#Access.MakeDiscoverable} |
| |
| <p>Put the system into the "General Discoverable" mode on the BR/EDR transport. The active |
| host will respond to general inquiry (by regularly entering the inquiry scan mode).</p> |
| <ul> |
| <li>request <code>token</code> <a class='link' href='../fuchsia.bluetooth.sys/'>fuchsia.bluetooth.sys</a>/<a class='link' href='../fuchsia.bluetooth.sys/#ProcedureToken'>ProcedureToken</a> that will remain valid while a |
| discoverable mode session is active. NOTE: The system may remain discoverable until all |
| <a class='link' href='../fuchsia.bluetooth.sys/'>fuchsia.bluetooth.sys</a>/<a class='link' href='../fuchsia.bluetooth.sys/#Access'>Access</a> clients drop their tokens.</li> |
| </ul> |
| <ul> |
| <li>error Reports Error.FAILED if inquiry mode cannot be entered.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.MakeDiscoverable_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>token</code></td> |
| <td> |
| <code>server_end<<a class='link' href='#ProcedureToken'>ProcedureToken</a>></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Access.MakeDiscoverable_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Access_MakeDiscoverable_Result'>Access_MakeDiscoverable_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### Pair {#Access.Pair} |
| |
| <p>Initiate a pairing to the remote <code>id</code> with the given <code>options</code>. |
| This call completes only once the pairing procedure has completed or aborted. |
| Returns an error if no connected peer with <code>id</code> is found or the pairing procedure fails. |
| If the named peer is already paired, this returns immediately with a success value - unless |
| the pairing is over LE and the PairingOptions.le_security_level is more secure than the |
| current security level, in which case we will attempt to raise security to the requested |
| level.</p> |
| <p>Pairing will take place over whichever transport is indicated by <code>options.transport</code>. If |
| that transport isn't currently connected, the pairing will fail with <code>Error.PEER_NOT_FOUND</code>. |
| Currently, if DUAL_MODE is requested, we will attempt to pair over the LE transport.</p> |
| <ul> |
| <li>request <code>id</code> The id of the peer to initiate pairing with</li> |
| <li>request <code>options</code> The configuration options to use for this pairing request</li> |
| </ul> |
| <ul> |
| <li>error Reports <code>Error.PEER_NOT_FOUND</code> if <code>id</code> is not recognized, or the peer is not |
| connected on the requested transport.</li> |
| <li>error Reports <code>Error.INVALID_ARGUMENTS</code> if ill-formed options are passed</li> |
| <li>error Reports <code>Error.FAILED</code> if an error occurs during pairing</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.Pair_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>options</code></td> |
| <td> |
| <code><a class='link' href='#PairingOptions'>PairingOptions</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Access.Pair_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Access_Pair_Result'>Access_Pair_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### SetDeviceClass {#Access.SetDeviceClass} |
| |
| <p>Set the local device class that will be visible to nearby peers when the system is in |
| discoverable mode.</p> |
| <ul> |
| <li>request <code>device_class</code> The device class to assign to the system.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.SetDeviceClass_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>device_class</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#DeviceClass'>DeviceClass</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### SetLocalName {#Access.SetLocalName} |
| |
| <p>Assign a local name for the Bluetooth system. This name will be visible to nearby peers |
| when the system is in discoverable mode and during name discovery procedures.</p> |
| <ul> |
| <li>request <code>name</code> The complete local name to assign to the system.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.SetLocalName_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>name</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#DeviceName'>DeviceName</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### SetPairingDelegate {#Access.SetPairingDelegate} |
| |
| <p>Assign a PairingDelegate to respond to drive pairing procedures. The delegate will be |
| configured to use the provided I/O capabilities to determine the pairing method.</p> |
| <p>Only one PairingDelegate can be registered at a time. Closing a PairingDelegate aborts all |
| on-going pairing procedures associated with a delegate and closes the PairingDelegate |
| previously assigned for this Access instance.</p> |
| <ul> |
| <li>request <code>input</code> Bluetooth input capability</li> |
| <li>request <code>output</code> Bluetooth output capability</li> |
| <li>request <code>delegate</code> The client end of a PairingDelegate channel.</li> |
| </ul> |
| <h1>Deprecation - This method is folded into the fuchsia.bluetooth.sys/Pairing protocol. See</h1> |
| <p>fxbug.dev/98413 for more details on the migration.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: HEAD</span> <span class="fidl-attribute fidl-version">Added: 7</span></div> |
| |
| |
| |
| #### Request {#Access.SetPairingDelegate_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>input</code></td> |
| <td> |
| <code><a class='link' href='#InputCapability'>InputCapability</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>output</code></td> |
| <td> |
| <code><a class='link' href='#OutputCapability'>OutputCapability</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>delegate</code></td> |
| <td> |
| <code><a class='link' href='#PairingDelegate'>PairingDelegate</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### StartDiscovery {#Access.StartDiscovery} |
| |
| <p>Start a general discovery procedure. All general discoverable BR/EDR, LE, |
| and BR/EDR/LE devices will appear in the peer list, which can be observed by calling |
| <a class='link' href='../fuchsia.bluetooth.sys/'>fuchsia.bluetooth.sys</a>/<a class='link' href='../fuchsia.bluetooth.sys/#Access.WatchPeers'>Access.WatchPeers</a>.</p> |
| <ul> |
| <li>request <code>token</code> <a class='link' href='../fuchsia.bluetooth.sys/'>fuchsia.bluetooth.sys</a>/<a class='link' href='../fuchsia.bluetooth.sys/#ProcedureToken'>ProcedureToken</a> that will remain valid while |
| discovery is in progress. NOTE: The radio will continue performing discovery until all |
| <a class='link' href='../fuchsia.bluetooth.sys/'>fuchsia.bluetooth.sys</a>/<a class='link' href='../fuchsia.bluetooth.sys/#Access'>Access</a> drop their tokens.</li> |
| </ul> |
| <ul> |
| <li>error Reports Error.FAILED if discovery on either transport cannot be initiated.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.StartDiscovery_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>token</code></td> |
| <td> |
| <code>server_end<<a class='link' href='#ProcedureToken'>ProcedureToken</a>></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Access.StartDiscovery_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Access_StartDiscovery_Result'>Access_StartDiscovery_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### WatchPeers {#Access.WatchPeers} |
| |
| <p>Returns a list of all peers (connectable Bluetooth devices) known to the system. The first |
| call results in a snapshot of all known peers to be sent immediately in the <code>updated</code> return |
| paremeter. Subsequent calls receive a response only when one or more entries have been |
| added, modified, or removed from the entries reported since the most recent call.</p> |
| <ul> |
| <li>response <code>updated</code> Peers that were added or updated since the last call to WatchPeers().</li> |
| <li>response <code>removed</code> Ids of peers that were removed since the last call to WatchPeers().</li> |
| </ul> |
| |
| |
| |
| #### Request {#Access.WatchPeers_Request} |
| |
| <EMPTY> |
| |
| |
| #### Response {#Access.WatchPeers_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>updated</code></td> |
| <td> |
| <code>vector<<a class='link' href='#Peer'>Peer</a>></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>removed</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a>></code> |
| </td> |
| </tr> |
| </table> |
| |
| ## Bootstrap {#Bootstrap} |
| *Defined in [fuchsia.bluetooth.sys/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/bootstrap.fidl;l=22)* |
| <p>Protocol used to initialize persistent core Bluetooth data. This protocol populates data that |
| determine the identity of this device as perceived by other Bluetooth devices.</p> |
| <p>This protocol can be obtained only before the core Bluetooth host subsystem has generated its |
| own identity. Once initial data is committed, this capability becomes unavailable and remains |
| unavailable even if new Bluetooth adapters are attached.</p> |
| <p>Due to the privacy and bonding secrets involved, as well as the capability to make this device |
| assume the Bluetooth identity of another device, this protocol should only be exposed to |
| privileged components that can vouchsafe the origin of the data.</p> |
| |
| |
| ### AddIdentities {#Bootstrap.AddIdentities} |
| |
| <p>Adds identities to be added to the unpopulated Bluetooth stack.</p> |
| <p>Repeated calls will append identities.</p> |
| |
| |
| |
| #### Request {#Bootstrap.AddIdentities_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>identities</code></td> |
| <td> |
| <code>vector<<a class='link' href='#Identity'>Identity</a>></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### Commit {#Bootstrap.Commit} |
| |
| <p>Writes all added bootstrapping data to the Bluetooth core stack. The server will close the |
| channel regardless of success. Returns without error if successful and the stack will be |
| considered initialized even if no bootstrapping data was written. Returns |
| INVALID_HOST_IDENTITY if any host or bonded peer data is insufficient or inconsistent, with |
| no effect (the client may retry by obtaining another protocol handle).</p> |
| |
| |
| |
| #### Request {#Bootstrap.Commit_Request} |
| |
| <EMPTY> |
| |
| |
| #### Response {#Bootstrap.Commit_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Bootstrap_Commit_Result'>Bootstrap_Commit_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ## Configuration {#Configuration} |
| *Defined in [fuchsia.bluetooth.sys/configuration.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/configuration.fidl;l=43)* |
| <p>Protocol to configure parameters and features for the core Bluetooth system. These settings |
| apply to all bt-host drivers known to the system.</p> |
| <p>This protocol should only be exposed to highly privileged components (e.g. Bluetooth developer |
| tools in a testing/qualification environment).</p> |
| |
| |
| ### Update {#Configuration.Update} |
| |
| <p>Applies the fields present in <code>settings</code> to all bt-host drivers known to the system. Any |
| fields not present in <code>settings</code> will remain unchanged.</p> |
| <ul> |
| <li>request <code>settings</code> The new settings for active bt-host drivers - only modified settings |
| need be present.</li> |
| </ul> |
| <ul> |
| <li>response <code>result</code> A fully-populated table with the resultant settings after the new |
| settings are applied.</li> |
| </ul> |
| |
| |
| |
| #### Request {#Configuration.Update_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>settings</code></td> |
| <td> |
| <code><a class='link' href='#Settings'>Settings</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Configuration.Update_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#Settings'>Settings</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ## HostWatcher {#HostWatcher} |
| *Defined in [fuchsia.bluetooth.sys/host_watcher.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/host_watcher.fidl;l=56)* |
| <p>Protocol used to observe and manage the Bluetooth controllers on the system.</p> |
| |
| |
| ### SetActive {#HostWatcher.SetActive} |
| |
| <p>Designates the host with the given <code>id</code> as active. All Bluetooth procedures will be routed |
| over this host. Any previously assigned active host will be disabled and all of its pending |
| procedures will be terminated.</p> |
| <ul> |
| <li>error This can fail if a host with <code>id</code> was not found.</li> |
| </ul> |
| |
| |
| |
| #### Request {#HostWatcher.SetActive_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#HostId'>HostId</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#HostWatcher.SetActive_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#HostWatcher_SetActive_Result'>HostWatcher_SetActive_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### Watch {#HostWatcher.Watch} |
| |
| <p>Obtain a list of all available Bluetooth controllers and their state. A response is sent |
| only if this list has changed since the last time the client has sent this message.</p> |
| |
| |
| |
| #### Request {#HostWatcher.Watch_Request} |
| |
| <EMPTY> |
| |
| |
| #### Response {#HostWatcher.Watch_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>hosts</code></td> |
| <td> |
| <code>vector<<a class='link' href='#HostInfo'>HostInfo</a>></code> |
| </td> |
| </tr> |
| </table> |
| |
| ## Pairing {#Pairing} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=11)* |
| <p>Allows system clients to enable Bluetooth pairing.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div> |
| |
| |
| ### SetDelegate {#Pairing.SetDelegate} |
| |
| <p>Assign a PairingDelegate2 to handle pairing procedures. The provided |
| I/O capabilities will be used to determine the methods used.</p> |
| <p>Only one of PairingDelegate or PairingDelegate2 can be set at a time |
| system-wide. If this is called while another delegate is set, the new |
| delegate will be closed immediately.</p> |
| <p>Closing a PairingDelegate2 unsets the pairing delegate. Ongoing |
| PairingRequests can still be completed, but new requests will act as if |
| no delegate is set.</p> |
| <p>If no delegate is set, all pairings will be rejected even if the |
| peer connection was initiated by the local device.</p> |
| <ul> |
| <li>request <code>input</code> Bluetooth input capability, see <code>InputCapability</code></li> |
| <li>request <code>output</code> Bluetooth output capability, see <code>OutputCapability</code></li> |
| <li>request <code>delegate</code> PairingDelegate2 which will receive pairing requests</li> |
| </ul> |
| |
| |
| |
| #### Request {#Pairing.SetDelegate_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>input</code></td> |
| <td> |
| <code><a class='link' href='#InputCapability'>InputCapability</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>output</code></td> |
| <td> |
| <code><a class='link' href='#OutputCapability'>OutputCapability</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>delegate</code></td> |
| <td> |
| <code><a class='link' href='#PairingDelegate2'>PairingDelegate2</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### SetPairingDelegate {#Pairing.SetPairingDelegate} |
| |
| <p>Assign a PairingDelegate to respond to pairing procedures. The provided I/O capabilities |
| will be used to determine the pairing methods used.</p> |
| <p>Only one PairingDelegate can be set at a time system-wide - if this is called |
| while another delegate is set, the new delegate will be closed immediately. |
| Closing a PairingDelegate after it is set aborts all ongoing pairing procedures |
| without accepting and unsets the delegate.</p> |
| <p>If no PairingDelegate is set, all pairings will be rejected even if the |
| peer connection was initiated by the local device.</p> |
| <ul> |
| <li>request <code>input</code> Bluetooth input capability, see <code>InputCapability</code></li> |
| <li>request <code>output</code> Bluetooth output capability, see <code>OutputCapability</code></li> |
| <li>request <code>delegate</code> PairingDelegate which will receive pairing requests</li> |
| </ul> |
| |
| |
| |
| #### Request {#Pairing.SetPairingDelegate_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>input</code></td> |
| <td> |
| <code><a class='link' href='#InputCapability'>InputCapability</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>output</code></td> |
| <td> |
| <code><a class='link' href='#OutputCapability'>OutputCapability</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>delegate</code></td> |
| <td> |
| <code><a class='link' href='#PairingDelegate'>PairingDelegate</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## PairingDelegate {#PairingDelegate} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=136)* |
| <p>A Bluetooth Pairing Delegate is responsible for confirming or denying |
| pairing requests received from Bluetooth peers that connect or are |
| being connected to the local device.</p> |
| <p>Any new pairing will result in a call to <code>PairingDelegate.OnPairingRequest</code>, |
| including pairings where the InputCapability and OutputCapability are set |
| to none. The delegate is expected to have enough context to derive whether |
| to accept or deny the pairing.</p> |
| <p>Only one delegate is allowed to be set per system at a time. See |
| <code>fuchsia.bluetooth.sys.Pairing</code> for how to set the pairing delegate.</p> |
| |
| |
| ### OnLocalKeypress {#PairingDelegate.OnLocalKeypress} |
| |
| <p>The delegate can send this event to notify the peer of local keypresses |
| during pairing using <code>PairingMethod.PASSKEY_ENTRY</code>.</p> |
| <p>Sending local keypress events can allow the user additional time for |
| pairing when entering a passkey.</p> |
| <p>This should only be sent after an OnPairingRequest has been received |
| with a PASSKEY_ENTRY method, and before the reponse for that pairing |
| request.</p> |
| <ul> |
| <li>request <code>id</code> id of a peer with a pairing request active</li> |
| <li>request <code>keypress</code> the type of notification which should be sent</li> |
| </ul> |
| |
| |
| |
| |
| #### Response {#PairingDelegate.OnLocalKeypress_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>keypress</code></td> |
| <td> |
| <code><a class='link' href='#PairingKeypress'>PairingKeypress</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### OnPairingComplete {#PairingDelegate.OnPairingComplete} |
| |
| <p>Called when the pairing procedure for a peer has been completed. |
| This can be due to successful completion or an error (e.g. due to cancellation |
| by the peer, a timeout, or disconnection).</p> |
| <ul> |
| <li>request <code>id</code> The Bluetooth peer ID of the peer which was being paired.</li> |
| <li>request <code>success</code> true if the pairing succeeded, otherwise false.</li> |
| </ul> |
| |
| |
| |
| #### Request {#PairingDelegate.OnPairingComplete_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>success</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### OnPairingRequest {#PairingDelegate.OnPairingRequest} |
| |
| <p>Called to confirm a pairing. The pairing process will be continued if |
| <code>accept</code> response is true and rejected otherwise. |
| If the pairing method requires a passkey it must be included as well. |
| Pairing methods that do not require a passkey ignore the <code>entered_passkey</code> |
| repsonse.</p> |
| <p>The pairing can fail (usually by timeout or peer disconnect) before the |
| response is received. The OnPairingComplete method will be called when this |
| occurs. Any response sent in this case will be ignored.</p> |
| <ul> |
| <li>request <code>peer</code> information about the peer being paired</li> |
| <li>request <code>method</code> method of pairing active. See <code>PairingMethod</code></li> |
| <li>request <code>displayed_passkey</code> a passkey to display to the user if |
| PASSKEY_DISPLAY or PASSKEY_COMPARISON is being used. Meaningless |
| otherwise.</li> |
| </ul> |
| <ul> |
| <li>response <code>accept</code> true if the pairing is accepted</li> |
| <li>response <code>entered_passkey</code> passkey entered by the user. Ignored unless |
| method is PASSKEY_ENTRY.</li> |
| </ul> |
| |
| |
| |
| #### Request {#PairingDelegate.OnPairingRequest_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>peer</code></td> |
| <td> |
| <code><a class='link' href='#Peer'>Peer</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>method</code></td> |
| <td> |
| <code><a class='link' href='#PairingMethod'>PairingMethod</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>displayed_passkey</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#PairingDelegate.OnPairingRequest_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>accept</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>entered_passkey</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| </tr> |
| </table> |
| |
| ### OnRemoteKeypress {#PairingDelegate.OnRemoteKeypress} |
| |
| <p>Called to notify keypresses from the peer device during pairing using |
| <code>PairingMethod.PASSKEY_DISPLAY</code>.</p> |
| <p>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 keypress.</p> |
| <p>This event will only be called between when an OnPairingRequest has been sent for |
| <code>id</code> and when OnPairingComplete is sent.</p> |
| <p>Note: many devices do not send these events</p> |
| <ul> |
| <li>request <code>id</code> The peer id of the peer that sent the keypress event.</li> |
| <li>request <code>keypress</code> The type of event which was received.</li> |
| </ul> |
| |
| |
| |
| #### Request {#PairingDelegate.OnRemoteKeypress_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>keypress</code></td> |
| <td> |
| <code><a class='link' href='#PairingKeypress'>PairingKeypress</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## PairingDelegate2 {#PairingDelegate2} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=288)* |
| <p>A Bluetooth Pairing Delegate is responsible for confirming or denying |
| pairing requests received from Bluetooth peers that connect or are |
| being connected to the local device.</p> |
| <p>Any new pairing will result in a call to <code>PairingDelegate.StartRequest</code>, |
| including pairings where the InputCapability and OutputCapability are set |
| to none. The delegate is expected to have enough context to derive whether |
| to accept or reject the pairing.</p> |
| <p>Only one delegate is allowed to be set per system at a time. See |
| <code>fuchsia.bluetooth.sys.Pairing</code> for how to set the pairing delegate.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div> |
| |
| |
| ### RequestComplete {#PairingDelegate2.RequestComplete} |
| |
| <p>Called when the pairing procedure for a peer has been completed. This |
| can be due to successful completion or an error (e.g. due to |
| cancellation by the peer, a timeout, or disconnection).</p> |
| <ul> |
| <li>request <code>id</code> The Bluetooth peer ID of the peer which was being paired</li> |
| <li>request <code>success</code> true if the pairing succeeded, otherwise false</li> |
| </ul> |
| |
| |
| |
| #### Request {#PairingDelegate2.RequestComplete_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>success</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### StartRequest {#PairingDelegate2.StartRequest} |
| |
| <p>Called when a pairing with <code>peer</code> is started. The pairing process is |
| continued using the PairingRequest protocol.</p> |
| <p>The properties of the pairing are provided in <code>info</code> which indicates |
| what type of interaction is intended locally.</p> |
| <p>Multiple requests can be active at one time for different peers, and |
| requests can outlive this protocol. Dropping the request protocol will |
| automatically reject the pairing.</p> |
| <p>All fields will always be present.</p> |
| |
| |
| |
| #### Request {#PairingDelegate2.StartRequest_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>payload</code></td> |
| <td> |
| <code><a class='link' href='#PairingDelegate2StartRequestRequest'>PairingDelegate2StartRequestRequest</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## PairingRequest {#PairingRequest} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=241)* |
| <p>This protocol is active when a pairing is in progress, and provided to the |
| PairingDelegate via the <code>PairingDelegate.StartRequest</code> |
| The server will close this protocol with an epitaph if the pairing process |
| completes early without success:</p> |
| <ul> |
| <li>ZX_ERR_UNAVAILABLE - Bluetooth peer has disconnected</li> |
| <li>ZX_ERR_NOT_SUPPORTED - a passkey was provided when it was not expected</li> |
| <li>ZX_ERR_BAD_STATE - a keypress was sent when not using |
| PairingProperties.passkey_entry</li> |
| <li>ZX_ERR_TIMED_OUT - no activity was detected, and the pairing was stopped</li> |
| </ul> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div> |
| |
| |
| ### Accept {#PairingRequest.Accept} |
| |
| <p>Accept the pairing request. |
| entered_passkey is required if the PairingProperties.passkey_entry |
| method is used, ignored otherwise.</p> |
| |
| |
| |
| #### Request {#PairingRequest.Accept_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>payload</code></td> |
| <td> |
| <code><a class='link' href='#PairingRequestAcceptRequest'>PairingRequestAcceptRequest</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ### Keypress {#PairingRequest.Keypress} |
| |
| <p>Used to communicate local keypresses to update the remote peer on |
| the progress of the pairing. The responses to this method should |
| be used for flow control.</p> |
| |
| |
| |
| #### Request {#PairingRequest.Keypress_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>keypress</code></td> |
| <td> |
| <code><a class='link' href='#PairingKeypress'>PairingKeypress</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#PairingRequest.Keypress_Response} |
| |
| <EMPTY> |
| |
| ### OnComplete {#PairingRequest.OnComplete} |
| |
| <p>Sent once when the pairing is completed, just before the protocol is |
| closed. |
| The success value along with the PeerId will also be sent to the |
| delegate using the <code>PairingDelegate.RequestComplete</code> call.</p> |
| |
| |
| |
| |
| #### Response {#PairingRequest.OnComplete_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>success</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| </tr> |
| </table> |
| |
| ### OnKeypress {#PairingRequest.OnKeypress} |
| |
| <p>Sent when the pairing method is passkey_display. Can be used to |
| update the UI to indicate reception of keypresses.</p> |
| |
| |
| |
| |
| #### Response {#PairingRequest.OnKeypress_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>keypress</code></td> |
| <td> |
| <code><a class='link' href='#PairingKeypress'>PairingKeypress</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ### Reject {#PairingRequest.Reject} |
| |
| <p>Reject the pairing request. |
| Closing this protocol will also reject the pairing request.</p> |
| |
| |
| |
| #### Request {#PairingRequest.Reject_Request} |
| |
| <EMPTY> |
| |
| |
| ## ProcedureToken {#ProcedureToken} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=36)* |
| <p>Represents an active procedure. The validity of a handle that supports this protocol is tied to |
| the activity of the procedure that it is attached to. To elaborate:</p> |
| <ol> |
| <li>Closing a token handle ends the procedure that it is attached to.</li> |
| <li>The system closes a token handle to communicate that a procedure was internally terminated.</li> |
| </ol> |
| |
| |
| |
| ## **STRUCTS** |
| |
| ### Access_Connect_Response {#Access_Connect_Response data-text="Access_Connect_Response"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=130)* |
| |
| <EMPTY> |
| |
| ### Access_Disconnect_Response {#Access_Disconnect_Response data-text="Access_Disconnect_Response"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=140)* |
| |
| <EMPTY> |
| |
| ### Access_Forget_Response {#Access_Forget_Response data-text="Access_Forget_Response"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=172)* |
| |
| <EMPTY> |
| |
| ### Access_MakeDiscoverable_Response {#Access_MakeDiscoverable_Response data-text="Access_MakeDiscoverable_Response"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=92)* |
| |
| <EMPTY> |
| |
| ### Access_Pair_Response {#Access_Pair_Response data-text="Access_Pair_Response"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=163)* |
| |
| <EMPTY> |
| |
| ### Access_StartDiscovery_Response {#Access_StartDiscovery_Response data-text="Access_StartDiscovery_Response"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=104)* |
| |
| <EMPTY> |
| |
| ### Bootstrap_Commit_Response {#Bootstrap_Commit_Response data-text="Bootstrap_Commit_Response"} |
| *Defined in [fuchsia.bluetooth.sys/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/bootstrap.fidl;l=37)* |
| |
| <EMPTY> |
| |
| ### Consent {#Consent data-text="Consent"} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=216)* |
| |
| <EMPTY> |
| |
| ### HostWatcher_SetActive_Response {#HostWatcher_SetActive_Response data-text="HostWatcher_SetActive_Response"} |
| *Defined in [fuchsia.bluetooth.sys/host_watcher.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/host_watcher.fidl;l=70)* |
| |
| <EMPTY> |
| |
| ### Key {#Key data-text="Key"} |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=15)* |
| <p>Represents a 128-bit secret key.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="Key.value"> |
| <td><code>value</code></td> |
| <td> |
| <code>uint8[16]</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### LeConnectionParameters {#LeConnectionParameters data-text="LeConnectionParameters"} |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=40)* |
| <p>The preferred LE connection parameters of the peer.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="LeConnectionParameters.connection_interval"> |
| <td><code>connection_interval</code></td> |
| <td> |
| <code>uint16</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| <tr id="LeConnectionParameters.connection_latency"> |
| <td><code>connection_latency</code></td> |
| <td> |
| <code>uint16</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| <tr id="LeConnectionParameters.supervision_timeout"> |
| <td><code>supervision_timeout</code></td> |
| <td> |
| <code>uint16</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### Ltk {#Ltk data-text="Ltk"} |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=33)* |
| <p>Represents a LE Long-Term peer key used for link encyrption. The <code>ediv</code> and <code>rand</code> |
| fields are zero if distributed using LE Secure Connections pairing.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="Ltk.key"> |
| <td><code>key</code></td> |
| <td> |
| <code><a class='link' href='#PeerKey'>PeerKey</a></code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| <tr id="Ltk.ediv"> |
| <td><code>ediv</code></td> |
| <td> |
| <code>uint16</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| <tr id="Ltk.rand"> |
| <td><code>rand</code></td> |
| <td> |
| <code>uint64</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### PasskeyEntry {#PasskeyEntry data-text="PasskeyEntry"} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=228)* |
| |
| <EMPTY> |
| |
| ### PeerKey {#PeerKey data-text="PeerKey"} |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=20)* |
| <p>Represents a key that was received from a peer.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="PeerKey.security"> |
| <td><code>security</code></td> |
| <td> |
| <code><a class='link' href='#SecurityProperties'>SecurityProperties</a></code> |
| </td> |
| <td><p>The security properties of this link under which this key was received.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="PeerKey.data"> |
| <td><code>data</code></td> |
| <td> |
| <code><a class='link' href='#Key'>Key</a></code> |
| </td> |
| <td><p>The contents of the key.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### SecurityProperties {#SecurityProperties data-text="SecurityProperties"} |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=8)* |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="SecurityProperties.authenticated"> |
| <td><code>authenticated</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| <tr id="SecurityProperties.secure_connections"> |
| <td><code>secure_connections</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| <tr id="SecurityProperties.encryption_key_size"> |
| <td><code>encryption_key_size</code></td> |
| <td> |
| <code>uint8</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| |
| ## **ENUMS** |
| |
| ### BondableMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#BondableMode data-text="BondableMode"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing_options.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing_options.fidl;l=19)* |
| <p>Whether or not the device should form a bluetooth bond during the pairing prodecure. |
| As described in Core Spec v5.2 | Vol 3, Part C, Sec 4.3</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="BondableMode.BONDABLE"> |
| <td><h3 id="BondableMode.BONDABLE" class="add-link hide-from-toc">BONDABLE</h3></td> |
| <td><code>1</code></td> |
| <td><p>The device will form a bond during pairing with peers</p> |
| </td> |
| </tr> |
| <tr id="BondableMode.NON_BONDABLE"> |
| <td><h3 id="BondableMode.NON_BONDABLE" class="add-link hide-from-toc">NON_BONDABLE</h3></td> |
| <td><code>2</code></td> |
| <td><p>The device will not form a bond during pairing with peers</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### BootstrapError [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#BootstrapError data-text="BootstrapError"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/bootstrap.fidl;l=6)* |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="BootstrapError.INVALID_HOST_IDENTITY"> |
| <td><h3 id="BootstrapError.INVALID_HOST_IDENTITY" class="add-link hide-from-toc">INVALID_HOST_IDENTITY</h3></td> |
| <td><code>1</code></td> |
| <td></td> |
| </tr> |
| <tr id="BootstrapError.WRITE_FAILURE"> |
| <td><h3 id="BootstrapError.WRITE_FAILURE" class="add-link hide-from-toc">WRITE_FAILURE</h3></td> |
| <td><code>2</code></td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Error [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Error data-text="Error"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=8)* |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="Error.FAILED"> |
| <td><h3 id="Error.FAILED" class="add-link hide-from-toc">FAILED</h3></td> |
| <td><code>1</code></td> |
| <td><p>Operation could not be performed.</p> |
| </td> |
| </tr> |
| <tr id="Error.PEER_NOT_FOUND"> |
| <td><h3 id="Error.PEER_NOT_FOUND" class="add-link hide-from-toc">PEER_NOT_FOUND</h3></td> |
| <td><code>2</code></td> |
| <td><p>The peer designated for the operation was not found.</p> |
| </td> |
| </tr> |
| <tr id="Error.TIMED_OUT"> |
| <td><h3 id="Error.TIMED_OUT" class="add-link hide-from-toc">TIMED_OUT</h3></td> |
| <td><code>3</code></td> |
| <td><p>The time limit for the operation has expired.</p> |
| </td> |
| </tr> |
| <tr id="Error.CANCELED"> |
| <td><h3 id="Error.CANCELED" class="add-link hide-from-toc">CANCELED</h3></td> |
| <td><code>4</code></td> |
| <td><p>The operation was canceled.</p> |
| </td> |
| </tr> |
| <tr id="Error.IN_PROGRESS"> |
| <td><h3 id="Error.IN_PROGRESS" class="add-link hide-from-toc">IN_PROGRESS</h3></td> |
| <td><code>5</code></td> |
| <td><p>Operation already in progress.</p> |
| </td> |
| </tr> |
| <tr id="Error.NOT_SUPPORTED"> |
| <td><h3 id="Error.NOT_SUPPORTED" class="add-link hide-from-toc">NOT_SUPPORTED</h3></td> |
| <td><code>6</code></td> |
| <td><p>Operation not supported.</p> |
| </td> |
| </tr> |
| <tr id="Error.INVALID_ARGUMENTS"> |
| <td><h3 id="Error.INVALID_ARGUMENTS" class="add-link hide-from-toc">INVALID_ARGUMENTS</h3></td> |
| <td><code>7</code></td> |
| <td><p>The operation was given an invalid set of arguments.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### InputCapability [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#InputCapability data-text="InputCapability"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=60)* |
| <p>Input Capabilities for pairing exchanges. |
| These should be set based on the ability of the local system to enter |
| responses to pairing requests. |
| See Volume 3, Part C, Table 5.3 for more information.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="InputCapability.NONE"> |
| <td><h3 id="InputCapability.NONE" class="add-link hide-from-toc">NONE</h3></td> |
| <td><code>1</code></td> |
| <td><p>There is no user input method available for responding 'yes' or 'no' to |
| a pairing request. |
| Note: setting this setting will mean most pairings are considered |
| unauthenticated and vulnerable to machine-in-the-middle attacks.</p> |
| </td> |
| </tr> |
| <tr id="InputCapability.CONFIRMATION"> |
| <td><h3 id="InputCapability.CONFIRMATION" class="add-link hide-from-toc">CONFIRMATION</h3></td> |
| <td><code>2</code></td> |
| <td><p>The user can respond yes or no to a request.</p> |
| </td> |
| </tr> |
| <tr id="InputCapability.KEYBOARD"> |
| <td><h3 id="InputCapability.KEYBOARD" class="add-link hide-from-toc">KEYBOARD</h3></td> |
| <td><code>3</code></td> |
| <td><p>The user has a keyboard (or other UI) where they can type a numerical code |
| and signal they have finished or cancel.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### LeSecurityMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LeSecurityMode data-text="LeSecurityMode"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/security_mode.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/security_mode.fidl;l=10)* |
| <p>The LE Security Mode of a BLE device determines the possible security properties of the device. |
| The security mode does not make specific guarantees about the current security properties of a |
| device's connections; it sets restrictions on the allowable security properties. See Core Spec |
| v5.2 Vol. 3, Part C 10.2 for more details.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="LeSecurityMode.MODE_1"> |
| <td><h3 id="LeSecurityMode.MODE_1" class="add-link hide-from-toc">MODE_1</h3></td> |
| <td><code>1</code></td> |
| <td><p>In LE Security Mode 1, communication is secured by encryption, and BLE-based services may |
| specify varying requirements for authentication, key size, or Secure Connections protection |
| on the encryption keys.</p> |
| </td> |
| </tr> |
| <tr id="LeSecurityMode.SECURE_CONNECTIONS_ONLY"> |
| <td><h3 id="LeSecurityMode.SECURE_CONNECTIONS_ONLY" class="add-link hide-from-toc">SECURE_CONNECTIONS_ONLY</h3></td> |
| <td><code>2</code></td> |
| <td><p>In Secure Connections Only mode, all secure communication must use 128 bit, authenticated, |
| and LE Secure Connections-generated encryption keys. If these encryption key properties |
| cannot be satisfied by a device due to system constraints, any connection involving such |
| a device will not be able to secure the link at all. This mode does not prevent unencrypted |
| communication; it merely enforces stricter policies on all encrypted communication.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### OutputCapability [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#OutputCapability data-text="OutputCapability"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=77)* |
| <p>Output Capabilities for pairing excanges. |
| These should be set based on the ability of the local system to display |
| information to the user initiating or accepting a Bluetooth pairing. |
| See Volume 3, Part C, Table 5.4 for more information.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="OutputCapability.NONE"> |
| <td><h3 id="OutputCapability.NONE" class="add-link hide-from-toc">NONE</h3></td> |
| <td><code>1</code></td> |
| <td><p>There is no display available for pairing.</p> |
| </td> |
| </tr> |
| <tr id="OutputCapability.DISPLAY"> |
| <td><h3 id="OutputCapability.DISPLAY" class="add-link hide-from-toc">DISPLAY</h3></td> |
| <td><code>2</code></td> |
| <td><p>There is a display that can show at least a six-digit decimal number.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PairingKeypress [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PairingKeypress data-text="PairingKeypress"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=111)* |
| <p>Used to convey information to the peer on progress typing a passkey. The |
| various types of keypresses can be used to customize what is communicated to |
| the user requesting a pairing.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="PairingKeypress.DIGIT_ENTERED"> |
| <td><h3 id="PairingKeypress.DIGIT_ENTERED" class="add-link hide-from-toc">DIGIT_ENTERED</h3></td> |
| <td><code>1</code></td> |
| <td><p>The user has entered a single digit.</p> |
| </td> |
| </tr> |
| <tr id="PairingKeypress.DIGIT_ERASED"> |
| <td><h3 id="PairingKeypress.DIGIT_ERASED" class="add-link hide-from-toc">DIGIT_ERASED</h3></td> |
| <td><code>2</code></td> |
| <td><p>The user has erased a single digit.</p> |
| </td> |
| </tr> |
| <tr id="PairingKeypress.PASSKEY_CLEARED"> |
| <td><h3 id="PairingKeypress.PASSKEY_CLEARED" class="add-link hide-from-toc">PASSKEY_CLEARED</h3></td> |
| <td><code>3</code></td> |
| <td><p>The user has cleared the entire passkey.</p> |
| </td> |
| </tr> |
| <tr id="PairingKeypress.PASSKEY_ENTERED"> |
| <td><h3 id="PairingKeypress.PASSKEY_ENTERED" class="add-link hide-from-toc">PASSKEY_ENTERED</h3></td> |
| <td><code>4</code></td> |
| <td><p>The user has finished entering the passkey.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PairingMethod [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PairingMethod data-text="PairingMethod"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=86)* |
| <p>Different types required by the Security Manager for pairing methods. |
| Bluetooth SIG has different requirements for different device capabilities.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="PairingMethod.CONSENT"> |
| <td><h3 id="PairingMethod.CONSENT" class="add-link hide-from-toc">CONSENT</h3></td> |
| <td><code>1</code></td> |
| <td><p>The user is asked to accept or reject pairing. |
| This is the minimum method - even when both devices do not support |
| input or output, the delegate will be asked to confirm any pairing |
| not initiated with user intent.</p> |
| </td> |
| </tr> |
| <tr id="PairingMethod.PASSKEY_DISPLAY"> |
| <td><h3 id="PairingMethod.PASSKEY_DISPLAY" class="add-link hide-from-toc">PASSKEY_DISPLAY</h3></td> |
| <td><code>2</code></td> |
| <td><p>The user is shown a 6-digit numerical passkey on this device which they |
| must enter on the peer device.</p> |
| </td> |
| </tr> |
| <tr id="PairingMethod.PASSKEY_COMPARISON"> |
| <td><h3 id="PairingMethod.PASSKEY_COMPARISON" class="add-link hide-from-toc">PASSKEY_COMPARISON</h3></td> |
| <td><code>3</code></td> |
| <td><p>The user is shown a 6-digit numerical passkey on this device which will |
| also shown on the peer device. The user must compare the passkeys and |
| accept the pairing if the passkeys match.</p> |
| </td> |
| </tr> |
| <tr id="PairingMethod.PASSKEY_ENTRY"> |
| <td><h3 id="PairingMethod.PASSKEY_ENTRY" class="add-link hide-from-toc">PASSKEY_ENTRY</h3></td> |
| <td><code>4</code></td> |
| <td><p>The user is asked to enter a 6-digit passkey on this device which is |
| communicated via the peer device.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PairingSecurityLevel [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PairingSecurityLevel data-text="PairingSecurityLevel"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing_options.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing_options.fidl;l=8)* |
| <p>The security level required for this pairing - corresponds to the security |
| levels defined in the Security Manager Protocol in Vol 3, Part H, Section 2.3.1</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="PairingSecurityLevel.ENCRYPTED"> |
| <td><h3 id="PairingSecurityLevel.ENCRYPTED" class="add-link hide-from-toc">ENCRYPTED</h3></td> |
| <td><code>1</code></td> |
| <td><p>Encrypted without MITM protection (unauthenticated)</p> |
| </td> |
| </tr> |
| <tr id="PairingSecurityLevel.AUTHENTICATED"> |
| <td><h3 id="PairingSecurityLevel.AUTHENTICATED" class="add-link hide-from-toc">AUTHENTICATED</h3></td> |
| <td><code>2</code></td> |
| <td><p>Encrypted with MITM protection (authenticated), although this level of security does not |
| fully protect against passive eavesdroppers</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TechnologyType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TechnologyType data-text="TechnologyType"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.bluetooth.sys/peer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/peer.fidl;l=8)* |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="TechnologyType.LOW_ENERGY"> |
| <td><h3 id="TechnologyType.LOW_ENERGY" class="add-link hide-from-toc">LOW_ENERGY</h3></td> |
| <td><code>1</code></td> |
| <td></td> |
| </tr> |
| <tr id="TechnologyType.CLASSIC"> |
| <td><h3 id="TechnologyType.CLASSIC" class="add-link hide-from-toc">CLASSIC</h3></td> |
| <td><code>2</code></td> |
| <td></td> |
| </tr> |
| <tr id="TechnologyType.DUAL_MODE"> |
| <td><h3 id="TechnologyType.DUAL_MODE" class="add-link hide-from-toc">DUAL_MODE</h3></td> |
| <td><code>3</code></td> |
| <td></td> |
| </tr> |
| </table> |
| |
| |
| ## **TABLES** |
| |
| ### BondingData {#BondingData data-text="BondingData"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=89)* |
| <p>Represents the bonding data for a single peer.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="BondingData.identifier"> |
| <td><h3 id="BondingData.identifier" class="add-link hide-from-toc">1</h3></td> |
| <td><code>identifier</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| <td><p>The identifier that uniquely identifies this peer.</p> |
| </td> |
| </tr> |
| <tr id="BondingData.local_address"> |
| <td><h3 id="BondingData.local_address" class="add-link hide-from-toc">2</h3></td> |
| <td><code>local_address</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Address'>Address</a></code> |
| </td> |
| <td><p>The local Bluetooth identity address that this bond is associated with.</p> |
| </td> |
| </tr> |
| <tr id="BondingData.name"> |
| <td><h3 id="BondingData.name" class="add-link hide-from-toc">3</h3></td> |
| <td><code>name</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#DeviceName'>DeviceName</a></code> |
| </td> |
| <td><p>The name of the peer, if known.</p> |
| </td> |
| </tr> |
| <tr id="BondingData."> |
| <td><h3 id="BondingData." class="add-link hide-from-toc">4</h3></td> |
| <td><code>RESERVED</code></td> |
| <td> |
| <code></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="BondingData."> |
| <td><h3 id="BondingData." class="add-link hide-from-toc">5</h3></td> |
| <td><code>RESERVED</code></td> |
| <td> |
| <code></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="BondingData.address"> |
| <td><h3 id="BondingData.address" class="add-link hide-from-toc">6</h3></td> |
| <td><code>address</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Address'>Address</a></code> |
| </td> |
| <td><p>The identity address of the peer.</p> |
| </td> |
| </tr> |
| <tr id="BondingData.le_bond"> |
| <td><h3 id="BondingData.le_bond" class="add-link hide-from-toc">7</h3></td> |
| <td><code>le_bond</code></td> |
| <td> |
| <code><a class='link' href='#LeBondData'>LeBondData</a></code> |
| </td> |
| <td><p>Bonding data that is present when this peer is paired on the LE transport.</p> |
| </td> |
| </tr> |
| <tr id="BondingData.bredr_bond"> |
| <td><h3 id="BondingData.bredr_bond" class="add-link hide-from-toc">8</h3></td> |
| <td><code>bredr_bond</code></td> |
| <td> |
| <code><a class='link' href='#BredrBondData'>BredrBondData</a></code> |
| </td> |
| <td><p>Bonding data that is present when this peer is paired on the BR/EDR transport.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### BredrBondData {#BredrBondData data-text="BredrBondData"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=74)* |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="BredrBondData.role_preference"> |
| <td><h3 id="BredrBondData.role_preference" class="add-link hide-from-toc">1</h3></td> |
| <td><code>role_preference</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#ConnectionRole'>ConnectionRole</a></code> |
| </td> |
| <td><p>The peer's preferred piconet role. This is determined by role switch procedures. Paging and |
| connecting from a peer does not automatically set this flag. If absent, the peer has not |
| expressed a preference.</p> |
| </td> |
| </tr> |
| <tr id="BredrBondData.services"> |
| <td><h3 id="BredrBondData.services" class="add-link hide-from-toc">2</h3></td> |
| <td><code>services</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>>[65535]</code> |
| </td> |
| <td><p>Known service UUIDs obtained from EIR data or SDP.</p> |
| </td> |
| </tr> |
| <tr id="BredrBondData.link_key"> |
| <td><h3 id="BredrBondData.link_key" class="add-link hide-from-toc">3</h3></td> |
| <td><code>link_key</code></td> |
| <td> |
| <code><a class='link' href='#PeerKey'>PeerKey</a></code> |
| </td> |
| <td><p>The semi-permanent BR/EDR key. Present if link was paired with Secure Simple Pairing or |
| stronger.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### HostData {#HostData data-text="HostData"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=113)* |
| <p>Represents persistent local host data.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="HostData.irk"> |
| <td><h3 id="HostData.irk" class="add-link hide-from-toc">1</h3></td> |
| <td><code>irk</code></td> |
| <td> |
| <code><a class='link' href='#LocalKey'>LocalKey</a></code> |
| </td> |
| <td><p>The local Identity Resolving Key used by a bt-host device to generate Resolvable Private |
| Addresses when privacy is enabled.</p> |
| <p>May be absent for hosts that do not use LE privacy, or that only use Non-Resolvable Private |
| Addresses.</p> |
| <p>NOTE: This key is distributed to LE peers during pairing procedures. The client must take |
| care to assign an IRK that consistent with the local bt-host identity.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### HostInfo {#HostInfo data-text="HostInfo"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/host_watcher.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/host_watcher.fidl;l=10)* |
| <p>Information about a Bluetooth controller and its associated host-subsystem state.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="HostInfo.id"> |
| <td><h3 id="HostInfo.id" class="add-link hide-from-toc">1</h3></td> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#HostId'>HostId</a></code> |
| </td> |
| <td><p>Uniquely identifies a host on the current system.</p> |
| <p>This field is always present.</p> |
| </td> |
| </tr> |
| <tr id="HostInfo.technology"> |
| <td><h3 id="HostInfo.technology" class="add-link hide-from-toc">2</h3></td> |
| <td><code>technology</code></td> |
| <td> |
| <code><a class='link' href='#TechnologyType'>TechnologyType</a></code> |
| </td> |
| <td><p>The Bluetooth technologies that are supported by this adapter.</p> |
| <p>This field is always present.</p> |
| </td> |
| </tr> |
| <tr id="HostInfo.address"> |
| <td><h3 id="HostInfo.address" class="add-link hide-from-toc">3</h3></td> |
| <td><code>address</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Address'>Address</a></code> |
| </td> |
| <td><p>The identity address - this is always the Public address of the host.</p> |
| <h1>Deprecation</h1> |
| <p>The <code>addresses</code> field provides more information about the host.</p> |
| <p>This field is always present.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: HEAD</span></div> |
| </td> |
| </tr> |
| <tr id="HostInfo.active"> |
| <td><h3 id="HostInfo.active" class="add-link hide-from-toc">4</h3></td> |
| <td><code>active</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Indicates whether or not this is the active host. The system has one active host which |
| handles all Bluetooth procedures.</p> |
| </td> |
| </tr> |
| <tr id="HostInfo.local_name"> |
| <td><h3 id="HostInfo.local_name" class="add-link hide-from-toc">5</h3></td> |
| <td><code>local_name</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#DeviceName'>DeviceName</a></code> |
| </td> |
| <td><p>The local name of this host. This is the name that is visible to other devices when this |
| host is in the discoverable mode.</p> |
| </td> |
| </tr> |
| <tr id="HostInfo.discoverable"> |
| <td><h3 id="HostInfo.discoverable" class="add-link hide-from-toc">6</h3></td> |
| <td><code>discoverable</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Whether or not the local adapter is currently discoverable over BR/EDR and |
| LE physical channels.</p> |
| </td> |
| </tr> |
| <tr id="HostInfo.discovering"> |
| <td><h3 id="HostInfo.discovering" class="add-link hide-from-toc">7</h3></td> |
| <td><code>discovering</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Whether or not device discovery is currently being performed.</p> |
| </td> |
| </tr> |
| <tr id="HostInfo.addresses"> |
| <td><h3 id="HostInfo.addresses" class="add-link hide-from-toc">8</h3></td> |
| <td><code>addresses</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Address'>Address</a>></code> |
| </td> |
| <td><p>The addresses (LE and/or BR/EDR) associated with the host.</p> |
| <p>The Public address is always reported first.</p> |
| <p>This field is always present.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div> |
| </td> |
| </tr> |
| </table> |
| |
| ### Identity {#Identity data-text="Identity"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=135)* |
| <p>Represents the persistent configuration of a single host-subsystem instance. This is used for |
| identity presentation (inquiry, inquiry response, and advertisement) and for bonding secrets |
| recall (encrypting link data to peers associated with this identity).</p> |
| <p>Each BR/EDR BD_ADDR and Low Energy public identity address used to bond should have its own |
| Identity instance containing corresponding peers.</p> |
| <p>Each Identity instance that supports LE privacy should have an Identity Resolving Key (IRK) that |
| is consistent with that distributed to its bonded peers.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="Identity.host"> |
| <td><h3 id="Identity.host" class="add-link hide-from-toc">1</h3></td> |
| <td><code>host</code></td> |
| <td> |
| <code><a class='link' href='#HostData'>HostData</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Identity.bonds"> |
| <td><h3 id="Identity.bonds" class="add-link hide-from-toc">2</h3></td> |
| <td><code>bonds</code></td> |
| <td> |
| <code>vector<<a class='link' href='#BondingData'>BondingData</a>></code> |
| </td> |
| <td><p>All bonds that use a public identity address must contain the same local address.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### LeBondData {#LeBondData data-text="LeBondData"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/identity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=46)* |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="LeBondData.connection_parameters"> |
| <td><h3 id="LeBondData.connection_parameters" class="add-link hide-from-toc">1</h3></td> |
| <td><code>connection_parameters</code></td> |
| <td> |
| <code><a class='link' href='#LeConnectionParameters'>LeConnectionParameters</a></code> |
| </td> |
| <td><p>The peer's preferred connection parameters, if known.</p> |
| </td> |
| </tr> |
| <tr id="LeBondData.services"> |
| <td><h3 id="LeBondData.services" class="add-link hide-from-toc">2</h3></td> |
| <td><code>services</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>>[65535]</code> |
| </td> |
| <td><p>Known GATT service UUIDs.</p> |
| </td> |
| </tr> |
| <tr id="LeBondData.irk"> |
| <td><h3 id="LeBondData.irk" class="add-link hide-from-toc">3</h3></td> |
| <td><code>irk</code></td> |
| <td> |
| <code><a class='link' href='#PeerKey'>PeerKey</a></code> |
| </td> |
| <td><p>Identity Resolving RemoteKey used to generate and resolve random addresses.</p> |
| </td> |
| </tr> |
| <tr id="LeBondData.csrk"> |
| <td><h3 id="LeBondData.csrk" class="add-link hide-from-toc">4</h3></td> |
| <td><code>csrk</code></td> |
| <td> |
| <code><a class='link' href='#PeerKey'>PeerKey</a></code> |
| </td> |
| <td><p>Connection Signature Resolving RemoteKey used for data signing without encryption.</p> |
| </td> |
| </tr> |
| <tr id="LeBondData.peer_ltk"> |
| <td><h3 id="LeBondData.peer_ltk" class="add-link hide-from-toc">5</h3></td> |
| <td><code>peer_ltk</code></td> |
| <td> |
| <code><a class='link' href='#Ltk'>Ltk</a></code> |
| </td> |
| <td><p>LE long-term key used to encrypt a connection when the peer is in the LE Peripheral role.</p> |
| <p>In legacy pairing (<code>peer_ltk.security.secure_connections</code> is false), this key corresponds |
| to the key distributed by the peer. In Secure Connections pairing there is only one LTK and |
| <code>peer_ltk</code> is the same as <code>local_ltk</code>.</p> |
| </td> |
| </tr> |
| <tr id="LeBondData.local_ltk"> |
| <td><h3 id="LeBondData.local_ltk" class="add-link hide-from-toc">6</h3></td> |
| <td><code>local_ltk</code></td> |
| <td> |
| <code><a class='link' href='#Ltk'>Ltk</a></code> |
| </td> |
| <td><p>LE long-term key used to encrypt a connection when the peer is in the LE Central role.</p> |
| <p>In legacy pairing (<code>local_ltk.security.secure_connections</code> is false), this key corresponds |
| to the key distributed by the local device. In Secure Connections pairing there is only one |
| LTK and <code>local_ltk</code> is the same as <code>peer_ltk</code>.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PairingDelegate2StartRequestRequest [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#PairingDelegate2StartRequestRequest data-text="PairingDelegate2StartRequestRequest"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=300)* |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="PairingDelegate2StartRequestRequest.peer"> |
| <td><h3 id="PairingDelegate2StartRequestRequest.peer" class="add-link hide-from-toc">1</h3></td> |
| <td><code>peer</code></td> |
| <td> |
| <code><a class='link' href='#Peer'>Peer</a></code> |
| </td> |
| <td><p>Peer making the request.</p> |
| </td> |
| </tr> |
| <tr id="PairingDelegate2StartRequestRequest.info"> |
| <td><h3 id="PairingDelegate2StartRequestRequest.info" class="add-link hide-from-toc">2</h3></td> |
| <td><code>info</code></td> |
| <td> |
| <code><a class='link' href='#PairingProperties'>PairingProperties</a></code> |
| </td> |
| <td><p>Properties of the pairing.</p> |
| </td> |
| </tr> |
| <tr id="PairingDelegate2StartRequestRequest.request"> |
| <td><h3 id="PairingDelegate2StartRequestRequest.request" class="add-link hide-from-toc">3</h3></td> |
| <td><code>request</code></td> |
| <td> |
| <code><a class='link' href='#PairingRequest'>PairingRequest</a></code> |
| </td> |
| <td><p>Protocol used to complete the pairing process.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PairingOptions {#PairingOptions data-text="PairingOptions"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing_options.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing_options.fidl;l=28)* |
| <p>Parameters that give a caller more fine-grained control over the pairing process. All of the |
| fields of this table are optional and pairing can still succeed if none of them are set.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="PairingOptions.le_security_level"> |
| <td><h3 id="PairingOptions.le_security_level" class="add-link hide-from-toc">1</h3></td> |
| <td><code>le_security_level</code></td> |
| <td> |
| <code><a class='link' href='#PairingSecurityLevel'>PairingSecurityLevel</a></code> |
| </td> |
| <td><p>Only relevant for LE. If present, determines the Security Manager security level to pair |
| with. If not present, interpreted as PairingSecurityLevel.AUTHENTICATED.</p> |
| </td> |
| </tr> |
| <tr id="PairingOptions.bondable_mode"> |
| <td><h3 id="PairingOptions.bondable_mode" class="add-link hide-from-toc">2</h3></td> |
| <td><code>bondable_mode</code></td> |
| <td> |
| <code><a class='link' href='#BondableMode'>BondableMode</a></code> |
| </td> |
| <td><p>If transport is LOW_ENERGY or DUAL_MODE, whether the device should form a bond or not during |
| pairing. If not present, interpreted as bondable mode.</p> |
| <p>If transport is CLASSIC, this option must be absent or otherwise the value BONDABLE. |
| NON_BONDABLE mode is not currently supported for the CLASSIC transport</p> |
| </td> |
| </tr> |
| <tr id="PairingOptions.transport"> |
| <td><h3 id="PairingOptions.transport" class="add-link hide-from-toc">3</h3></td> |
| <td><code>transport</code></td> |
| <td> |
| <code><a class='link' href='#TechnologyType'>TechnologyType</a></code> |
| </td> |
| <td><p>If transport is LOW_ENERGY, indicate a desire to pair over the LE transport. |
| If transport is CLASSIC, indicate a desire to pair over the Br/Edr transport. |
| If transport is DUAL_MODE, indicate a desire to pair over both transports. |
| If not present, interpreted as TechnologyType.DUAL_MODE</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PairingRequestAcceptRequest {#PairingRequestAcceptRequest data-text="PairingRequestAcceptRequest"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=245)* |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="PairingRequestAcceptRequest.entered_passkey"> |
| <td><h3 id="PairingRequestAcceptRequest.entered_passkey" class="add-link hide-from-toc">1</h3></td> |
| <td><code>entered_passkey</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Peer {#Peer data-text="Peer"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/peer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/peer.fidl;l=19)* |
| <p>Represents a remote BR/EDR, LE, or dual-mode BR/EDR/LE peer.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="Peer.id"> |
| <td><h3 id="Peer.id" class="add-link hide-from-toc">1</h3></td> |
| <td><code>id</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a></code> |
| </td> |
| <td><p>Uniquely identifies this peer on the current system.</p> |
| <p>This field is always present.</p> |
| </td> |
| </tr> |
| <tr id="Peer.address"> |
| <td><h3 id="Peer.address" class="add-link hide-from-toc">2</h3></td> |
| <td><code>address</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Address'>Address</a></code> |
| </td> |
| <td><p>Bluetooth device address that identifies this peer. Clients |
| should display this field to the user when <code>name</code> is not available.</p> |
| <p>This field is always present.</p> |
| <p>NOTE: Clients should use the <code>identifier</code> field to keep track of peers instead of their |
| address.</p> |
| </td> |
| </tr> |
| <tr id="Peer.technology"> |
| <td><h3 id="Peer.technology" class="add-link hide-from-toc">3</h3></td> |
| <td><code>technology</code></td> |
| <td> |
| <code><a class='link' href='#TechnologyType'>TechnologyType</a></code> |
| </td> |
| <td><p>The Bluetooth technologies that are supported by this peer.</p> |
| <p>This field is always present.</p> |
| </td> |
| </tr> |
| <tr id="Peer.connected"> |
| <td><h3 id="Peer.connected" class="add-link hide-from-toc">4</h3></td> |
| <td><code>connected</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Whether or not a BR/EDR and/or LE connection exists to this peer.</p> |
| <p>This field is always present.</p> |
| </td> |
| </tr> |
| <tr id="Peer.bonded"> |
| <td><h3 id="Peer.bonded" class="add-link hide-from-toc">5</h3></td> |
| <td><code>bonded</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Whether or not this peer is bonded.</p> |
| <p>This field is always present.</p> |
| </td> |
| </tr> |
| <tr id="Peer.name"> |
| <td><h3 id="Peer.name" class="add-link hide-from-toc">6</h3></td> |
| <td><code>name</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#DeviceName'>DeviceName</a></code> |
| </td> |
| <td><p>The name of the peer, if known.</p> |
| </td> |
| </tr> |
| <tr id="Peer.appearance"> |
| <td><h3 id="Peer.appearance" class="add-link hide-from-toc">7</h3></td> |
| <td><code>appearance</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Appearance'>Appearance</a></code> |
| </td> |
| <td><p>The LE appearance property. Present if this peer supports LE and the |
| appearance information was obtained over advertising and/or GATT.</p> |
| </td> |
| </tr> |
| <tr id="Peer.device_class"> |
| <td><h3 id="Peer.device_class" class="add-link hide-from-toc">8</h3></td> |
| <td><code>device_class</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#DeviceClass'>DeviceClass</a></code> |
| </td> |
| <td><p>The class of device for this device, if known.</p> |
| </td> |
| </tr> |
| <tr id="Peer.rssi"> |
| <td><h3 id="Peer.rssi" class="add-link hide-from-toc">9</h3></td> |
| <td><code>rssi</code></td> |
| <td> |
| <code>int8</code> |
| </td> |
| <td><p>The most recently obtained advertising signal strength for this peer. Present if known.</p> |
| </td> |
| </tr> |
| <tr id="Peer.tx_power"> |
| <td><h3 id="Peer.tx_power" class="add-link hide-from-toc">10</h3></td> |
| <td><code>tx_power</code></td> |
| <td> |
| <code>int8</code> |
| </td> |
| <td><p>The most recently obtained transmission power for this peer. Present if known.</p> |
| </td> |
| </tr> |
| <tr id="Peer.services"> |
| <td><h3 id="Peer.services" class="add-link hide-from-toc">11</h3></td> |
| <td><code>services</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>>[65535]</code> |
| </td> |
| <td><p>The list of service UUIDs known to be available on this peer.</p> |
| <p>This is a legacy field that should not be depended on for new code.</p> |
| <p><b>DEPRECATED </b></p></td> |
| </tr> |
| <tr id="Peer.le_services"> |
| <td><h3 id="Peer.le_services" class="add-link hide-from-toc">12</h3></td> |
| <td><code>le_services</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>>[65535]</code> |
| </td> |
| <td><p>The list of service UUIDs known to be available on the LE transport.</p> |
| <p>Never present if technology is CLASSIC.</p> |
| </td> |
| </tr> |
| <tr id="Peer.bredr_services"> |
| <td><h3 id="Peer.bredr_services" class="add-link hide-from-toc">13</h3></td> |
| <td><code>bredr_services</code></td> |
| <td> |
| <code>vector<<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>>[65535]</code> |
| </td> |
| <td><p>The cached list of service UUIDs previously discovered on the BR/EDR transport. |
| Services are not removed if peer is disconnected if subsequent searches don't find them.</p> |
| <p>Never present if technology is LOW_ENERGY.</p> |
| <p>This is a legacy field that should not be depended on for new code.</p> |
| <p><b>DEPRECATED </b></p></td> |
| </tr> |
| </table> |
| |
| ### Settings {#Settings data-text="Settings"} |
| |
| |
| *Defined in [fuchsia.bluetooth.sys/configuration.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/configuration.fidl;l=9)* |
| <p>Represents the Bluetooth Host Subsystem parameters available for configuration. Each parameter |
| is set to a default upon Bluetooth system initialization. The default values for each parameter |
| can be found in //src/connectivity/bluetooth/core/bt-gap/config/default.js.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="Settings.le_privacy"> |
| <td><h3 id="Settings.le_privacy" class="add-link hide-from-toc">1</h3></td> |
| <td><code>le_privacy</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>If true then enable the LE Privacy feature, if false disable it. If not present, leaves the |
| current value unchanged. When enabled, all BLE procedures that broadcast the local device |
| address (active scanning, connection initiation, and advertising) use a Resolvable Private |
| Address type. When disabled, these procedures reveal the local public identity address |
| assigned to the controller.</p> |
| <p>Enabling this feature is highly recommended on products.</p> |
| </td> |
| </tr> |
| <tr id="Settings.le_background_scan"> |
| <td><h3 id="Settings.le_background_scan" class="add-link hide-from-toc">2</h3></td> |
| <td><code>le_background_scan</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>If true then enable LE background-scan feature, if false disable it. If not present, leaves |
| the current value unchanged. When enabled, the system maintains an on-going passive scan |
| and establishes connections to bonded peers that are in "Connectable" or "Directed |
| Connectable" mode.</p> |
| </td> |
| </tr> |
| <tr id="Settings.bredr_connectable_mode"> |
| <td><h3 id="Settings.bredr_connectable_mode" class="add-link hide-from-toc">3</h3></td> |
| <td><code>bredr_connectable_mode</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>If true then enable BR/EDR connectable mode, if false disable it. If not present, leaves |
| the current value unchanged. When enabled, bt-host devices are put into BR/EDR page scan |
| mode and accept connections.</p> |
| </td> |
| </tr> |
| <tr id="Settings.le_security_mode"> |
| <td><h3 id="Settings.le_security_mode" class="add-link hide-from-toc">4</h3></td> |
| <td><code>le_security_mode</code></td> |
| <td> |
| <code><a class='link' href='#LeSecurityMode'>LeSecurityMode</a></code> |
| </td> |
| <td><p>If present then sets the LE Security mode of the Host Subsystem, if not present leaves the |
| current value unchanged. See BT Core Spec v5.2 Vol. 3 Part C 10.2 for more details. If |
| present and set to Secure Connections Only mode, any active connections not meeting the |
| requirements of Secure Connections Only mode are disconnected.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **UNIONS** |
| |
| ### Access_Connect_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Access_Connect_Result data-text="Access_Connect_Result"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=130)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Access_Connect_Result.response"> |
| <td><h3 id="Access_Connect_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Access_Connect_Response'>Access_Connect_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Access_Connect_Result.err"> |
| <td><h3 id="Access_Connect_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#Error'>Error</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Access_Disconnect_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Access_Disconnect_Result data-text="Access_Disconnect_Result"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=140)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Access_Disconnect_Result.response"> |
| <td><h3 id="Access_Disconnect_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Access_Disconnect_Response'>Access_Disconnect_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Access_Disconnect_Result.err"> |
| <td><h3 id="Access_Disconnect_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#Error'>Error</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Access_Forget_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Access_Forget_Result data-text="Access_Forget_Result"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=172)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Access_Forget_Result.response"> |
| <td><h3 id="Access_Forget_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Access_Forget_Response'>Access_Forget_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Access_Forget_Result.err"> |
| <td><h3 id="Access_Forget_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#Error'>Error</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Access_MakeDiscoverable_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Access_MakeDiscoverable_Result data-text="Access_MakeDiscoverable_Result"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=92)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Access_MakeDiscoverable_Result.response"> |
| <td><h3 id="Access_MakeDiscoverable_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Access_MakeDiscoverable_Response'>Access_MakeDiscoverable_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Access_MakeDiscoverable_Result.err"> |
| <td><h3 id="Access_MakeDiscoverable_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#Error'>Error</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Access_Pair_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Access_Pair_Result data-text="Access_Pair_Result"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=163)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Access_Pair_Result.response"> |
| <td><h3 id="Access_Pair_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Access_Pair_Response'>Access_Pair_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Access_Pair_Result.err"> |
| <td><h3 id="Access_Pair_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#Error'>Error</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Access_StartDiscovery_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Access_StartDiscovery_Result data-text="Access_StartDiscovery_Result"} |
| *Defined in [fuchsia.bluetooth.sys/access.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/access.fidl;l=104)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Access_StartDiscovery_Result.response"> |
| <td><h3 id="Access_StartDiscovery_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Access_StartDiscovery_Response'>Access_StartDiscovery_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Access_StartDiscovery_Result.err"> |
| <td><h3 id="Access_StartDiscovery_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#Error'>Error</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Bootstrap_Commit_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Bootstrap_Commit_Result data-text="Bootstrap_Commit_Result"} |
| *Defined in [fuchsia.bluetooth.sys/bootstrap.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/bootstrap.fidl;l=37)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="Bootstrap_Commit_Result.response"> |
| <td><h3 id="Bootstrap_Commit_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#Bootstrap_Commit_Response'>Bootstrap_Commit_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="Bootstrap_Commit_Result.err"> |
| <td><h3 id="Bootstrap_Commit_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#BootstrapError'>BootstrapError</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### HostWatcher_SetActive_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#HostWatcher_SetActive_Result data-text="HostWatcher_SetActive_Result"} |
| *Defined in [fuchsia.bluetooth.sys/host_watcher.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/host_watcher.fidl;l=70)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="HostWatcher_SetActive_Result.response"> |
| <td><h3 id="HostWatcher_SetActive_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#HostWatcher_SetActive_Response'>HostWatcher_SetActive_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="HostWatcher_SetActive_Result.err"> |
| <td><h3 id="HostWatcher_SetActive_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### PairingProperties [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PairingProperties data-text="PairingProperties"} |
| *Defined in [fuchsia.bluetooth.sys/pairing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/pairing.fidl;l=211)* |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: HEAD</span></div> |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="PairingProperties.consent"> |
| <td><h3 id="PairingProperties.consent" class="add-link hide-from-toc">1</h3></td> |
| <td><code>consent</code></td> |
| <td> |
| <code><a class='link' href='#Consent'>Consent</a></code> |
| </td> |
| <td><p>The user is asked to accept or reject pairing. |
| This is the minimum method - even when both devices do not support |
| input or output, the delegate will be asked to confirm any pairing |
| not initiated with user intent.</p> |
| </td> |
| </tr> |
| <tr id="PairingProperties.passkey_display"> |
| <td><h3 id="PairingProperties.passkey_display" class="add-link hide-from-toc">2</h3></td> |
| <td><code>passkey_display</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>The user is shown a 6-digit numerical passkey on this device which they |
| must key in on the peer device. |
| The passkey to be displayed is provided.</p> |
| </td> |
| </tr> |
| <tr id="PairingProperties.passkey_confirmation"> |
| <td><h3 id="PairingProperties.passkey_confirmation" class="add-link hide-from-toc">3</h3></td> |
| <td><code>passkey_confirmation</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>The user is shown a 6-digit numerical passkey on this device which will |
| also be shown on the peer device. The user must compare the passkeys and |
| accept the pairing if the passkeys match. |
| The passkey to be displayed is provided.</p> |
| </td> |
| </tr> |
| <tr id="PairingProperties.passkey_entry"> |
| <td><h3 id="PairingProperties.passkey_entry" class="add-link hide-from-toc">4</h3></td> |
| <td><code>passkey_entry</code></td> |
| <td> |
| <code><a class='link' href='#PasskeyEntry'>PasskeyEntry</a></code> |
| </td> |
| <td><p>The user is asked to enter a 6-digit passkey on this device which is |
| communicated via the peer device.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| ## **CONSTANTS** |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr> |
| <tr id="MAX_PEER_SERVICES"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/peer.fidl;l=16">MAX_PEER_SERVICES</a></td> |
| <td> |
| <code>65535</code> |
| </td> |
| <td><code>uint16</code></td> |
| <td><p>Maximum number of discovered services for each transport. Currently set to the number of valid |
| 16-bit handles or PSMs used to access services.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ## **ALIASES** |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="LocalKey"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.bluetooth.sys/identity.fidl;l=29">LocalKey</a></td> |
| <td> |
| <code>fuchsia.bluetooth.sys/Key</code></td> |
| <td><p>Represents a locally generated key that is distributed across one or more bonds.</p> |
| </td> |
| </tr> |
| </table> |