blob: c9fa2e5af19313db9cab732c779d5ad27465ee9a [file] [log] [blame]
// 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.le;
using fuchsia.bluetooth as bt;
using zx;
/// Information obtained from advertising and scan response data broadcast by a peer.
table ScanData {
/// The radio transmit power level reported by an advertising and/or scannable peer.
///
/// NOTE: This field should NOT be confused with the "connection TX Power Level" of a peer that
/// is currently connected to the system obtained via the "Transmit Power reporting" feature.
1: int8 tx_power;
/// The appearance of the device.
2: bt.Appearance appearance;
/// Service UUIDs.
3: vector<bt.Uuid>:MAX service_uuids;
/// Service data entries.
4: vector<ServiceData>:MAX service_data;
/// Manufacturer-specific data entries.
5: vector<ManufacturerData>:MAX manufacturer_data;
/// String representing a URI to be advertised, as defined in [IETF STD 66](https://tools.ietf.org/html/std66).
/// Each entry should be a UTF-8 string including the scheme. For more information, see
/// https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for allowed schemes;
/// NOTE: Bluetooth advertising compresses schemas over the air to save space. See
/// https://www.bluetooth.com/specifications/assigned-numbers/uri-scheme-name-string-mapping.
6: vector<string:MAX_URI_LENGTH>:MAX uris;
};
/// Represents a Bluetooth Low Energy peer that may act in the broadcaster, peripheral, or central
/// role. The peer's role depends on whether it is obtained from the Central or Peripheral protocol.
table Peer {
/// Uniquely identifies this peer on the current system.
///
/// This field is always present.
1: bt.PeerId id;
/// Whether or not this peer is connectable. Non-connectable peers are typically in the LE
/// broadcaster role.
///
/// This field is always present.
2: bool connectable;
/// The last observed signal strength of this peer. This field is only present for a peer that
/// is broadcasting. The RSSI can be stale if the peer has not been advertising.
///
/// NOTE: This field should NOT be confused with the "connection RSSI" of a peer that is currently
/// connected to the system.
3: int8 rssi;
[Deprecated = "Use `data` instead"]
4: AdvertisingData advertising_data;
/// The name of this peer. The name is often obtained during a scan procedure and can get
/// updated during the name discovery procedure following a connection.
///
/// This field is present if the name is known.
5: bt.DeviceName name;
/// Information from advertising and scan response data broadcast by this peer. When present,
/// this contains the advertising data last received from the peer.
6: ScanData data;
/// Whether or not this peer is bonded.
///
/// This field is always present.
7: bool bonded;
/// The value of the system monotonic clock, measured at the time this peer
/// was last updated (e.g. due to reception of an advertisement).
///
/// This field is always present.
8: zx.time last_updated;
};
/// Protocol that represents the connection to a peer. This can be used to interact with GATT
/// services and establish L2CAP channels.
///
/// This lifetime of this capability is tied to that of the LE connection it represents. Closing the
/// channel results in a disconnection if no other clients hold a Connection to the same peer.
protocol Connection {
// TODO(fxbug.dev/1432): Support requesting a fuchsia.bluetooth.gatt/Client handle.
};