static size_t getUsbHidReportSize (const GioHidReportItemsData *items, unsigned char report) { size_t size; if (usbHidGetReportSize(items->address, items->size, report, &size)) return size; errno = ENOSYS; return 0; }
static void getHidReportSizes (const ReportEntry *table) { unsigned char *items; ssize_t length = usbHidGetItems(usb->device, usb->definition.interface, 0, &items, HT_HID_REPORT_TIMEOUT); if (items) { const ReportEntry *report = table; while (report->number) { usbHidGetReportSize(items, length, report->number, report->size); report += 1; } free(items); } }