blob: 0204e677a0d61eddc24c27229ba144a31f5413de [file] [log] [blame] [view]
<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 &quot;General Discoverable&quot; 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&lt;<a class='link' href='#ProcedureToken'>ProcedureToken</a>&gt;</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&lt;<a class='link' href='#ProcedureToken'>ProcedureToken</a>&gt;</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}
&lt;EMPTY&gt;
#### Response {#Access.WatchPeers_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>updated</code></td>
<td>
<code>vector&lt;<a class='link' href='#Peer'>Peer</a>&gt;</code>
</td>
</tr>
<tr>
<td><code>removed</code></td>
<td>
<code>vector&lt;<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#PeerId'>PeerId</a>&gt;</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&lt;<a class='link' href='#Identity'>Identity</a>&gt;</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}
&lt;EMPTY&gt;
#### 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=44)*
<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}
&lt;EMPTY&gt;
#### Response {#HostWatcher.Watch_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>hosts</code></td>
<td>
<code>vector&lt;<a class='link' href='#HostInfo'>HostInfo</a>&gt;</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>
### 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=114)*
<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>
## 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)*
&lt;EMPTY&gt;
### 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)*
&lt;EMPTY&gt;
### 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)*
&lt;EMPTY&gt;
### 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)*
&lt;EMPTY&gt;
### 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)*
&lt;EMPTY&gt;
### 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)*
&lt;EMPTY&gt;
### 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)*
&lt;EMPTY&gt;
### 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=58)*
&lt;EMPTY&gt;
### 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>
### 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=37)*
<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=54)*
<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=88)*
<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=63)*
<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&lt;<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>&gt;[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.</p>
<p>This field is always present.</p>
</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>
</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&lt;<a class='link' href='#BondingData'>BondingData</a>&gt;</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&lt;<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>&gt;[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>
### 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>
### 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&lt;<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>&gt;[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&lt;<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>&gt;[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&lt;<a class='link' href='../fuchsia.bluetooth/'>fuchsia.bluetooth</a>/<a class='link' href='../fuchsia.bluetooth/#Uuid'>Uuid</a>&gt;[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 &quot;Connectable&quot; or &quot;Directed
Connectable&quot; 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=58)*
<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>
## **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>
## **TYPE 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>