blob: 3febe55f87b0a832f9c509e6e7c7192cc65b3cba [file] [log] [blame]
// 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);
};