In theory, this will poll the feedback lines, but in practice, it probably crashes or catches on fire or something.
39 lines
1.1 KiB
Zig
39 lines
1.1 KiB
Zig
const std = @import("std");
|
|
|
|
const Config = @import("./Config.zig");
|
|
const lj = @import("./labjack.zig");
|
|
const RotCtl = @import("./RotCtl.zig");
|
|
|
|
const log = std.log.scoped(.main);
|
|
|
|
pub fn main() !u8 {
|
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
|
defer _ = gpa.deinit();
|
|
const allocator = gpa.allocator();
|
|
|
|
blk: {
|
|
const conf_file = std.fs.cwd().openFile("yaes.json", .{}) catch {
|
|
log.warn("Could not load config file yaes.json. Using default config.", .{});
|
|
Config.loadDefault(allocator);
|
|
break :blk;
|
|
};
|
|
defer conf_file.close();
|
|
|
|
Config.load(allocator, conf_file.reader()) catch {
|
|
log.err("Could not parse config file yaes.json. Good luck figuring out why.", .{});
|
|
return 1;
|
|
};
|
|
}
|
|
defer Config.destroy(allocator);
|
|
|
|
const ver = lj.getDriverVersion();
|
|
std.debug.print("Driver version: {d}\n", .{ver});
|
|
|
|
RotCtl.run(allocator) catch |err| {
|
|
log.err("rotator controller ceased unexpectedly! {s}", .{@errorName(err)});
|
|
return 1;
|
|
};
|
|
|
|
return 0;
|
|
}
|