tools/record: linebreak the hid report descriptor every 16 bytes

New output:

 hid: [
    0x05, 0x0d, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x09, 0x42, 0x15, 0x00,
    0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x01, 0x81, 0x03, 0x75, 0x06, 0x09, 0x51,
    0x25, 0x3f, 0x81, 0x02, 0x26, 0xff, 0x00, 0x75, 0x08, 0x09, 0x48, 0x81, 0x02, 0x09, 0x49, 0x81,
    ...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2021-04-29 10:12:46 +10:00
parent 7da7cd216f
commit b38c6ca69f

View file

@ -1597,11 +1597,25 @@ print_hid_report_descriptor(struct record_device *dev)
while ((len = read(fd, buf, sizeof(buf))) > 0) {
for (int i = 0; i < len; i++) {
iprintf(dev->fp, I_NONE, "%s0x%02x", sep, buf[i]);
/* We can't have a trailing comma, so our line-break
* handling is awkward.
* For a linebreak: print the comma, break, indent,
* then just the hex code.
* For the other values: print the comma plus the
* hex code, unindented.
*/
if (i % 16 == 0) {
iprintf(dev->fp, I_NONE, "%s\n", sep);
iprintf(dev->fp, I_DEVICE, " ");
iprintf(dev->fp, I_NONE, "0x%02x", buf[i]);
} else {
iprintf(dev->fp, I_NONE, "%s0x%02x", sep, buf[i]);
}
sep = ", ";
}
}
iprintf(dev->fp, I_NONE, "]\n");
iprintf(dev->fp, I_NONE, "\n");
iprintf(dev->fp, I_DEVICE, "]\n");
close(fd);
}