blob: 18a930e9b31e87da490528a383d97f28fe2e80b3 [file] [log] [blame]
// 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.
@available(added=7)
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.
type Role = strict enum {
/// 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
closed 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.
strict SetRole(struct {
role Role;
}) -> ();
};