|  | // Copyright 2018 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 ddk.protocol.bt_hci; | 
|  |  | 
|  | using zx; | 
|  |  | 
|  | [Layout="ddk-protocol", DefaultProtocol] | 
|  | interface BtHci { | 
|  | /// Open the two-way HCI command channel for sending HCI commands and | 
|  | /// receiving event packets.  Returns ZX_ERR_ALREADY_BOUND if the channel | 
|  | /// is already open. | 
|  | 1: OpenCommandChannel() -> (zx.status s, handle<channel> channel); | 
|  | /// Open the two-way HCI ACL data channel. | 
|  | /// Returns ZX_ERR_ALREADY_BOUND if the channel is already open. | 
|  | 2: OpenAclDataChannel() -> (zx.status s, handle<channel> channel); | 
|  | /// Open an output-only channel for monitoring HCI traffic. | 
|  | /// The format of each message is: [1-octet flags] [n-octet payload] | 
|  | /// The flags octet is a bitfield with the following values defined: | 
|  | ///  - 0x00: The payload represents a command packet sent from the host to the | 
|  | ///          controller. | 
|  | ///  - 0x01: The payload represents an event packet sent by the controller. | 
|  | /// Returns ZX_ERR_ALREADY_BOUND if the channel is already open. | 
|  | 3: OpenSnoopChannel() -> (zx.status s, handle<channel> channel); | 
|  | }; |