aboutsummaryrefslogtreecommitdiffstats
path: root/src/control.zig
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-01-25 16:36:11 +0000
committers-ol <s-ol@users.noreply.github.com>2020-01-25 16:57:31 +0000
commit9d2d72db724de3b21a7ade4623c3b1a8603e85f3 (patch)
tree3f2ef21dfcc66db486b4871c2352ece0eea744e4 /src/control.zig
parentbasic OSC support (diff)
downloadglsl-view-9d2d72db724de3b21a7ade4623c3b1a8603e85f3.tar.gz
glsl-view-9d2d72db724de3b21a7ade4623c3b1a8603e85f3.zip
OSC configuration in config.yaml
Diffstat (limited to 'src/control.zig')
-rw-r--r--src/control.zig25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/control.zig b/src/control.zig
index 4937bb7..1a80147 100644
--- a/src/control.zig
+++ b/src/control.zig
@@ -1,6 +1,7 @@
const c = @import("c.zig");
const gl = @import("gl.zig");
const std = @import("std");
+const cfg = @import("config.zig");
const param_prefix = "/param/";
@@ -8,10 +9,30 @@ pub const ControlServer = struct {
server: c.lo_server,
shader: gl.ShaderProgram,
- pub fn init(allocator: *std.mem.Allocator) !*ControlServer {
+ pub fn init(allocator: *std.mem.Allocator, config: cfg.OSCConfig) !*ControlServer {
var self: *ControlServer = try allocator.create(ControlServer);
- self.server = c.lo_server_new("1234", handle_error);
+ switch (config) {
+ .Manual => |conf| {
+ var port = [_]u8{0} ** 6;
+ _ = std.fmt.formatIntBuf(port[0..], conf.port, 10, false, std.fmt.FormatOptions{});
+ const proto: c_int = switch (conf.protocol) {
+ .udp => c.LO_UDP,
+ .tcp => c.LO_TCP,
+ .unix => c.LO_UNIX,
+ else => unreachable,
+ };
+
+ std.debug.warn("listening for OSC messages on {} port {}\n", .{conf.protocol, conf.port});
+ self.server = c.lo_server_new_with_proto(&port[0], proto, handle_error);
+ },
+ .URL => |url| {
+ std.debug.warn("listening for OSC messages at {s}\n", .{url});
+ self.server = c.lo_server_new_from_url(&url[0], handle_error);
+ },
+ else => unreachable,
+ }
+
_ = c.lo_server_add_method(self.server, null, null, handle_method, @ptrCast(*c_void, self));
return self;