Re: [PATCH] HID: Add Support for Setting and Getting Feature Reports from hidraw

From: Alan Ott
Date: Tue Jun 08 2010 - 09:43:12 EST


On 06/08/2010 02:32 AM, Antonio Ospite wrote:
On Mon, 7 Jun 2010 23:51:48 -0400
Alan Ott<alan@xxxxxxxxxxx> wrote:

Per the HID Specification, Feature reports must be sent and received on
the Configuration endpoint (EP 0) through the Set_Report/Get_Report
interfaces. This patch adds two ioctls to hidraw to set and get feature
reports to and from the device. Modifications were made to hidraw and
usbhid.

New hidraw ioctls:
HIDIOCSFEATURE - Perform a Set_Report transfer of a Feature report.
HIDIOCGFEATURE - Perform a Get_Report transfer of a Feature report.

Signed-off-by: Alan Ott<alan@xxxxxxxxxxx>
---
Thanks Alan, I am going to test this quite soon.

TBH, when I was thinking about how to extend hidraw I thought we could
have added a new report_type field to struct hidraw_report_descriptor,
in order to re-use the HIDIOCGRDESC ioctl handler itself, adding then a
HIDIOCSRDESC for setting the report. This looked cleaner to my eyes,
Thanks for the feedback, Antonio. The HIDIOCGRDESC ioctl copies the existing descriptor from the hid_device structure. Since it does not initiate a Get_Report transfer, I'm not sure how much re-use there could have been using that method. In my estimation, a Set_Report/Get_Report was more similar to the call to write().

but I didn't actually implement this, so I don't know if it was
feasible, for instance one problem I didn't investigate further was
about the default value of the aforementioned report_type field in
order to keep the current behavior of HIDIOCGRDESC.
I'm not sure what you mean here, as the report_type field is not part of hidraw_report_descriptor.

Thanks for testing my patch. Please let me know if you have problems with it.

Alan.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/