| // 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; | 
 |  | 
 | type TechnologyType = strict enum { | 
 |     LOW_ENERGY = 1; | 
 |     CLASSIC = 2; | 
 |     DUAL_MODE = 3; | 
 | }; | 
 |  | 
 | /// Maximum number of discovered services for each transport. Currently set to the number of valid | 
 | /// 16-bit handles or PSMs used to access services. | 
 | const MAX_PEER_SERVICES uint16 = 65535; | 
 |  | 
 | /// Represents a remote BR/EDR, LE, or dual-mode BR/EDR/LE peer. | 
 | type Peer = table { | 
 |     /// Uniquely identifies this peer on the current system. | 
 |     /// | 
 |     /// This field is always present. | 
 |     1: id bt.PeerId; | 
 |  | 
 |     /// Bluetooth device address that identifies this peer. Clients | 
 |     /// should display this field to the user when `name` is not available. | 
 |     /// | 
 |     /// This field is always present. | 
 |     /// | 
 |     /// NOTE: Clients should use the `identifier` field to keep track of peers instead of their | 
 |     /// address. | 
 |     2: address bt.Address; | 
 |  | 
 |     /// The Bluetooth technologies that are supported by this peer. | 
 |     /// | 
 |     /// This field is always present. | 
 |     3: technology TechnologyType; | 
 |  | 
 |     /// Whether or not a BR/EDR and/or LE connection exists to this peer. | 
 |     /// | 
 |     /// This field is always present. | 
 |     4: connected bool; | 
 |  | 
 |     /// Whether or not this peer is bonded. | 
 |     /// | 
 |     /// This field is always present. | 
 |     5: bonded bool; | 
 |  | 
 |     /// The name of the peer, if known. | 
 |     6: name bt.DeviceName; | 
 |  | 
 |     /// The LE appearance property. Present if this peer supports LE and the | 
 |     /// appearance information was obtained over advertising and/or GATT. | 
 |     7: appearance bt.Appearance; | 
 |  | 
 |     /// The class of device for this device, if known. | 
 |     8: device_class bt.DeviceClass; | 
 |  | 
 |     /// The most recently obtained advertising signal strength for this peer. Present if known. | 
 |     9: rssi int8; | 
 |  | 
 |     /// The most recently obtained transmission power for this peer. Present if known. | 
 |    10: tx_power int8; | 
 |  | 
 |     /// The list of service UUIDs known to be available on this peer. | 
 |     /// | 
 |     /// This is a legacy field that should not be depended on for new code. | 
 |     @deprecated | 
 |    11: services vector<bt.Uuid>:MAX_PEER_SERVICES; | 
 |  | 
 |     /// The list of service UUIDs known to be available on the LE transport. | 
 |     /// | 
 |     /// Never present if technology is CLASSIC. | 
 |    12: le_services vector<bt.Uuid>:MAX_PEER_SERVICES; | 
 |  | 
 |     /// The cached list of service UUIDs previously discovered on the BR/EDR transport. | 
 |     /// Services are not removed if peer is disconnected if subsequent searches don't find them. | 
 |     /// | 
 |     /// Never present if technology is LOW_ENERGY. | 
 |     /// | 
 |     /// This is a legacy field that should not be depended on for new code. | 
 |     @deprecated | 
 |    13: bredr_services vector<bt.Uuid>:MAX_PEER_SERVICES; | 
 | }; |