X-AT switched to Vala
I rewrited all trakd nodes to Vala from C++11. As a result i dropped many dependencies, so total binaries size smaller 2x. But unfortunately did not fit in 4 MiB TL-WR703N (but 8 MiB i think enough) (OpenWRT + LuCI + trakd).
As a part of this work i wrote codegen and bindings to LCM for Vala, that patches don’t pass to upstream, but available in my github fork (lcm-vala branch).
I really liked the built-in support for asynchronous processes and built-in signal-slot.
Part of rotd.vala
that does motor homing:
// Waits until motors stops and apply home position
private static async void homing_finish() {
debug("Homing finishing");
Timeout.add(HOMING_PERIOD_MS,
() => {
// XXX error handling
var s = conn.get_status();
if (s.az_in_motion || s.el_in_motion)
return true;
debug("Reset current position to 0");
conn.set_cur_position(new CurPosition.with_data(0, 0));
message("Apply tracking settings");
conn.set_stepper_settings(tracking_settings);
homing_finish.callback();
return false;
});
yield;
}
private static async void homing_proc() {
message("Homing process started");
homing_in_proc = true;
yield homing_init();
yield homing_homing();
yield homing_finish();
message("Hoiming finished");
homing_in_proc = false;
}
Also i wrote X-Plane 10 simulator input, that replaces mavlink listener node. I started working on tracking goal node (that is essential part for tracker).
But we still not complete with mechanics.