code: 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
docs: 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.