| // Copyright 2020 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.a2dp; | 
 |  | 
 | /// Enum corresponding to the A2DP SRC/SNK roles as defined in the | 
 | /// A2DP v1.3.2 profile specification, section 2.2. | 
 | enum Role { | 
 |     /// Act as a source of digital audio streams, sending audio to peers. | 
 |     SOURCE = 1; | 
 |     /// Act as a sink of digital audio streams and play audio sent from peers. | 
 |     SINK = 2; | 
 | }; | 
 |  | 
 | /// A protocol for specifying which A2DP role this device should operate. | 
 | [Discoverable] | 
 | protocol AudioMode { | 
 |     /// Switch the device to act as the specified A2DP Role. If the device is already | 
 |     /// set to the requested role, calling this method is a no-op. | 
 |     /// | 
 |     /// When this method returns, a client can depend on the following: | 
 |     /// 1. If the role was switched, the previous profile has requested removal | 
 |     ///    from the hosts' SDP databases, and all L2CAP channels associated with | 
 |     ///    the previous profile have initiated or completed the process of closing. | 
 |     /// 2. The device is in the requested A2DP role. | 
 |     /// | 
 |     /// If the role cannot be set due to an internal error, the server will close | 
 |     /// the channel. | 
 |     SetRole(Role role) -> (); | 
 | }; |