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
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