diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2020-01-25 16:36:11 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2020-01-25 16:57:31 +0000 |
| commit | 9d2d72db724de3b21a7ade4623c3b1a8603e85f3 (patch) | |
| tree | 3f2ef21dfcc66db486b4871c2352ece0eea744e4 /src/control.zig | |
| parent | basic OSC support (diff) | |
| download | glsl-view-9d2d72db724de3b21a7ade4623c3b1a8603e85f3.tar.gz glsl-view-9d2d72db724de3b21a7ade4623c3b1a8603e85f3.zip | |
OSC configuration in config.yaml
Diffstat (limited to 'src/control.zig')
| -rw-r--r-- | src/control.zig | 25 |
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; |
