Hello Group,
As I am a HID beginner, please excuse myself if I do absolutely stupid things
and rather help me :)
I have built a LIBHID Hardware device and I'd like to send and receive reports
from it.
It generally works but its quite circular and definitely not the way as it
should be.
to send reports, I do:
ret = hid_set_output_report(handle[ind], locptr, loclen, temp, buflen);
...
ret = hid_interrupt_read(handle[ind], 0x01, temp, buflen, 1000); // sync write
even tough the second command returns an error- without it the information is
not transmitted
to receive reports, I do
ret = hid_interrupt_read(handle[ind], 0x01, temp, buflen, 1000); // sync read
...
ret = hid_get_input_report(handle[ind], locptr, loclen, temp, buflen);
without the "sync read" line, hid_get_input_report does not deliver up-to-date
data
I'd like to get rid of the the "sync" lines but It does not work without.
Can anybody tell me, whats wrong ?
===
My HID Slave device has only one Interrupt IN Endpoint. Is this correct ?This
is an template example from a HID Keyboard,
which can send(led indicators) and receive(key buttons) data.
This is the code which creates the usb config descriptor:
const hcc_u8 config_descriptor[] = {
USB_FILL_CFG_DESC(9+3+9+9+7, 1, 1, 4, CFGD_ATTR_SELF_PWR, 0),
USB_FILL_OTG_DESC(1, 1),
USB_FILL_IFC_DESC(CUSTOM_IFC_INDEX, 0, 1, 0x3, 0x0, 0x0, 5), /* HID,
none, none */
USB_FILL_HID_DESC(9, 0x0100, 0x0, 1, 0x22, sizeof(report_descriptor)),
USB_FILL_EP_DESC(0x1, 1, 0x3, 8, 0x20),
};
my report descriptor looks like
const hcc_u8 report_descriptor[39] = {
0x06, 0x02,0xff, /* USAGE_PAGE */
0x09, 0x01, /* USAGE */
0xa1, 0x01, /* COLLECTION */
0x06, 0x02,0xff, /* USAGE_PAGE */
0x09, 0x01, /* USAGE */
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x91, 0x02, // OUTPUT (Data,Var,Abs)
0x05, 0x02, /* USAGE_PAGE */
0x19, 0x01, /* USAGE_MINIMUM (Sensor 1) */
0x29, 0x08, /* USAGE_MAXIMUM (Sensor 8) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x25, 0xFF, /* LOGICAL_MAXIMUM (255) */
0x95, 0x08, /* REPORT_SIZE (8) */
0x75, 0x08, /* REPORT_COUNT (8) */
0x81, 0x02, /* INPUT (Data,Var,Rel) */
0xc0 /* END_COLLECTION */
};
Any Hints are appreciated
_______________________________________________
libhid-discuss mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss
http://libhid.alioth.debian.org/