code: def iterISO(self):
          
          transfer_p = self.__transfer
          transfer = transfer_p.contents
          # pylint: disable=undefined-variable
          if transfer.type != TRANSFER_TYPE_ISOCHRONOUS:
              # pylint: enable=undefined-variable
              raise TypeError(
                  'This method cannot be called on non-iso transfers.'
              )
          buffer_position = transfer.buffer
          for iso_transfer in libusb1.get_iso_packet_list(transfer_p):
              yield (
                  iso_transfer.status,
                  libusb1.buffer_at(buffer_position, iso_transfer.actual_length),
              )
              buffer_position += iso_transfer.length
docs: Generator yielding (status, buffer) for each isochornous transfer.
          buffer is truncated to actual_length.
          This is more efficient than calling both getISOBufferList and
          getISOSetupList when receiving data.
          Should not be called on a submitted transfer.