Class: LIBUSB::IsochronousTransfer

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

Constant Summary

Constants inherited from Transfer

Transfer::TransferStatusToError

Instance Method Summary collapse

Methods inherited from Transfer

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

Constructor Details

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

Returns a new instance of IsochronousTransfer.



247
248
249
250
251
252
253
254
# File 'lib/libusb/transfer.rb', line 247

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



263
264
265
# File 'lib/libusb/transfer.rb', line 263

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

#num_packetsObject



256
257
258
# File 'lib/libusb/transfer.rb', line 256

def num_packets
  @transfer[:num_iso_packets]
end

#num_packets=(number) ⇒ Object



259
260
261
# File 'lib/libusb/transfer.rb', line 259

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.



269
270
271
272
273
274
275
# File 'lib/libusb/transfer.rb', line 269

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