| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
This patch changes the Get_Report handler in Nitrokey to extract the
command data from the buffer sent with the Set_Report request, to
execute a command based on this data and to write appropriate return
data back to the device.
|
|
|
|
|
|
|
|
|
| |
This patch adds support for Get_Report and Set_Report requests to
HidClass. We parse the request metadata and the delegate the request
handling to the HidDevice.
Our HidDevice implementation, Nitrokey, stores the data sent with
Set_Report requests. The Get_Report handling is not implemented yet.
|
|
|
|
|
|
|
|
|
|
|
| |
HID implementations must provide a HID and a Report descriptor. This
patch adds these descriptors. The Report descriptor is copied from the
Nitrokey Pro.
As the control_in implementation in usb-device only handles
GET_DESCRIPTOR requests on the device level, we have to change the
control_in method in HidClass to handle GET_DESCRIPTOR on interface
level (required for the Report descriptor).
|
|
|
|
|
|
|
|
|
| |
The HID USB class needs device-specific information – currently, the
subclass and the protocol of the device, but also the report descriptors
and request handlers once we support these functions. Therefore, this
patch introduces the HidDevice trait that provides this data. It also
adds a Nitrokey struct that implements this trait for the Nitrokey Pro
device.
|
|
|
|
|
|
|
| |
The HID standard requires an interrupt_in endpoint that can be used to
send unrequested data from the device to the driver. This patch adds
the interrupt_in endpoint, although there is no code that will ever
write to it.
|
|
|
|
|
|
|
|
| |
We need several enums that map to a u8 value. This patch adds the
enum_u8 macro that automatically derives the From and TryFrom macros for
an enum to make these conversions easier.
As TryFrom is not stable yet, we add our own TryFrom trait.
|
|
|
|
|
|
|
|
| |
This patch adds the usb-device and stm32f103xx-usb crates that provide a
USB stack. It introduces the HidClass struct, a basic implementation of
the Human Interface Device (HID) USB class. Devices with that class are
recognized as HID devices with the specified vendor and product ID, but
do not provide the endpoints required for interaction.
|
|
|