| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.bluetooth.control; |
| |
| using fuchsia.bluetooth; |
| |
| // Bluetooth controller and its associated host-subsystem state that is present |
| // on the current platform. |
| struct AdapterInfo { |
| // UUID that uniquely identifies this adapter on the current system. |
| string identifier; |
| |
| // The Bluetooth technologies that are supported by this adapter. |
| TechnologyType technology; |
| |
| // Public Bluetooth device address which can be displayed to the user. |
| string address; |
| |
| // The current adapter state. This field is only present when an AdapterInfo |
| // is obtained via the Control and ControlDelegate interfaces. If present, |
| // all optional members of |state| will also be present. |
| AdapterState? state; |
| }; |
| |
| // Contains static global information about a local Bluetooth adapter, |
| // including its current state. Each adapter instance represents a physical |
| struct AdapterState { |
| // The local name of the local adapter, visible to other devices when |
| // discoverable. |
| string? local_name; |
| |
| // Whether or not the local adapter is currently discoverable over BR/EDR and |
| // LE physical channels. |
| fuchsia.bluetooth.Bool? discoverable; |
| |
| // Whether or not device discovery is currently being performed. |
| fuchsia.bluetooth.Bool? discovering; |
| |
| // Service UUIDs of all local services that are published and available to |
| // other devices via this adapter. These services are usually registered |
| // using the GATT and the classic profile APIs. |
| vector<string>? local_service_uuids; |
| }; |
| |
| // Primary Bluetooth control service to access bluetooth |
| [Discoverable] |
| interface Control { |
| // Returns whether or not Bluetooth is currently available on the system. |
| 1: IsBluetoothAvailable() -> (bool available); |
| |
| // Registers a delegate to handle pairing requests. |
| // Indicate the capability type of the PairingDelegate using |in| and |out|. |
| // If your input/output capability is variable, call this function when it |
| // changes to update. |
| // Setting a pairing delegate closes the previously assigned pairing Delegate. |
| // |
| // To disable pairing, set |delegate| to null. |
| 3: SetPairingDelegate(PairingDelegate? delegate) -> (bool success); |
| |
| // Returns information about all local adapters that are known to the system. |
| 4: GetAdapters() -> (vector<AdapterInfo>? adapters); |
| |
| // Sets the local adapter with the given |identifier| to act as the backing |
| // adapter for all Bluetooth interfaces. |
| 5: SetActiveAdapter(string identifier) -> (fuchsia.bluetooth.Status status); |
| |
| // Returns information on the current active adapter, if it exists. |
| 6: GetActiveAdapterInfo() -> (AdapterInfo? @adapter); |
| |
| // If |discovery| is true, active discovery is requested. |
| // When requesting discovery, general discovery for BR/EDR and LE will be |
| // active and newly discovered devices will be reported via |
| // RemoteDeviceDelegate.OnDeviceUpdate(). |
| // |
| // Discovery may be active when not reqested. |
| // If an error occurs when starting discovery, it is reflected in |status|. |
| 8: RequestDiscovery(bool discovery) -> (fuchsia.bluetooth.Status status); |
| |
| // Retrieve the set of known remote devices. |
| // Note: These devices are not guaranteed to still be reachable. |
| 9: GetKnownRemoteDevices() -> (vector<RemoteDevice> devices); |
| |
| // Sets the public Bluetooth name for this device, or resets to the default |
| // name if |name| is not present. |
| 10: SetName(string? name) -> (fuchsia.bluetooth.Status status); |
| |
| // Set the discoverability of this device. |
| 11: SetDiscoverable(bool discoverable) -> (fuchsia.bluetooth.Status status); |
| |
| // Attempt to connect to the remote |device_id|. |
| 12: Connect(string device_id) -> (fuchsia.bluetooth.Status status); |
| |
| // Disconnect a previously-connected device. |
| // Note: This does not remove a device bond, see Control::Forget. |
| 13: Disconnect(string device_id) -> (fuchsia.bluetooth.Status status); |
| |
| // Forgets |device_id| completely, removing all bonding information. |
| // This will disconnect a device if it is connected. |
| 14: Forget(string device_id) -> (fuchsia.bluetooth.Status status); |
| |
| // Set IO Capabilities of the pairing delegate |
| // TODO(bwb): move this to an internal management interface. |
| // please do not use unless you are bt-mgr |
| 15: SetIOCapabilities(InputCapabilityType input, OutputCapabilityType output); |
| |
| // Events |
| |
| // Sent when the active adapter has been updated. If |active_adapter| is |
| // null, then no adapter is currently active. |
| 10100: -> OnActiveAdapterChanged(AdapterInfo? adapter); |
| |
| // Sent when an adapter has been updated. |
| 10101: -> OnAdapterUpdated(AdapterInfo adapter); |
| |
| // Sent when an adapter with the given |identifier| has been removed from |
| // the system. |
| 10102: -> OnAdapterRemoved(string identifier); |
| |
| // Sent when a Host Device is Updated |
| 10700: -> OnDeviceUpdated(RemoteDevice device); |
| |
| // Sent when a Host Device is removed |
| 10701: -> OnDeviceRemoved(string identifier); |
| }; |