Compare commits

...

2 Commits

Author SHA1 Message Date
d4bc537cbd
rotctl: actually quit when receiving the quit message 2024-07-18 21:47:50 -07:00
8037568f38
rotctl: add autopark functionality
Since gpredict doesn't have a park button or anything, this will just
automatically park the antenna when the gpredict rotator controller
disconnects. This may or may not actually be a good idea. We will see.
2024-07-18 21:47:50 -07:00
2 changed files with 8 additions and 3 deletions

View File

@ -92,6 +92,7 @@ pub fn validate(self: Config, err_writer: anytype) !void {
rotctl: RotControlConfig = .{
.listen_address = "127.0.0.1",
.listen_port = 4533,
.autopark = false,
},
labjack: LabjackConfig = .{
.device = .autodetect,
@ -151,6 +152,7 @@ pub const MinMax = struct {
const RotControlConfig = struct {
listen_address: []const u8,
listen_port: u16,
autopark: bool,
};
const LabjackConfig = struct {

View File

@ -33,7 +33,7 @@ pub fn run(allocator: std.mem.Allocator) !void {
.rotator = try YaesuController.init(allocator),
};
while (true) {
while (interface.running) {
const client = try server.accept();
defer {
log.info("disconnecting client", .{});
@ -42,8 +42,6 @@ pub fn run(allocator: std.mem.Allocator) !void {
}
interface.writer = .{ .unbuffered_writer = client.stream.writer() };
interface.running = true;
defer interface.running = false;
log.info("client connected from {}", .{client.address});
@ -60,6 +58,11 @@ pub fn run(allocator: std.mem.Allocator) !void {
std.mem.trim(u8, fbs.getWritten(), &std.ascii.whitespace),
) catch break;
}
// loop ended due to client disconnect
if (interface.running and config.rotctl.autopark) {
interface.rotator.startPark();
}
}
}