// 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.hidctl;

const uint32 MAX_RPT_DESC_LEN = 8196;

struct HidCtlConfig {
    /// The device number. This is used in print statements to identify the device. Can be set to
    /// any value.
    uint8 dev_num;
    /// If this is set to true, the hid driver will force the device to use either the boot mouse or
    /// boot keyboard report descriptor.
    bool boot_device;
    /// This sets the device class of the HID device. A list of device classes can be found in
    /// hidbus.banjo in the HidDeviceClass enum.
    uint8 dev_class;
};

/// Interface for creating a fake HID device.
///
/// The device is controlled through a socket that can Read/Write HID reports. When the socket
/// is closed the device will remove itself from the system.
[Layout = "Simple"]
protocol Device {
    /// Create a fake HID device with a given report descriptor. Returns a
    /// socket that can Read/Write HID reports.
    MakeHidDevice(HidCtlConfig config, vector<uint8>:MAX_RPT_DESC_LEN rpt_desc) -> (handle<socket> report_socket);
};
