| // Copyright 2020 The Fuchsia Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 | library fuchsia.bluetooth.sys; | 
 |  | 
 | /// 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. | 
 | type Settings = table { | 
 |     /// 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. | 
 |     /// | 
 |     /// Enabling this feature is highly recommended on products. | 
 |     1: le_privacy bool; | 
 |  | 
 |     /// 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. | 
 |     2: le_background_scan bool; | 
 |  | 
 |     /// 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. | 
 |     3: bredr_connectable_mode bool; | 
 |  | 
 |     /// 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. | 
 |     4: le_security_mode LeSecurityMode; | 
 |  | 
 |     /// If present then sets the BR/EDR Security mode of the Host Subsystem, if not present leaves | 
 |     /// the current value unchanged. See BT Core Spec v5.2 Vol. 3 Part C 5.2.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. | 
 |     @available(added=14) | 
 |     5: bredr_security_mode BrEdrSecurityMode; | 
 | }; | 
 |  | 
 | /// Protocol to configure parameters and features for the core Bluetooth system. These settings | 
 | /// apply to all bt-host drivers known to the system. | 
 | /// | 
 | /// This protocol should only be exposed to highly privileged components (e.g. Bluetooth developer | 
 | /// tools in a testing/qualification environment). | 
 | @discoverable(server="platform") | 
 | closed protocol Configuration { | 
 |     /// Applies the fields present in `settings` to all bt-host drivers known to the system. Any | 
 |     /// fields not present in `settings` will remain unchanged. | 
 |     /// | 
 |     /// + request `settings` The new settings for active bt-host drivers - only modified settings | 
 |     ///   need be present. | 
 |     /// - response `result` A fully-populated table with the resultant settings after the new | 
 |     ///   settings are applied. | 
 |     strict Update(struct { | 
 |         settings Settings; | 
 |     }) -> (struct { | 
 |         result Settings; | 
 |     }); | 
 | }; |