The DUE running G2 exposes pins for all 6axis and their endstops. So I think gone are the days of needing to chain boards together.
The thing I really love in the tinyg code is the ability to register listeners to inputs, position, etc and get a callback whenever any of those things change. With firenodejs I ran into an issue that when firenodejs issues a move command, it will immediately ask the machine where it thinks it is at. On a long move, the machine may not be done moving when firenodejs asks where the machine is at, this messes stuff up. So there are 2 options, one option is to add an articficial delay any time firenodejs asks the tinyg driver for its current position (yuck, articficial delays suck), the other way, the way I ended up building it was to queue up the request for position until the tinyg is done moving. And, because I am able to listen to the "is moving" status from tinyg I am assured to get a status report immediately once the machine is done with the move. At which time I execute the "where you at" command.
I have been looking over the smoothie console commands (
http://smoothieware.org/console-commands) but have not found a way to do very simple things like query the current position or state of the smoothie board, or execute a single G-Code command (there is a way to "play" a file, but that is the only way I can see to actually move the machine?) At any rate, I am certain I am terribly missing something, perhaps I am not looking for console commands but more of a lower level serial api, but I havent found anything in the docs yet. If anyone has any tips please do send them along!