def close
      self.open_count = open_count - 1
      if open_count <= 0
        HIDAPI.debug("open_count for device #{path} is #{open_count}") if open_count < 0
        if handle
          begin
            self.shutdown_thread = true
            transfer.cancel! rescue nil if transfer
            thread.join
          rescue =>e
            HIDAPI.debug "failed to kill read thread on device #{path}: #{e.inspect}"
          end
          begin
            handle.release_interface(interface)
          rescue =>e
            HIDAPI.debug "failed to release interface on device #{path}: #{e.inspect}"
          end
          begin
            handle.close
          rescue =>e
            HIDAPI.debug "failed to close device #{path}: #{e.inspect}"
          end
          HIDAPI.debug "closed device #{path}"
        end
        self.handle = nil
        mutex.synchronize { self.input_reports = [] }
        self.open_count = 0
      end
      self
    end
def close
      self.open_count = open_count - 1
      if open_count <= 0
        HIDAPI.debug("open_count for device 
        if handle
          begin
            self.shutdown_thread = true
            transfer.cancel! rescue nil if transfer
            thread.join
          rescue =>e
            HIDAPI.debug "failed to kill read thread on device 
          end
          begin
            handle.release_interface(interface)
          rescue =>e
            HIDAPI.debug "failed to release interface on device 
          end
          begin
            handle.close
          rescue =>e
            HIDAPI.debug "failed to close device 
          end
          HIDAPI.debug "closed device 
        end
        self.handle = nil
        mutex.synchronize { self.input_reports = [] }
        self.open_count = 0
      end
      self
    end
def close self . open_count = open_count - 1 if open_count <= 0 HIDAPI . debug ( "open_count for device #{path} is #{open_count}" ) if open_count < 0 if handle begin self . shutdown_thread = true transfer . cancel! rescue nil if transfer thread . join rescue => e HIDAPI . debug "failed to kill read thread on device #{path}: #{e.inspect}" end begin handle . release_interface ( interface ) rescue => e HIDAPI . debug "failed to release interface on device #{path}: #{e.inspect}" end begin handle . close rescue => e HIDAPI . debug "failed to close device #{path}: #{e.inspect}" end HIDAPI . debug "closed device #{path}" end self . handle = nil mutex . synchronize { self . input_reports = [ ] } self . open_count = 0 end self end
Closes the device (if open).

 Returns the device.
Closes the device ( if open ) .