blob: 62507c7aba3d4f98eaf936063fa474780650f8fb [file] [log] [blame] [edit]
// Copyright 2019 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;
using fuchsia.bluetooth as bt;
using zx;
/// Information about a Bluetooth controller and its associated host-subsystem state.
type HostInfo = table {
/// Uniquely identifies a host on the current system.
///
/// This field is always present.
1: id bt.HostId;
/// The Bluetooth technologies that are supported by this adapter.
///
/// This field is always present.
2: technology TechnologyType;
/// The identity address - this is always the Public address of the host.
///
/// # Deprecation
/// The `addresses` field provides more information about the host.
///
/// This field is always present.
@available(deprecated=11, removed=12, note="Removed in 12, use HostInfo.addresses instead")
3: address bt.Address;
/// Indicates whether or not this is the active host. The system has one active host which
/// handles all Bluetooth procedures.
4: active bool;
/// The local name of this host. This is the name that is visible to other devices when this
/// host is in the discoverable mode.
5: local_name bt.DeviceName;
/// Whether or not the local adapter is currently discoverable over BR/EDR and
/// LE physical channels.
6: discoverable bool;
/// Whether or not device discovery is currently being performed.
7: discovering bool;
/// The addresses (LE and/or BR/EDR) associated with the host.
///
/// The Public address is always reported first.
///
/// This field is always present.
@available(added=11)
8: addresses vector<bt.Address>:MAX;
};
/// Protocol used to observe and manage the Bluetooth controllers on the system.
@discoverable(server="platform")
closed protocol HostWatcher {
/// 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.
strict Watch() -> (struct {
hosts vector<HostInfo>:MAX;
});
/// Designates the host with the given `id` 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.
///
/// * error This can fail if a host with `id` was not found.
strict SetActive(struct {
id bt.HostId;
}) -> () error zx.Status;
};