Class: LIBUSB::IsochronousTransfer

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

Constant Summary

Constant Summary

Constants inherited from Transfer

Transfer::TransferStatusToError

Instance Method Summary (collapse)

Methods inherited from Transfer

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

Constructor Details

- (IsochronousTransfer) initialize(num_packets, args = {})

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

- (Object) [](nr)



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

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

- (Object) num_packets



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

def num_packets
  @transfer[:num_iso_packets]
end

- (Object) num_packets=(number)



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

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

- (Object) packet_lengths=(len)

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