blob: b596a8729bc147785fd58089f7ea4d6d164481e2 [file] [log] [blame]
// 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);
};