summaryrefslogtreecommitdiff
path: root/cethcan/osc.c
diff options
context:
space:
mode:
Diffstat (limited to 'cethcan/osc.c')
-rw-r--r--cethcan/osc.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/cethcan/osc.c b/cethcan/osc.c
new file mode 100644
index 0000000..cd957f0
--- /dev/null
+++ b/cethcan/osc.c
@@ -0,0 +1,29 @@
+#include "cethcan.h"
+
+struct osc_server *osc_server = NULL;
+static struct event *osc_server_event = NULL;
+
+static void osc_sock_handler(int sock, short event, void *arg)
+{
+ if (osc_server_run(osc_server)) {
+ event_del(osc_server_event);
+ osc_server_event = NULL;
+ }
+}
+
+void osc_init(void)
+{
+ if (osc_server)
+ return;
+
+ osc_server = osc_server_new(NULL, "4223", NULL);
+ if (!osc_server)
+ return;
+
+ if (osc_server_set_blocking(osc_server, false))
+ return;
+
+ osc_server_event = event_new(ev_base, osc_server_fd(osc_server),
+ EV_READ | EV_PERSIST, osc_sock_handler, NULL);
+ event_add(osc_server_event, NULL);
+}