class XBeeRuby::XBee

Public Class Methods

new(port: '/dev/ttyUSB0', rate: 9600, serial: nil) click to toggle source

Either specify the port and serial parameters

xbee = XBeeRuby::Xbee.new port: '/dev/ttyUSB0', rate: 9600

or pass in a SerialPort like object

xbee = XBeeRuby::XBee.new serial: some_serial_mockup_for_testing
# File lib/xbee-ruby/xbee.rb, line 25
def initialize port: '/dev/ttyUSB0', rate: 9600, serial: nil
        @port = port
        @rate = rate
        @serial = serial
        @connected = false
        @logger = nil
end

Public Instance Methods

close() click to toggle source
# File lib/xbee-ruby/xbee.rb, line 41
def close
        @serial.close if @serial
        @connected = false
end
connected?() click to toggle source
# File lib/xbee-ruby/xbee.rb, line 46
def connected?
        @connected
end
Also aliased as: open?
log() { || ... } click to toggle source
# File lib/xbee-ruby/xbee.rb, line 80
def log
        @logger.call yield if @logger
end
logger=(logger) click to toggle source
# File lib/xbee-ruby/xbee.rb, line 76
def logger= logger
        @logger = logger
end
open() click to toggle source
# File lib/xbee-ruby/xbee.rb, line 33
def open
        @serial ||= SerialPort.new @port, @rate
        @serial_input = Enumerator.new { |y| loop do
                y.yield @serial.readbyte
        end }
        @connected = true
end
open?()
Alias for: connected?
read_packet() click to toggle source
# File lib/xbee-ruby/xbee.rb, line 62
def read_packet
        Packet.from_byte_enum(@serial_input).tap do |packet|
                log { "Packet received: #{packet.bytes.map { |b| b.to_s(16) }.join(',')}" }
        end
end
read_response() click to toggle source
# File lib/xbee-ruby/xbee.rb, line 68
def read_response
        Response.from_packet read_packet
end
serial=(io) click to toggle source
# File lib/xbee-ruby/xbee.rb, line 72
def serial= io
        @serial = io
end
write_packet(packet) click to toggle source
# File lib/xbee-ruby/xbee.rb, line 52
def write_packet packet
        @serial.write packet.bytes_escaped.pack('C*').force_encoding('ascii')
        @serial.flush
end
write_request(request) click to toggle source
# File lib/xbee-ruby/xbee.rb, line 57
def write_request request
        write_packet request.packet
        log { "Packet sent: #{request.packet.bytes.map { |b| b.to_s(16) }.join(',')}" }
end