0.0
No commit activity in last 3 years
No release in over 3 years
The Illuminato X Machina is a module hardware unit for scalable and robust computing. More at: http://www.liquidware.com/shop/show/IXM/Illuminato+X+Machina
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

LibXML for Ruby

LibXML is a communications layer for the Illuminato X Machina and the Ruby programming language. It splits communication into two parts:

  • Adapters hardware compatibility layers
  • Interfaces software behavior models

If neither is specified to LibIXM.new, the adapter SFBProg and interface Simple will be assumed.

Adapters

Currently, the only adapter available is SFBProg.

SFBProg Adapter

The SFBProg adapter is a wrapper around the binary sfbprog or sfbprog.exe that ships with the Illuminato X Machina IDE. The adapter assumes sfbprog is installed in the PATH, but the binary path can be specified easily:

ixm = LibIXM.new(
  :sfbprog_path => '/usr/bin/sfbprog', # path for sfbprog or sfbprog.exe
  :sfbprog_args => '', # additional arguments
  :sfbprog_device => '/dev/ttyUSB0', # device for serial-over-usb
  :sfbprog_sketch => 'mysketch.hex', # sketch
)

:sfbprog_path and :sfbprog_sketch are most likely to be customized in your particular implementation. :sfbprog_sketch is the packet_echo.hex sketch by default. The normal newest-timestamp-propigates rules apply, but setting :sfbprog_sketch to the correct sketch is a reasonable safety measure to ensure you don't wipe your IXM.

Interfaces

Currently, the only interface for LibIXM is Simple.

Simple Interface

The Simple interface provides a reflex mechanism similar to the IXM's native Body.reflex call.

ixm.attach_reflex( /respondtome/ ) do |packet|
  puts "Hey! I found a respondstome in '#{packet}'"
end

This uses Ruby regex instead of first character comparison. As documented in examples/yodel_with_echo_packet.rb a script should wait for a given response, or implement a simple timeout. The SFBProg adapter uses a thread to read incoming packets, so scripts need to provide an appropriate time for task completion.

More Information

The IXM and this library are discussed at: