tinderfridge 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/lib/tinderfridge.rb +19 -0
 - data/lib/tinderfridge/device.rb +71 -0
 - data/lib/tinderfridge/device_collection.rb +46 -0
 - data/lib/tinderfridge/device_info.rb +72 -0
 - data/lib/tinderfridge/device_info.txt +139 -0
 - data/lib/tinderfridge/ip_connection.rb +73 -0
 - data/lib/tinderfridge/tinkerforge.rb +17 -0
 - data/lib/tinderfridge/version.rb +13 -0
 - metadata +67 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 92034339759c82954498219a57e8070f6859b907e135a8d9a8df936abd58a01f
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a222affea211a17b0e6b9fd0087ddb53830f5e2a0de7a63258ebc566d5e6bd7d
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a450530444bcaeeed475e6476d12d7cfeedda25f02cb2619b4ccdd62951f9f16f9a1f03f874c6807fef6efddbe7fe3b06825c5ca120ca6828ef1e332844cceb3
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a7c84f3fd084e655a81f79d58a3bbf1173f31ca0b0fafd5a66041c3aefd689f5a04d18045599a645073ccae693b13a07c6af0f51d668eb0ab8bd0954dbf6f1e9
         
     | 
    
        data/lib/tinderfridge.rb
    ADDED
    
    | 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            if defined? Tinkerforge
         
     | 
| 
      
 2 
     | 
    
         
            +
              raise 'Tinkerforge was already loaded, so Tinderfridge can not reliably extend it!'
         
     | 
| 
      
 3 
     | 
    
         
            +
            end
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            %w(
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              version
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              ip_connection
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              device
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              tinkerforge
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              device_info
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              device_collection
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ).each { |m| require "tinderfridge/#{m}" }
         
     | 
| 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tinkerforge/ip_connection'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Tinkerforge
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Device
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                #----------------------------------------------------------------------#
         
     | 
| 
      
 7 
     | 
    
         
            +
                #                            Class Methods                             #
         
     | 
| 
      
 8 
     | 
    
         
            +
                #----------------------------------------------------------------------#
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  # Returns all currently defined classes that inherited from this class.
         
     | 
| 
      
 13 
     | 
    
         
            +
                  #
         
     | 
| 
      
 14 
     | 
    
         
            +
                  # With help from:
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # - https://stackoverflow.com/questions/2393697
         
     | 
| 
      
 16 
     | 
    
         
            +
                  def descendants
         
     | 
| 
      
 17 
     | 
    
         
            +
                    ObjectSpace.each_object(Class).select { |klass| klass < self }
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  # Returns a map of currently defined device classes.
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def class_map
         
     | 
| 
      
 22 
     | 
    
         
            +
                    descendants.map do |klass|
         
     | 
| 
      
 23 
     | 
    
         
            +
                      if klass.const_defined? 'DEVICE_IDENTIFIER'
         
     | 
| 
      
 24 
     | 
    
         
            +
                        [
         
     | 
| 
      
 25 
     | 
    
         
            +
                          klass.const_get('DEVICE_IDENTIFIER'),
         
     | 
| 
      
 26 
     | 
    
         
            +
                          klass.const_get('DEVICE_DISPLAY_NAME'),
         
     | 
| 
      
 27 
     | 
    
         
            +
                          klass,
         
     | 
| 
      
 28 
     | 
    
         
            +
                          File.basename(klass.instance_method('initialize').source_location.first, '.rb')
         
     | 
| 
      
 29 
     | 
    
         
            +
                        ]
         
     | 
| 
      
 30 
     | 
    
         
            +
                      else
         
     | 
| 
      
 31 
     | 
    
         
            +
                        nil
         
     | 
| 
      
 32 
     | 
    
         
            +
                      end
         
     | 
| 
      
 33 
     | 
    
         
            +
                    end.compact.sort_by { |i| i[0] }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                #----------------------------------------------------------------------#
         
     | 
| 
      
 39 
     | 
    
         
            +
                #                           Instance Methods                           #
         
     | 
| 
      
 40 
     | 
    
         
            +
                #----------------------------------------------------------------------#
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                # Returns the device's IPConnection object.
         
     | 
| 
      
 43 
     | 
    
         
            +
                attr_reader :ipcon
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                # Returns a programmer-friendly representation of the device.
         
     | 
| 
      
 46 
     | 
    
         
            +
                def inspect
         
     | 
| 
      
 47 
     | 
    
         
            +
                  "%s (%s@%s:%s)" % [self.class, @uid_string, ipcon.host, ipcon.port]
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                # Identifies a Tinkerforge device by blinking its status led.
         
     | 
| 
      
 51 
     | 
    
         
            +
                #
         
     | 
| 
      
 52 
     | 
    
         
            +
                # Supports recent devices. When invoked on older devices, does nothing.
         
     | 
| 
      
 53 
     | 
    
         
            +
                def identify(seconds=10)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  if (respond_to? 'get_status_led_config') and (respond_to? 'set_status_led_config')
         
     | 
| 
      
 55 
     | 
    
         
            +
                    seconds = seconds.to_i
         
     | 
| 
      
 56 
     | 
    
         
            +
                    state = get_status_led_config
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                    (seconds*2).times do |n|
         
     | 
| 
      
 59 
     | 
    
         
            +
                      set_status_led_config n.remainder(2)
         
     | 
| 
      
 60 
     | 
    
         
            +
                      sleep 0.5
         
     | 
| 
      
 61 
     | 
    
         
            +
                    end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                    set_status_led_config state
         
     | 
| 
      
 64 
     | 
    
         
            +
                    seconds
         
     | 
| 
      
 65 
     | 
    
         
            +
                  else
         
     | 
| 
      
 66 
     | 
    
         
            +
                    false
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Tinkerforge
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              class DeviceCollection < Hash
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                # Returns the temperatures as measured inside the microcontrollers of devices in the collection.
         
     | 
| 
      
 6 
     | 
    
         
            +
                #
         
     | 
| 
      
 7 
     | 
    
         
            +
                # Nil for devices that do not support the get_chip_temperature method.
         
     | 
| 
      
 8 
     | 
    
         
            +
                def get_chip_temperature
         
     | 
| 
      
 9 
     | 
    
         
            +
                  map { |k,d| [ k, d.respond_to?('get_chip_temperature' ) ? d.get_chip_temperature  : nil ] }.to_h
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                # Returns the error counts for devices in the collection.
         
     | 
| 
      
 13 
     | 
    
         
            +
                #
         
     | 
| 
      
 14 
     | 
    
         
            +
                # Nil for devices that do not support the get_spitfp_error_count method.
         
     | 
| 
      
 15 
     | 
    
         
            +
                def get_spitfp_error_count
         
     | 
| 
      
 16 
     | 
    
         
            +
                  map { |k,d| [ k, d.respond_to?('get_spitfp_error_count' ) ? d.get_spitfp_error_count  : nil ] }.to_h
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                # Returns the status LED configuration for devices in the collection.
         
     | 
| 
      
 20 
     | 
    
         
            +
                #
         
     | 
| 
      
 21 
     | 
    
         
            +
                # Nil for devices that do not support the get_status_led_config method.
         
     | 
| 
      
 22 
     | 
    
         
            +
                def get_status_led_config
         
     | 
| 
      
 23 
     | 
    
         
            +
                  map { |k,d| [ k, d.respond_to?('get_status_led_config') ? d.get_status_led_config : nil ] }.to_h
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                # Sets the status LED configuration for devices in the collection.
         
     | 
| 
      
 27 
     | 
    
         
            +
                #
         
     | 
| 
      
 28 
     | 
    
         
            +
                # Ignores devices that do not support the set_status_led_config method.
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # Argument can be an Integer (e.g. 0=off, 1=on), or a Hash (as returned by #get_status_led_config).
         
     | 
| 
      
 31 
     | 
    
         
            +
                def set_status_led_config(state)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  case state
         
     | 
| 
      
 33 
     | 
    
         
            +
                    when Integer
         
     | 
| 
      
 34 
     | 
    
         
            +
                      map { |k,d| d.respond_to?('set_status_led_config') ? d : nil}.compact.each { |d| d.set_status_led_config(state) }.size
         
     | 
| 
      
 35 
     | 
    
         
            +
                    when Hash
         
     | 
| 
      
 36 
     | 
    
         
            +
                      state.keys.select { |k| self[k].respond_to?('set_status_led_config') }.each do |k|
         
     | 
| 
      
 37 
     | 
    
         
            +
                        self[k].set_status_led_config(state[k])
         
     | 
| 
      
 38 
     | 
    
         
            +
                      end.size
         
     | 
| 
      
 39 
     | 
    
         
            +
                    else
         
     | 
| 
      
 40 
     | 
    
         
            +
                      raise ArgumentError, 'Unknown state'
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Tinkerforge
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                # Returns information about device types.
         
     | 
| 
      
 6 
     | 
    
         
            +
                #
         
     | 
| 
      
 7 
     | 
    
         
            +
                # Device information is returned as array:
         
     | 
| 
      
 8 
     | 
    
         
            +
                # - 0 : Device Identifier
         
     | 
| 
      
 9 
     | 
    
         
            +
                # - 1 : Device Display Name
         
     | 
| 
      
 10 
     | 
    
         
            +
                # - 2 : Associated class name and source file
         
     | 
| 
      
 11 
     | 
    
         
            +
                #
         
     | 
| 
      
 12 
     | 
    
         
            +
                # Optional selector argument can be:
         
     | 
| 
      
 13 
     | 
    
         
            +
                # - Device Identifier
         
     | 
| 
      
 14 
     | 
    
         
            +
                # - Device class
         
     | 
| 
      
 15 
     | 
    
         
            +
                # - Device instance
         
     | 
| 
      
 16 
     | 
    
         
            +
                # - Class name or Device Display Name (Regexp)
         
     | 
| 
      
 17 
     | 
    
         
            +
                # Selection by regular expression is case-insensitive by default, and returns an array of matches.
         
     | 
| 
      
 18 
     | 
    
         
            +
                #
         
     | 
| 
      
 19 
     | 
    
         
            +
                # @example Select by Device Identifier
         
     | 
| 
      
 20 
     | 
    
         
            +
                #  Tinkerforge.device_info 2103
         
     | 
| 
      
 21 
     | 
    
         
            +
                #
         
     | 
| 
      
 22 
     | 
    
         
            +
                # @example Select by class
         
     | 
| 
      
 23 
     | 
    
         
            +
                #  Tinkerforge.device_info Tinkerforge::BrickletLEDStripV2
         
     | 
| 
      
 24 
     | 
    
         
            +
                #
         
     | 
| 
      
 25 
     | 
    
         
            +
                # @example Select by class name and Device Display Name
         
     | 
| 
      
 26 
     | 
    
         
            +
                #  # All 'analog' devices
         
     | 
| 
      
 27 
     | 
    
         
            +
                #  Tinkerforge.device_info /analog/
         
     | 
| 
      
 28 
     | 
    
         
            +
                #
         
     | 
| 
      
 29 
     | 
    
         
            +
                #  # Relays and switches
         
     | 
| 
      
 30 
     | 
    
         
            +
                #  Tinkerforge.device_info /relay|switch/
         
     | 
| 
      
 31 
     | 
    
         
            +
                #
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @example No Selector
         
     | 
| 
      
 33 
     | 
    
         
            +
                #  # All devices
         
     | 
| 
      
 34 
     | 
    
         
            +
                #  Tinkerforge.device_info
         
     | 
| 
      
 35 
     | 
    
         
            +
                def device_info(selector=nil)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @@device_info ||= load_device_info
         
     | 
| 
      
 37 
     | 
    
         
            +
                  case selector
         
     | 
| 
      
 38 
     | 
    
         
            +
                    when NilClass
         
     | 
| 
      
 39 
     | 
    
         
            +
                      @@device_info
         
     | 
| 
      
 40 
     | 
    
         
            +
                    when Integer
         
     | 
| 
      
 41 
     | 
    
         
            +
                      @@device_info.select { |i| i[0] == selector }.first
         
     | 
| 
      
 42 
     | 
    
         
            +
                    when Class
         
     | 
| 
      
 43 
     | 
    
         
            +
                      klass = selector.to_s
         
     | 
| 
      
 44 
     | 
    
         
            +
                      @@device_info.select { |i| i[2][0] == klass }.first
         
     | 
| 
      
 45 
     | 
    
         
            +
                    when Regexp
         
     | 
| 
      
 46 
     | 
    
         
            +
                      r = Regexp.new selector.source, Regexp::IGNORECASE
         
     | 
| 
      
 47 
     | 
    
         
            +
                      @@device_info.select { |i| ( i[1] =~ r ) || ( i[2][0] =~ r ) }
         
     | 
| 
      
 48 
     | 
    
         
            +
                    else
         
     | 
| 
      
 49 
     | 
    
         
            +
                      if selector.class.ancestors.include? Tinkerforge::Device
         
     | 
| 
      
 50 
     | 
    
         
            +
                        klass = selector.class.to_s
         
     | 
| 
      
 51 
     | 
    
         
            +
                        @@device_info.select { |i| i[2][0] == klass }.first
         
     | 
| 
      
 52 
     | 
    
         
            +
                      else
         
     | 
| 
      
 53 
     | 
    
         
            +
                        raise ArgumentError, 'Unsupported selector'
         
     | 
| 
      
 54 
     | 
    
         
            +
                      end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                private
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                # Load device info from file.
         
     | 
| 
      
 61 
     | 
    
         
            +
                def load_device_info
         
     | 
| 
      
 62 
     | 
    
         
            +
                  File.readlines( File.join( File.dirname(__FILE__), 'device_info.txt' ) ).map do |l|
         
     | 
| 
      
 63 
     | 
    
         
            +
                    a = l.chomp.split("\t")
         
     | 
| 
      
 64 
     | 
    
         
            +
                    a[0]   = a[0].to_i
         
     | 
| 
      
 65 
     | 
    
         
            +
                    a[2,2] = a[2,2], nil
         
     | 
| 
      
 66 
     | 
    
         
            +
                    a.compact
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,139 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            11	DC Brick	Tinkerforge::BrickDC	brick_dc
         
     | 
| 
      
 2 
     | 
    
         
            +
            13	Master Brick	Tinkerforge::BrickMaster	brick_master
         
     | 
| 
      
 3 
     | 
    
         
            +
            14	Servo Brick	Tinkerforge::BrickServo	brick_servo
         
     | 
| 
      
 4 
     | 
    
         
            +
            15	Stepper Brick	Tinkerforge::BrickStepper	brick_stepper
         
     | 
| 
      
 5 
     | 
    
         
            +
            16	IMU Brick	Tinkerforge::BrickIMU	brick_imu
         
     | 
| 
      
 6 
     | 
    
         
            +
            17	RED Brick	Tinkerforge::BrickRED	brick_red
         
     | 
| 
      
 7 
     | 
    
         
            +
            18	IMU Brick 2.0	Tinkerforge::BrickIMUV2	brick_imu_v2
         
     | 
| 
      
 8 
     | 
    
         
            +
            19	Silent Stepper Brick	Tinkerforge::BrickSilentStepper	brick_silent_stepper
         
     | 
| 
      
 9 
     | 
    
         
            +
            21	Ambient Light Bricklet	Tinkerforge::BrickletAmbientLight	bricklet_ambient_light
         
     | 
| 
      
 10 
     | 
    
         
            +
            23	Current12 Bricklet	Tinkerforge::BrickletCurrent12	bricklet_current12
         
     | 
| 
      
 11 
     | 
    
         
            +
            24	Current25 Bricklet	Tinkerforge::BrickletCurrent25	bricklet_current25
         
     | 
| 
      
 12 
     | 
    
         
            +
            25	Distance IR Bricklet	Tinkerforge::BrickletDistanceIR	bricklet_distance_ir
         
     | 
| 
      
 13 
     | 
    
         
            +
            26	Dual Relay Bricklet	Tinkerforge::BrickletDualRelay	bricklet_dual_relay
         
     | 
| 
      
 14 
     | 
    
         
            +
            27	Humidity Bricklet	Tinkerforge::BrickletHumidity	bricklet_humidity
         
     | 
| 
      
 15 
     | 
    
         
            +
            28	IO-16 Bricklet	Tinkerforge::BrickletIO16	bricklet_io16
         
     | 
| 
      
 16 
     | 
    
         
            +
            29	IO-4 Bricklet	Tinkerforge::BrickletIO4	bricklet_io4
         
     | 
| 
      
 17 
     | 
    
         
            +
            111	HAT Brick	Tinkerforge::BrickHAT	brick_hat
         
     | 
| 
      
 18 
     | 
    
         
            +
            112	HAT Zero Brick	Tinkerforge::BrickHATZero	brick_hat_zero
         
     | 
| 
      
 19 
     | 
    
         
            +
            210	Joystick Bricklet	Tinkerforge::BrickletJoystick	bricklet_joystick
         
     | 
| 
      
 20 
     | 
    
         
            +
            211	LCD 16x2 Bricklet	Tinkerforge::BrickletLCD16x2	bricklet_lcd_16x2
         
     | 
| 
      
 21 
     | 
    
         
            +
            212	LCD 20x4 Bricklet	Tinkerforge::BrickletLCD20x4	bricklet_lcd_20x4
         
     | 
| 
      
 22 
     | 
    
         
            +
            213	Linear Poti Bricklet	Tinkerforge::BrickletLinearPoti	bricklet_linear_poti
         
     | 
| 
      
 23 
     | 
    
         
            +
            214	Piezo Buzzer Bricklet	Tinkerforge::BrickletPiezoBuzzer	bricklet_piezo_buzzer
         
     | 
| 
      
 24 
     | 
    
         
            +
            215	Rotary Poti Bricklet	Tinkerforge::BrickletRotaryPoti	bricklet_rotary_poti
         
     | 
| 
      
 25 
     | 
    
         
            +
            216	Temperature Bricklet	Tinkerforge::BrickletTemperature	bricklet_temperature
         
     | 
| 
      
 26 
     | 
    
         
            +
            217	Temperature IR Bricklet	Tinkerforge::BrickletTemperatureIR	bricklet_temperature_ir
         
     | 
| 
      
 27 
     | 
    
         
            +
            218	Voltage Bricklet	Tinkerforge::BrickletVoltage	bricklet_voltage
         
     | 
| 
      
 28 
     | 
    
         
            +
            219	Analog In Bricklet	Tinkerforge::BrickletAnalogIn	bricklet_analog_in
         
     | 
| 
      
 29 
     | 
    
         
            +
            220	Analog Out Bricklet	Tinkerforge::BrickletAnalogOut	bricklet_analog_out
         
     | 
| 
      
 30 
     | 
    
         
            +
            221	Barometer Bricklet	Tinkerforge::BrickletBarometer	bricklet_barometer
         
     | 
| 
      
 31 
     | 
    
         
            +
            222	GPS Bricklet	Tinkerforge::BrickletGPS	bricklet_gps
         
     | 
| 
      
 32 
     | 
    
         
            +
            223	Industrial Digital In 4 Bricklet	Tinkerforge::BrickletIndustrialDigitalIn4	bricklet_industrial_digital_in_4
         
     | 
| 
      
 33 
     | 
    
         
            +
            224	Industrial Digital Out 4 Bricklet	Tinkerforge::BrickletIndustrialDigitalOut4	bricklet_industrial_digital_out_4
         
     | 
| 
      
 34 
     | 
    
         
            +
            225	Industrial Quad Relay Bricklet	Tinkerforge::BrickletIndustrialQuadRelay	bricklet_industrial_quad_relay
         
     | 
| 
      
 35 
     | 
    
         
            +
            226	PTC Bricklet	Tinkerforge::BrickletPTC	bricklet_ptc
         
     | 
| 
      
 36 
     | 
    
         
            +
            227	Voltage/Current Bricklet	Tinkerforge::BrickletVoltageCurrent	bricklet_voltage_current
         
     | 
| 
      
 37 
     | 
    
         
            +
            228	Industrial Dual 0-20mA Bricklet	Tinkerforge::BrickletIndustrialDual020mA	bricklet_industrial_dual_0_20ma
         
     | 
| 
      
 38 
     | 
    
         
            +
            229	Distance US Bricklet	Tinkerforge::BrickletDistanceUS	bricklet_distance_us
         
     | 
| 
      
 39 
     | 
    
         
            +
            230	Dual Button Bricklet	Tinkerforge::BrickletDualButton	bricklet_dual_button
         
     | 
| 
      
 40 
     | 
    
         
            +
            231	LED Strip Bricklet	Tinkerforge::BrickletLEDStrip	bricklet_led_strip
         
     | 
| 
      
 41 
     | 
    
         
            +
            232	Moisture Bricklet	Tinkerforge::BrickletMoisture	bricklet_moisture
         
     | 
| 
      
 42 
     | 
    
         
            +
            233	Motion Detector Bricklet	Tinkerforge::BrickletMotionDetector	bricklet_motion_detector
         
     | 
| 
      
 43 
     | 
    
         
            +
            234	Multi Touch Bricklet	Tinkerforge::BrickletMultiTouch	bricklet_multi_touch
         
     | 
| 
      
 44 
     | 
    
         
            +
            235	Remote Switch Bricklet	Tinkerforge::BrickletRemoteSwitch	bricklet_remote_switch
         
     | 
| 
      
 45 
     | 
    
         
            +
            236	Rotary Encoder Bricklet	Tinkerforge::BrickletRotaryEncoder	bricklet_rotary_encoder
         
     | 
| 
      
 46 
     | 
    
         
            +
            237	Segment Display 4x7 Bricklet	Tinkerforge::BrickletSegmentDisplay4x7	bricklet_segment_display_4x7
         
     | 
| 
      
 47 
     | 
    
         
            +
            238	Sound Intensity Bricklet	Tinkerforge::BrickletSoundIntensity	bricklet_sound_intensity
         
     | 
| 
      
 48 
     | 
    
         
            +
            239	Tilt Bricklet	Tinkerforge::BrickletTilt	bricklet_tilt
         
     | 
| 
      
 49 
     | 
    
         
            +
            240	Hall Effect Bricklet	Tinkerforge::BrickletHallEffect	bricklet_hall_effect
         
     | 
| 
      
 50 
     | 
    
         
            +
            241	Line Bricklet	Tinkerforge::BrickletLine	bricklet_line
         
     | 
| 
      
 51 
     | 
    
         
            +
            242	Piezo Speaker Bricklet	Tinkerforge::BrickletPiezoSpeaker	bricklet_piezo_speaker
         
     | 
| 
      
 52 
     | 
    
         
            +
            243	Color Bricklet	Tinkerforge::BrickletColor	bricklet_color
         
     | 
| 
      
 53 
     | 
    
         
            +
            244	Solid State Relay Bricklet	Tinkerforge::BrickletSolidStateRelay	bricklet_solid_state_relay
         
     | 
| 
      
 54 
     | 
    
         
            +
            246	NFC/RFID Bricklet	Tinkerforge::BrickletNFCRFID	bricklet_nfc_rfid
         
     | 
| 
      
 55 
     | 
    
         
            +
            249	Industrial Dual Analog In Bricklet	Tinkerforge::BrickletIndustrialDualAnalogIn	bricklet_industrial_dual_analog_in
         
     | 
| 
      
 56 
     | 
    
         
            +
            250	Accelerometer Bricklet	Tinkerforge::BrickletAccelerometer	bricklet_accelerometer
         
     | 
| 
      
 57 
     | 
    
         
            +
            251	Analog In Bricklet 2.0	Tinkerforge::BrickletAnalogInV2	bricklet_analog_in_v2
         
     | 
| 
      
 58 
     | 
    
         
            +
            253	Load Cell Bricklet	Tinkerforge::BrickletLoadCell	bricklet_load_cell
         
     | 
| 
      
 59 
     | 
    
         
            +
            254	RS232 Bricklet	Tinkerforge::BrickletRS232	bricklet_rs232
         
     | 
| 
      
 60 
     | 
    
         
            +
            255	Laser Range Finder Bricklet	Tinkerforge::BrickletLaserRangeFinder	bricklet_laser_range_finder
         
     | 
| 
      
 61 
     | 
    
         
            +
            256	Analog Out Bricklet 2.0	Tinkerforge::BrickletAnalogOutV2	bricklet_analog_out_v2
         
     | 
| 
      
 62 
     | 
    
         
            +
            258	Industrial Analog Out Bricklet	Tinkerforge::BrickletIndustrialAnalogOut	bricklet_industrial_analog_out
         
     | 
| 
      
 63 
     | 
    
         
            +
            259	Ambient Light Bricklet 2.0	Tinkerforge::BrickletAmbientLightV2	bricklet_ambient_light_v2
         
     | 
| 
      
 64 
     | 
    
         
            +
            260	Dust Detector Bricklet	Tinkerforge::BrickletDustDetector	bricklet_dust_detector
         
     | 
| 
      
 65 
     | 
    
         
            +
            262	CO2 Bricklet	Tinkerforge::BrickletCO2	bricklet_co2
         
     | 
| 
      
 66 
     | 
    
         
            +
            263	OLED 128x64 Bricklet	Tinkerforge::BrickletOLED128x64	bricklet_oled_128x64
         
     | 
| 
      
 67 
     | 
    
         
            +
            264	OLED 64x48 Bricklet	Tinkerforge::BrickletOLED64x48	bricklet_oled_64x48
         
     | 
| 
      
 68 
     | 
    
         
            +
            265	UV Light Bricklet	Tinkerforge::BrickletUVLight	bricklet_uv_light
         
     | 
| 
      
 69 
     | 
    
         
            +
            266	Thermocouple Bricklet	Tinkerforge::BrickletThermocouple	bricklet_thermocouple
         
     | 
| 
      
 70 
     | 
    
         
            +
            267	Motorized Linear Poti Bricklet	Tinkerforge::BrickletMotorizedLinearPoti	bricklet_motorized_linear_poti
         
     | 
| 
      
 71 
     | 
    
         
            +
            268	Real-Time Clock Bricklet	Tinkerforge::BrickletRealTimeClock	bricklet_real_time_clock
         
     | 
| 
      
 72 
     | 
    
         
            +
            270	CAN Bricklet	Tinkerforge::BrickletCAN	bricklet_can
         
     | 
| 
      
 73 
     | 
    
         
            +
            271	RGB LED Bricklet	Tinkerforge::BrickletRGBLED	bricklet_rgb_led
         
     | 
| 
      
 74 
     | 
    
         
            +
            272	RGB LED Matrix Bricklet	Tinkerforge::BrickletRGBLEDMatrix	bricklet_rgb_led_matrix
         
     | 
| 
      
 75 
     | 
    
         
            +
            276	GPS Bricklet 2.0	Tinkerforge::BrickletGPSV2	bricklet_gps_v2
         
     | 
| 
      
 76 
     | 
    
         
            +
            277	RS485 Bricklet	Tinkerforge::BrickletRS485	bricklet_rs485
         
     | 
| 
      
 77 
     | 
    
         
            +
            278	Thermal Imaging Bricklet	Tinkerforge::BrickletThermalImaging	bricklet_thermal_imaging
         
     | 
| 
      
 78 
     | 
    
         
            +
            279	XMC1400 Breakout Bricklet	Tinkerforge::BrickletXMC1400Breakout	bricklet_xmc1400_breakout
         
     | 
| 
      
 79 
     | 
    
         
            +
            282	RGB LED Button Bricklet	Tinkerforge::BrickletRGBLEDButton	bricklet_rgb_led_button
         
     | 
| 
      
 80 
     | 
    
         
            +
            283	Humidity Bricklet 2.0	Tinkerforge::BrickletHumidityV2	bricklet_humidity_v2
         
     | 
| 
      
 81 
     | 
    
         
            +
            284	Industrial Dual Relay Bricklet	Tinkerforge::BrickletIndustrialDualRelay	bricklet_industrial_dual_relay
         
     | 
| 
      
 82 
     | 
    
         
            +
            285	DMX Bricklet	Tinkerforge::BrickletDMX	bricklet_dmx
         
     | 
| 
      
 83 
     | 
    
         
            +
            286	NFC Bricklet	Tinkerforge::BrickletNFC	bricklet_nfc
         
     | 
| 
      
 84 
     | 
    
         
            +
            288	Outdoor Weather Bricklet	Tinkerforge::BrickletOutdoorWeather	bricklet_outdoor_weather
         
     | 
| 
      
 85 
     | 
    
         
            +
            289	Remote Switch Bricklet 2.0	Tinkerforge::BrickletRemoteSwitchV2	bricklet_remote_switch_v2
         
     | 
| 
      
 86 
     | 
    
         
            +
            290	Sound Pressure Level Bricklet	Tinkerforge::BrickletSoundPressureLevel	bricklet_sound_pressure_level
         
     | 
| 
      
 87 
     | 
    
         
            +
            291	Temperature IR Bricklet 2.0	Tinkerforge::BrickletTemperatureIRV2	bricklet_temperature_ir_v2
         
     | 
| 
      
 88 
     | 
    
         
            +
            292	Motion Detector Bricklet 2.0	Tinkerforge::BrickletMotionDetectorV2	bricklet_motion_detector_v2
         
     | 
| 
      
 89 
     | 
    
         
            +
            293	Industrial Counter Bricklet	Tinkerforge::BrickletIndustrialCounter	bricklet_industrial_counter
         
     | 
| 
      
 90 
     | 
    
         
            +
            294	Rotary Encoder Bricklet 2.0	Tinkerforge::BrickletRotaryEncoderV2	bricklet_rotary_encoder_v2
         
     | 
| 
      
 91 
     | 
    
         
            +
            295	Analog In Bricklet 3.0	Tinkerforge::BrickletAnalogInV3	bricklet_analog_in_v3
         
     | 
| 
      
 92 
     | 
    
         
            +
            296	Solid State Relay Bricklet 2.0	Tinkerforge::BrickletSolidStateRelayV2	bricklet_solid_state_relay_v2
         
     | 
| 
      
 93 
     | 
    
         
            +
            297	Air Quality Bricklet	Tinkerforge::BrickletAirQuality	bricklet_air_quality
         
     | 
| 
      
 94 
     | 
    
         
            +
            298	LCD 128x64 Bricklet	Tinkerforge::BrickletLCD128x64	bricklet_lcd_128x64
         
     | 
| 
      
 95 
     | 
    
         
            +
            299	Distance US Bricklet 2.0	Tinkerforge::BrickletDistanceUSV2	bricklet_distance_us_v2
         
     | 
| 
      
 96 
     | 
    
         
            +
            2100	Industrial Digital In 4 Bricklet 2.0	Tinkerforge::BrickletIndustrialDigitalIn4V2	bricklet_industrial_digital_in_4_v2
         
     | 
| 
      
 97 
     | 
    
         
            +
            2101	PTC Bricklet 2.0	Tinkerforge::BrickletPTCV2	bricklet_ptc_v2
         
     | 
| 
      
 98 
     | 
    
         
            +
            2102	Industrial Quad Relay Bricklet 2.0	Tinkerforge::BrickletIndustrialQuadRelayV2	bricklet_industrial_quad_relay_v2
         
     | 
| 
      
 99 
     | 
    
         
            +
            2103	LED Strip Bricklet 2.0	Tinkerforge::BrickletLEDStripV2	bricklet_led_strip_v2
         
     | 
| 
      
 100 
     | 
    
         
            +
            2104	Load Cell Bricklet 2.0	Tinkerforge::BrickletLoadCellV2	bricklet_load_cell_v2
         
     | 
| 
      
 101 
     | 
    
         
            +
            2105	Voltage/Current Bricklet 2.0	Tinkerforge::BrickletVoltageCurrentV2	bricklet_voltage_current_v2
         
     | 
| 
      
 102 
     | 
    
         
            +
            2106	Real-Time Clock Bricklet 2.0	Tinkerforge::BrickletRealTimeClockV2	bricklet_real_time_clock_v2
         
     | 
| 
      
 103 
     | 
    
         
            +
            2107	CAN Bricklet 2.0	Tinkerforge::BrickletCANV2	bricklet_can_v2
         
     | 
| 
      
 104 
     | 
    
         
            +
            2108	RS232 Bricklet 2.0	Tinkerforge::BrickletRS232V2	bricklet_rs232_v2
         
     | 
| 
      
 105 
     | 
    
         
            +
            2109	Thermocouple Bricklet 2.0	Tinkerforge::BrickletThermocoupleV2	bricklet_thermocouple_v2
         
     | 
| 
      
 106 
     | 
    
         
            +
            2110	Particulate Matter Bricklet	Tinkerforge::BrickletParticulateMatter	bricklet_particulate_matter
         
     | 
| 
      
 107 
     | 
    
         
            +
            2111	IO-4 Bricklet 2.0	Tinkerforge::BrickletIO4V2	bricklet_io4_v2
         
     | 
| 
      
 108 
     | 
    
         
            +
            2112	OLED 128x64 Bricklet 2.0	Tinkerforge::BrickletOLED128x64V2	bricklet_oled_128x64_v2
         
     | 
| 
      
 109 
     | 
    
         
            +
            2113	Temperature Bricklet 2.0	Tinkerforge::BrickletTemperatureV2	bricklet_temperature_v2
         
     | 
| 
      
 110 
     | 
    
         
            +
            2114	IO-16 Bricklet 2.0	Tinkerforge::BrickletIO16V2	bricklet_io16_v2
         
     | 
| 
      
 111 
     | 
    
         
            +
            2115	Analog Out Bricklet 3.0	Tinkerforge::BrickletAnalogOutV3	bricklet_analog_out_v3
         
     | 
| 
      
 112 
     | 
    
         
            +
            2116	Industrial Analog Out Bricklet 2.0	Tinkerforge::BrickletIndustrialAnalogOutV2	bricklet_industrial_analog_out_v2
         
     | 
| 
      
 113 
     | 
    
         
            +
            2117	Barometer Bricklet 2.0	Tinkerforge::BrickletBarometerV2	bricklet_barometer_v2
         
     | 
| 
      
 114 
     | 
    
         
            +
            2118	UV Light Bricklet 2.0	Tinkerforge::BrickletUVLightV2	bricklet_uv_light_v2
         
     | 
| 
      
 115 
     | 
    
         
            +
            2119	Dual Button Bricklet 2.0	Tinkerforge::BrickletDualButtonV2	bricklet_dual_button_v2
         
     | 
| 
      
 116 
     | 
    
         
            +
            2120	Industrial Dual 0-20mA Bricklet 2.0	Tinkerforge::BrickletIndustrialDual020mAV2	bricklet_industrial_dual_0_20ma_v2
         
     | 
| 
      
 117 
     | 
    
         
            +
            2121	Industrial Dual Analog In Bricklet 2.0	Tinkerforge::BrickletIndustrialDualAnalogInV2	bricklet_industrial_dual_analog_in_v2
         
     | 
| 
      
 118 
     | 
    
         
            +
            2122	Isolator Bricklet	Tinkerforge::BrickletIsolator	bricklet_isolator
         
     | 
| 
      
 119 
     | 
    
         
            +
            2123	One Wire Bricklet	Tinkerforge::BrickletOneWire	bricklet_one_wire
         
     | 
| 
      
 120 
     | 
    
         
            +
            2124	Industrial Digital Out 4 Bricklet 2.0	Tinkerforge::BrickletIndustrialDigitalOut4V2	bricklet_industrial_digital_out_4_v2
         
     | 
| 
      
 121 
     | 
    
         
            +
            2125	Distance IR Bricklet 2.0	Tinkerforge::BrickletDistanceIRV2	bricklet_distance_ir_v2
         
     | 
| 
      
 122 
     | 
    
         
            +
            2127	RGB LED Bricklet 2.0	Tinkerforge::BrickletRGBLEDV2	bricklet_rgb_led_v2
         
     | 
| 
      
 123 
     | 
    
         
            +
            2128	Color Bricklet 2.0	Tinkerforge::BrickletColorV2	bricklet_color_v2
         
     | 
| 
      
 124 
     | 
    
         
            +
            2129	Multi Touch Bricklet 2.0	Tinkerforge::BrickletMultiTouchV2	bricklet_multi_touch_v2
         
     | 
| 
      
 125 
     | 
    
         
            +
            2130	Accelerometer Bricklet 2.0	Tinkerforge::BrickletAccelerometerV2	bricklet_accelerometer_v2
         
     | 
| 
      
 126 
     | 
    
         
            +
            2131	Ambient Light Bricklet 3.0	Tinkerforge::BrickletAmbientLightV3	bricklet_ambient_light_v3
         
     | 
| 
      
 127 
     | 
    
         
            +
            2132	Hall Effect Bricklet 2.0	Tinkerforge::BrickletHallEffectV2	bricklet_hall_effect_v2
         
     | 
| 
      
 128 
     | 
    
         
            +
            2137	Segment Display 4x7 Bricklet 2.0	Tinkerforge::BrickletSegmentDisplay4x7V2	bricklet_segment_display_4x7_v2
         
     | 
| 
      
 129 
     | 
    
         
            +
            2138	Joystick Bricklet 2.0	Tinkerforge::BrickletJoystickV2	bricklet_joystick_v2
         
     | 
| 
      
 130 
     | 
    
         
            +
            2139	Linear Poti Bricklet 2.0	Tinkerforge::BrickletLinearPotiV2	bricklet_linear_poti_v2
         
     | 
| 
      
 131 
     | 
    
         
            +
            2140	Rotary Poti Bricklet 2.0	Tinkerforge::BrickletRotaryPotiV2	bricklet_rotary_poti_v2
         
     | 
| 
      
 132 
     | 
    
         
            +
            2144	Laser Range Finder Bricklet 2.0	Tinkerforge::BrickletLaserRangeFinderV2	bricklet_laser_range_finder_v2
         
     | 
| 
      
 133 
     | 
    
         
            +
            2145	Piezo Speaker Bricklet 2.0	Tinkerforge::BrickletPiezoSpeakerV2	bricklet_piezo_speaker_v2
         
     | 
| 
      
 134 
     | 
    
         
            +
            2146	E-Paper 296x128 Bricklet	Tinkerforge::BrickletEPaper296x128	bricklet_e_paper_296x128
         
     | 
| 
      
 135 
     | 
    
         
            +
            2147	CO2 Bricklet 2.0	Tinkerforge::BrickletCO2V2	bricklet_co2_v2
         
     | 
| 
      
 136 
     | 
    
         
            +
            2152	Energy Monitor Bricklet	Tinkerforge::BrickletEnergyMonitor	bricklet_energy_monitor
         
     | 
| 
      
 137 
     | 
    
         
            +
            2153	Compass Bricklet	Tinkerforge::BrickletCompass	bricklet_compass
         
     | 
| 
      
 138 
     | 
    
         
            +
            2161	IMU Bricklet 3.0	Tinkerforge::BrickletIMUV3	bricklet_imu_v3
         
     | 
| 
      
 139 
     | 
    
         
            +
            2162	Industrial Dual AC Relay Bricklet	Tinkerforge::BrickletIndustrialDualACRelay	bricklet_industrial_dual_ac_relay
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tinkerforge/ip_connection'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Tinkerforge
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              class IPConnection
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                # Returns the host for the IP Connection object.
         
     | 
| 
      
 8 
     | 
    
         
            +
                attr_reader :host
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                # Returns the port for the IP Connection object.
         
     | 
| 
      
 11 
     | 
    
         
            +
                attr_reader :port
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                # Returns a programmer-friendly representation of the object.
         
     | 
| 
      
 14 
     | 
    
         
            +
                def inspect
         
     | 
| 
      
 15 
     | 
    
         
            +
                  "%s (%s:%s)" % [self.class, host, port]
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # Returns a Tinkerforge::DeviceCollection with devices discovered for this IP Connection.
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # Discovery may take a few seconds, but will return a Tinkerforge::DeviceCollection immediately.
         
     | 
| 
      
 21 
     | 
    
         
            +
                #
         
     | 
| 
      
 22 
     | 
    
         
            +
                # It is therefore a good idea to store the result in a variable.
         
     | 
| 
      
 23 
     | 
    
         
            +
                # This variable will be filled with devices as they are found. See examples.
         
     | 
| 
      
 24 
     | 
    
         
            +
                #
         
     | 
| 
      
 25 
     | 
    
         
            +
                # @example Using Tinkerforge.connect
         
     | 
| 
      
 26 
     | 
    
         
            +
                #  my_devices = Tinkerforge.connect.discover
         
     | 
| 
      
 27 
     | 
    
         
            +
                #
         
     | 
| 
      
 28 
     | 
    
         
            +
                # @example Classic
         
     | 
| 
      
 29 
     | 
    
         
            +
                #  ipcon = Tinkerforge::IPConnection.new
         
     | 
| 
      
 30 
     | 
    
         
            +
                #  ipcon.connect 'localhost', 4223
         
     | 
| 
      
 31 
     | 
    
         
            +
                #  my_devices = ipcon.discover
         
     | 
| 
      
 32 
     | 
    
         
            +
                def discover
         
     | 
| 
      
 33 
     | 
    
         
            +
                  list = Tinkerforge::DeviceCollection.new
         
     | 
| 
      
 34 
     | 
    
         
            +
                  self.register_callback(CALLBACK_ENUMERATE) do |*args|
         
     | 
| 
      
 35 
     | 
    
         
            +
                    case args[6]
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      when 0, 1  # Available or Connected
         
     | 
| 
      
 38 
     | 
    
         
            +
                        info = Tinkerforge.device_info args[5]
         
     | 
| 
      
 39 
     | 
    
         
            +
                        if info
         
     | 
| 
      
 40 
     | 
    
         
            +
                          require File.join('tinkerforge', info[2][1] )
         
     | 
| 
      
 41 
     | 
    
         
            +
                          list[args.first] = Tinkerforge.const_get( info[2][0] ).new args.first, self
         
     | 
| 
      
 42 
     | 
    
         
            +
                        else     # Device not in device_info
         
     | 
| 
      
 43 
     | 
    
         
            +
                          list[args.first] = nil
         
     | 
| 
      
 44 
     | 
    
         
            +
                        end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                      when 2     # Disconnected
         
     | 
| 
      
 47 
     | 
    
         
            +
                        list[args.first] = nil
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                      else
         
     | 
| 
      
 50 
     | 
    
         
            +
                        raise "Unknown Enumeration Type: #{args[6]}"
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
                  self.enumerate
         
     | 
| 
      
 55 
     | 
    
         
            +
                  list
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              # Creates an IP Connection object connected to the given host and port.
         
     | 
| 
      
 61 
     | 
    
         
            +
              #
         
     | 
| 
      
 62 
     | 
    
         
            +
              # If no host and port are specified, uses the TINKERFORGE_HOST and TINKERFORGE_PORT environment variables, when defined.
         
     | 
| 
      
 63 
     | 
    
         
            +
              # Otherwise defaults to 'localhost' and port 4223.
         
     | 
| 
      
 64 
     | 
    
         
            +
              def self.connect(host=nil, port=nil)
         
     | 
| 
      
 65 
     | 
    
         
            +
                ipcon = IPConnection.new
         
     | 
| 
      
 66 
     | 
    
         
            +
                ipcon.connect(
         
     | 
| 
      
 67 
     | 
    
         
            +
                  ( host || ENV['TINKERFORGE_HOST'] || 'localhost' ),
         
     | 
| 
      
 68 
     | 
    
         
            +
                  ( port || ENV['TINKERFORGE_PORT'] ||  4223       )
         
     | 
| 
      
 69 
     | 
    
         
            +
                )
         
     | 
| 
      
 70 
     | 
    
         
            +
                ipcon
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tinkerforge/ip_connection'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Tinkerforge
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              # Returns the directory where Tinkerforge bindings appear to be installed.
         
     | 
| 
      
 6 
     | 
    
         
            +
              def self.lib_dir
         
     | 
| 
      
 7 
     | 
    
         
            +
                File.dirname File.dirname Device.instance_method('uid').source_location.first
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              # Attempts to load all files that are part of Tinkerforge. Returns a list of files loaded.
         
     | 
| 
      
 11 
     | 
    
         
            +
              def self.require_everything
         
     | 
| 
      
 12 
     | 
    
         
            +
                Dir.glob(File.join lib_dir, 'tinkerforge', '*.rb').map do |file|
         
     | 
| 
      
 13 
     | 
    
         
            +
                  require(file) ? file : nil
         
     | 
| 
      
 14 
     | 
    
         
            +
                end.compact
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tinkerforge/version'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Tinkerforge
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              # Tinderfridge version.
         
     | 
| 
      
 6 
     | 
    
         
            +
              TINDERFRIDGE_VERSION = '0.1.0'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              # About Tinkerforge & Tinderfridge.
         
     | 
| 
      
 9 
     | 
    
         
            +
              def self.about
         
     | 
| 
      
 10 
     | 
    
         
            +
                "Tinkerforge #{VERSION} (with Tinderfridge #{TINDERFRIDGE_VERSION})"
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: tinderfridge
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - lllist.eu
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-12-09 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: tinkerforge
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 2.1.27
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 2.1.27
         
     | 
| 
      
 27 
     | 
    
         
            +
            description: 
         
     | 
| 
      
 28 
     | 
    
         
            +
            email: 
         
     | 
| 
      
 29 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 30 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 31 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 32 
     | 
    
         
            +
            files:
         
     | 
| 
      
 33 
     | 
    
         
            +
            - lib/tinderfridge.rb
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/tinderfridge/device.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/tinderfridge/device_collection.rb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - lib/tinderfridge/device_info.rb
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/tinderfridge/device_info.txt
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/tinderfridge/ip_connection.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - lib/tinderfridge/tinkerforge.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/tinderfridge/version.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            homepage: https://github.com/lllisteu/tinderfridge
         
     | 
| 
      
 42 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 43 
     | 
    
         
            +
            - CC0-1.0
         
     | 
| 
      
 44 
     | 
    
         
            +
            metadata:
         
     | 
| 
      
 45 
     | 
    
         
            +
              homepage_uri: https://github.com/lllisteu/tinderfridge
         
     | 
| 
      
 46 
     | 
    
         
            +
              changelog_uri: https://github.com/lllisteu/tinderfridge/blob/master/History.md
         
     | 
| 
      
 47 
     | 
    
         
            +
              documentation_uri: https://www.rubydoc.info/gems/tinderfridge
         
     | 
| 
      
 48 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 49 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 50 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 51 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 52 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 53 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 54 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 55 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 56 
     | 
    
         
            +
                  version: 2.5.0
         
     | 
| 
      
 57 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 58 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 60 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 62 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 63 
     | 
    
         
            +
            rubygems_version: 3.1.2
         
     | 
| 
      
 64 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 65 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 66 
     | 
    
         
            +
            summary: Extending Tinkerforge in fun and useful ways.
         
     | 
| 
      
 67 
     | 
    
         
            +
            test_files: []
         
     |