class Artoo::Connection
The Connection
class represents the interface to a specific group of hardware devices. Examples would be an Arduino, a Sphero, or an ARDrone.
Attributes
adaptor[R]
connection_id[R]
details[R]
name[R]
parent[R]
port[R]
Public Class Methods
new(params={})
click to toggle source
Create new connection @param [Hash] params @option params :id [String] @option params :name [String] @option params :parent [String] @option params :adaptor [String] @option params :port [Integer]
# File lib/artoo/connection.rb, line 21 def initialize(params={}) @connection_id = params[:id] || rand(10000).to_s @name = params[:name].to_s @port = Port.new(params[:port]) @parent = params[:parent] @details = remove_keys(params, :name, :parent, :id, :loopback) require_adaptor(params[:adaptor] || :loopback, params) end
Public Instance Methods
adaptor_name()
click to toggle source
@return [String] Adaptor class name
# File lib/artoo/connection.rb, line 54 def adaptor_name adaptor.class.name end
as_json()
click to toggle source
@return [JSON] connection
# File lib/artoo/connection.rb, line 68 def as_json MultiJson.dump(to_hash) end
connect()
click to toggle source
Creates adaptor connection @return [Boolean]
# File lib/artoo/connection.rb, line 33 def connect Logger.info "Connecting to '#{name}' on port '#{port}'..." adaptor.connect rescue Exception => e Logger.error e.message Logger.error e.backtrace.inspect end
connected?()
click to toggle source
@return [Boolean] Connection
status
# File lib/artoo/connection.rb, line 49 def connected? adaptor.connected? end
disconnect()
click to toggle source
Closes adaptor connection @return [Boolean]
# File lib/artoo/connection.rb, line 43 def disconnect Logger.info "Disconnecting from '#{name}' on port '#{port}'..." adaptor.disconnect end
inspect()
click to toggle source
@return [String] Formated connection
# File lib/artoo/connection.rb, line 73 def inspect "#<Connection @id=#{object_id}, @name='#{name}', @adaptor=#{adaptor_name}>" end
method_missing(method_name, *arguments, &block)
click to toggle source
Redirects missing methods to adaptor, attemps reconnection if adaptor not connected
# File lib/artoo/connection.rb, line 79 def method_missing(method_name, *arguments, &block) unless adaptor.connected? Logger.warn "Cannot call unconnected adaptor '#{name}', attempting to reconnect..." adaptor.reconnect return nil end adaptor.send(method_name, *arguments, &block) rescue Exception => e Logger.error e.message Logger.error e.backtrace.inspect return nil end
respond_to_missing?(method_name, include_private = false)
click to toggle source
# File lib/artoo/connection.rb, line 92 def respond_to_missing?(method_name, include_private = false) # TODO: verify that the adaptor supprts the method we're calling true end
to_hash()
click to toggle source
@return [Hash] connection
# File lib/artoo/connection.rb, line 59 def to_hash { :name => name, :adaptor => adaptor_name.to_s.gsub(/^.*::/, ''), :details => @details } end
Private Instance Methods
require_adaptor(type, params)
click to toggle source
# File lib/artoo/connection.rb, line 99 def require_adaptor(type, params) if Artoo::Robot.test? type = :test end require "artoo/adaptors/#{type.to_s}" @adaptor = constantize("Artoo::Adaptors::#{classify(type.to_s)}").new(:port => port, :parent => current_instance, :additional_params => params) end