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

using zx;

const MAX_RPT_DESC_LEN uint32 = 8196;

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

/// 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.
closed protocol Device {
    /// Create a fake HID device with a given report descriptor. Returns a
    /// socket that can Read/Write HID reports.
    strict MakeHidDevice(struct {
        config HidCtlConfig;
        rpt_desc vector<uint8>:MAX_RPT_DESC_LEN;
    }) -> (resource struct {
        report_socket zx.Handle:SOCKET;
    });
};
