| // 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.input.report; |
| |
| using zx; |
| |
| const uint32 MAX_DEVICE_REPORT_COUNT = 50; |
| |
| /// An `InputDevice` driver represents a single physical input device. |
| /// The InputDevice maintains an internal FIFO of `MAX_DEVICE_REPORT_COUNT` |
| /// reports for each client that connects. Reports are removed from the FIFO |
| /// once they are read by the client. If the FIFO is full, it will drop the |
| /// oldest report to make room for an incoming report. |
| protocol InputDevice { |
| /// Receive an event that will be signalled when there are reports in the |
| /// Device's report FIFO. When there are events in the FIFO, `event` will have |
| /// `DEV_STATE_READABLE` triggered. When the client has read all of the events, |
| /// `DEV_STATE_READABLE` will be cleared. |
| GetReportsEvent() -> (zx.status status, handle<event> event); |
| |
| /// Get all of the reports that have been seen since the last time this method was called. |
| /// If this returns 0 reports, please wait on the report event. |
| GetReports() -> (vector<InputReport>:MAX_DEVICE_REPORT_COUNT reports); |
| |
| /// Gets the device descriptor for this device. |
| GetDescriptor() -> (DeviceDescriptor descriptor); |
| |
| /// Send a single output report to the device. This will throw an error |
| /// if the output report does not follow the OutputDescriptor. |
| SendOutputReport(OutputReport report) -> () error zx.status; |
| }; |