summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/Makefile3
-rw-r--r--apps/dolmetschctl.c59
-rw-r--r--apps/osc.c81
-rw-r--r--apps/osc.h32
4 files changed, 120 insertions, 55 deletions
diff --git a/apps/Makefile b/apps/Makefile
index 13a61fa..a5e36f0 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -26,7 +26,8 @@ endif
EXECUTABLE := dolmetschctl
-C_OBJS := dolmetschctl.o
+C_OBJS := osc.o \
+ dolmetschctl.o
C_SRCS := $(C_OBJS:%.o=%.c)
diff --git a/apps/dolmetschctl.c b/apps/dolmetschctl.c
index 1d695a5..e60dbcc 100644
--- a/apps/dolmetschctl.c
+++ b/apps/dolmetschctl.c
@@ -23,12 +23,9 @@
#include "config.h"
#include <stdio.h>
-#include <stdlib.h>
#include <unistd.h>
-#include "lo/lo.h"
-
-volatile int done = 0;
+#include "osc.h"
void print_version()
{
@@ -42,62 +39,16 @@ void print_version()
#endif
}
-void print_error(int num, const char *msg, const char *path)
-{
- printf("liblo server error %d in path %s: %s\n", num, path, msg);
- fflush(stdout);
-}
-
-
-int generic_handler(const char *path, const char *types, lo_arg ** argv,
- int argc, void *data, void *user_data)
-{
- int i;
-
- printf("path: <%s>\n", path);
- for(i = 0; i < argc; i++) {
- printf("arg %d '%c' ", i, types[i]);
- lo_arg_pp((lo_type)types[i], argv[i]);
- printf("\n");
- }
- printf("\n");
- fflush(stdout);
-
- return 1;
-}
-
-int foo_handler(const char *path, const char *types, lo_arg ** argv,
- int argc, void *data, void *user_data)
-{
- printf("%s <- f:%f, i:%d\n", path, argv[0]->f, argv[1]->i);
- fflush(stdout);
-
- return 0;
-}
-
-int quit_handler(const char *path, const char *types, lo_arg ** argv,
- int argc, void *data, void *user_data)
-{
- done = 1;
- printf("quiting\n");
- fflush(stdout);
-
- return 0;
-}
int main(int argc, char* argv[])
{
- lo_server_thread st = lo_server_thread_new("7770", print_error);
- lo_server_thread_add_method(st, NULL, NULL, generic_handler, NULL);
- lo_server_thread_add_method(st, "/foo/bar", "fi", foo_handler, NULL);
- lo_server_thread_add_method(st, "/quit", "", quit_handler, NULL);
- lo_server_thread_start(st);
+ lo_server_thread st = osc_init("7770");
- while (!done) {
+ osc_start(st);
+ while (1) {
usleep(1000);
}
-
- lo_server_thread_free(st);
+ osc_stop(st);
return 0;
}
diff --git a/apps/osc.c b/apps/osc.c
new file mode 100644
index 0000000..4cba491
--- /dev/null
+++ b/apps/osc.c
@@ -0,0 +1,81 @@
+/*
+ * dolmetschctl
+ *
+ *
+ * Copyright (C) 2015 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of dolmetschctl.
+ *
+ * dolmetschctl is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * dolmetschctl is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with dolmetschctl. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "osc.h"
+
+
+static void print_error(int num, const char *msg, const char *path)
+{
+ printf("liblo server error %d in path %s: %s\n", num, path, msg);
+ fflush(stdout);
+}
+
+static int generic_handler(const char *path, const char *types, lo_arg ** argv,
+ int argc, void *data, void *user_data)
+{
+ int i;
+
+ printf("path: <%s>\n", path);
+ for(i = 0; i < argc; i++) {
+ printf("arg %d '%c' ", i, types[i]);
+ lo_arg_pp((lo_type)types[i], argv[i]);
+ printf("\n");
+ }
+ printf("\n");
+ fflush(stdout);
+
+ return 1;
+}
+
+static int foo_handler(const char *path, const char *types, lo_arg ** argv,
+ int argc, void *data, void *user_data)
+{
+ printf("%s <- f:%f, i:%d\n", path, argv[0]->f, argv[1]->i);
+ fflush(stdout);
+
+ return 0;
+}
+
+
+lo_server_thread osc_init(const char* port)
+{
+ lo_server_thread st = lo_server_thread_new(port, print_error);
+ lo_server_thread_add_method(st, NULL, NULL, generic_handler, NULL);
+ lo_server_thread_add_method(st, "/foo/bar", "fi", foo_handler, NULL);
+
+ return st;
+}
+
+void osc_start(lo_server_thread st)
+{
+ lo_server_thread_start(st);
+}
+
+void osc_stop(lo_server_thread st)
+{
+ lo_server_thread_free(st);
+}
diff --git a/apps/osc.h b/apps/osc.h
new file mode 100644
index 0000000..51c0539
--- /dev/null
+++ b/apps/osc.h
@@ -0,0 +1,32 @@
+/*
+ * dolmetschctl
+ *
+ *
+ * Copyright (C) 2015 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of dolmetschctl.
+ *
+ * dolmetschctl is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * dolmetschctl is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with dolmetschctl. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DOLMETSCHCTL_osc_h_INCLUDED
+#define DOLMETSCHCTL_osc_h_INCLUDED
+
+#include "lo/lo.h"
+
+lo_server_thread osc_init(const char* port);
+void osc_start(lo_server_thread);
+void osc_stop(lo_server_thread);
+
+#endif