// 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.hardware.bluetooth;

using zx;

const MAX_NAME_LENGTH uint32 = 32;

/// Used for spawning virtual Bluetooth devices.
closed protocol VirtualController {
    /// Creates a child device, and returns the name of the child created.
    strict CreateEmulator() -> (struct {
        name string:<MAX_NAME_LENGTH, optional>;
    }) error zx.Status;

    /// Creates a virtual Bluetooth serial device, speaking the BT HCI UART
    /// protocol on the provided handle.
    /// The zircon channel is closed in the event of an error.
    strict CreateLoopbackDevice(resource struct {
        channel zx.Handle:CHANNEL;
    });
};
