def stop
      logger.debug "stopping Launchpad::Interaction##{object_id}"
      @active = false
      if @reader_thread
        # run (resume from sleep) and wait for @reader_thread to end
        @reader_thread.run if @reader_thread.alive?
        @reader_thread.join
        @reader_thread = nil
      end
    ensure
      @action_threads.list.each do |thread|
        begin
          thread.kill
          thread.join
        rescue Exception => e
          logger.error "error when killing action thread: #{e.inspect}"
        end
      end
      nil
    end
def stop
      logger.debug "stopping Launchpad::Interaction##{object_id}"
      @active = false
      if @reader_thread
        # run (resume from sleep) and wait for @reader_thread to end
        @reader_thread.run if @reader_thread.alive?
        @reader_thread.join
        @reader_thread = nil
      end
    ensure
      @action_threads.list.each do |thread|
        begin
          thread.kill
          thread.join
        rescue Exception => e
          logger.error "error when killing action thread: #{e.inspect}"
        end
      end
      nil
    end
Stops interacting with the launchpad.

 Errors raised:

 [Launchpad::NoInputAllowedError] when input is not enabled on the interaction's device
 [Launchpad::CommunicationError] when anything unexpected happens while communicating with the