lib/ftdi.rb
def usb_open_desc_index(vendor, product, description, serial, index)
      raise ArgumentError.new('vendor should be Fixnum')  unless vendor.kind_of?(Fixnum)
      raise ArgumentError.new('product should be Fixnum')  unless product.kind_of?(Fixnum)
      raise ArgumentError.new('index should be Fixnum')  unless index.kind_of?(Fixnum)
      raise ArgumentError.new('index should be greater than or equal to zero')  if index < 0
      check_result(Ftdi.ftdi_usb_open_desc_index(ctx, vendor, product, description, serial, index))
    end
def usb_open_desc_index(vendor, product, description, serial, index)
      raise ArgumentError.new('vendor should be Fixnum')  unless vendor.kind_of?(Fixnum)
      raise ArgumentError.new('product should be Fixnum')  unless product.kind_of?(Fixnum)
      raise ArgumentError.new('index should be Fixnum')  unless index.kind_of?(Fixnum)
      raise ArgumentError.new('index should be greater than or equal to zero')  if index < 0
      check_result(Ftdi.ftdi_usb_open_desc_index(ctx, vendor, product, description, serial, index))
    end
Opens the index-th device with a given vendor and product ids, description and serial.
 @param [Fixnum] vendor Vendor id.
 @param [Fixnum] product Product id.
 @param [String] description Description to search for. Use nil if not needed.
 @param [String] serial Serial to search for. Use nil if not needed.
 @param [Fixnum] index Number of matching device to open if there are more than one, starts with 0.
 @return [NilClass] nil
 @raise [StatusCodeError] libftdi reports error.
 @raise [ArgumentError] Bad arguments.