Class: LIBUSB::IsochronousTransfer

Inherits:
Transfer
  • Object
show all
Defined in:
lib/libusb/transfer.rb

Constant Summary

Constants inherited from Transfer

Transfer::TransferStatusToError

Instance Attribute Summary

Attributes inherited from Transfer

#allow_device_memory

Instance Method Summary collapse

Methods inherited from Transfer

#actual_buffer, #actual_length, #alloc_buffer, #buffer, #buffer=, #callback=, #cancel!, #dev_handle=, #endpoint=, #free_buffer, #memory_type, #status, #submit!, #submit_and_wait, #submit_and_wait!, #timeout=

Constructor Details

#initialize(num_packets, args = {}) ⇒ IsochronousTransfer

Returns a new instance of IsochronousTransfer.



342
343
344
345
346
347
348
349
# File 'lib/libusb/transfer.rb', line 342

def initialize(num_packets, args={})
  @ptr = Call.libusb_alloc_transfer(num_packets)
  @transfer = Call::Transfer.new @ptr
  @transfer[:type] = TRANSFER_TYPE_ISOCHRONOUS
  @transfer[:timeout] = 1000
  @transfer[:num_iso_packets] = num_packets
  super(args)
end

Instance Method Details

#[](nr) ⇒ Object



358
359
360
# File 'lib/libusb/transfer.rb', line 358

def [](nr)
  IsoPacket.new( @ptr + Call::Transfer.size + nr*Call::IsoPacketDescriptor.size, nr)
end

#num_packetsObject



351
352
353
# File 'lib/libusb/transfer.rb', line 351

def num_packets
  @transfer[:num_iso_packets]
end

#num_packets=(number) ⇒ Object



354
355
356
# File 'lib/libusb/transfer.rb', line 354

def num_packets=(number)
  @transfer[:num_iso_packets] = number
end

#packet_lengths=(len) ⇒ Object

Convenience function to set the length of all packets in an isochronous transfer, based on #num_packets.



364
365
366
367
368
369
370
# File 'lib/libusb/transfer.rb', line 364

def packet_lengths=(len)
  ptr = @ptr + Call::Transfer.size
  num_packets.times do
    ptr.write_uint(len)
    ptr += Call::IsoPacketDescriptor.size
  end
end