- Device address and Endpoint number are 3-digit and 2-digit (respectively)
- decimal numbers, with leading zeroes.
-- URB Status. In most cases, this field contains a number, sometimes negative,
- which represents a "status" field of the URB. This field makes no sense for
- submissions, but is present anyway to help scripts with parsing. When an
- error occurs, the field contains the error code. In case of a submission of
- a Control packet, this field contains a Setup Tag instead of an error code.
- It is easy to tell whether the Setup Tag is present because it is never a
- number. Thus if scripts find a number in this field, they proceed to read
- Data Length. If they find something else, like a letter, they read the setup
- packet before reading the Data Length.
+ Bus number, Device address, and Endpoint are decimal numbers, but they may
+ have leading zeros, for the sake of human readers.
+
+- URB Status word. This is either a letter, or several numbers separated
+ by colons: URB status, interval, start frame, and error count. Unlike the
+ "address" word, all fields save the status are optional. Interval is printed
+ only for interrupt and isochronous URBs. Start frame is printed only for
+ isochronous URBs. Error count is printed only for isochronous callback
+ events.
+
+ The status field is a decimal number, sometimes negative, which represents
+ a "status" field of the URB. This field makes no sense for submissions, but
+ is present anyway to help scripts with parsing. When an error occurs, the
+ field contains the error code.
+
+ In case of a submission of a Control packet, this field contains a Setup Tag
+ instead of an group of numbers. It is easy to tell whether the Setup Tag is
+ present because it is never a number. Thus if scripts find a set of numbers
+ in this word, they proceed to read Data Length (except for isochronous URBs).
+ If they find something else, like a letter, they read the setup packet before
+ reading the Data Length or isochronous descriptors.
+