// 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.avdtp.test;

/// Maximum number of peers that can be connected to a node.
/// (Core Spec 5.0, Vol 2, Part B, Section 1)
const MAX_PICONET_SIZE uint64 = 8;

/// Represents the return status of a [`fuchsia.bluetooth.avdtp.Peer`] method
type PeerError = strict enum : uint32 {
    /// Failure reason is not known
    UNKNOWN_FAILURE = 1;

    /// The peer is unable to perform the request
    PROTOCOL_ERROR = 2;
};
