Class: XBeeRuby::XBee
- Inherits:
-
Object
- Object
- XBeeRuby::XBee
- Defined in:
- lib/xbee-ruby/xbee.rb
Instance Method Summary collapse
- #close ⇒ Object
- #connected? ⇒ Boolean (also: #open?)
-
#initialize(port: '/dev/ttyUSB0', rate: 9600, serial: nil) ⇒ XBee
constructor
Either specify the port and serial parameters.
- #log ⇒ Object
- #logger=(logger) ⇒ Object
- #open ⇒ Object
- #read_packet ⇒ Object
- #read_response ⇒ Object
- #serial=(io) ⇒ Object
- #write_packet(packet) ⇒ Object
- #write_request(request) ⇒ Object
Constructor Details
#initialize(port: '/dev/ttyUSB0', rate: 9600, serial: nil) ⇒ XBee
25 26 27 28 29 30 31 |
# 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 |
Instance Method Details
#close ⇒ Object
41 42 43 44 |
# File 'lib/xbee-ruby/xbee.rb', line 41 def close @serial.close if @serial @connected = false end |
#connected? ⇒ Boolean Also known as: open?
46 47 48 |
# File 'lib/xbee-ruby/xbee.rb', line 46 def connected? @connected end |
#log ⇒ Object
80 81 82 |
# File 'lib/xbee-ruby/xbee.rb', line 80 def log @logger.call yield if @logger end |
#logger=(logger) ⇒ Object
76 77 78 |
# File 'lib/xbee-ruby/xbee.rb', line 76 def logger= logger @logger = logger end |
#open ⇒ Object
33 34 35 36 37 38 39 |
# 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 ⇒ Object
62 63 64 65 66 |
# 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 ⇒ Object
68 69 70 |
# File 'lib/xbee-ruby/xbee.rb', line 68 def read_response Response.from_packet read_packet end |
#serial=(io) ⇒ Object
72 73 74 |
# File 'lib/xbee-ruby/xbee.rb', line 72 def serial= io @serial = io end |
#write_packet(packet) ⇒ Object
52 53 54 55 |
# 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) ⇒ Object
57 58 59 60 |
# 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 |