diff options
-rw-r--r-- | guile-osc.c | 29 | ||||
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | open-sound-control/api.scm (renamed from guile-osc/engine.scm) | 11 | ||||
-rw-r--r-- | open-sound-control/server-thread.scm | 24 |
4 files changed, 46 insertions, 20 deletions
diff --git a/guile-osc.c b/guile-osc.c index f6a5906..5e69738 100644 --- a/guile-osc.c +++ b/guile-osc.c @@ -26,7 +26,7 @@ #include <lo/lo.h> -static SCM osc_server_type; +static SCM osc_server_thread_type; static SCM osc_method_type; @@ -36,18 +36,19 @@ static void error_callback(int num, const char *msg, const char *path) } -static SCM start_osc() +static SCM make_osc_server_thread(SCM port_obj) { - lo_server_thread srv = lo_server_thread_new("7770", error_callback); + const char *port = scm_to_utf8_stringn(port_obj, NULL); + lo_server_thread srv = lo_server_thread_new(port, error_callback); lo_server_thread_start(srv); - return scm_make_foreign_object_1(osc_server_type, srv); + return scm_make_foreign_object_1(osc_server_thread_type, srv); } -static void finalize_osc_server(SCM obj) +static void finalize_osc_server_thread(SCM obj) { lo_server_thread srv; - scm_assert_foreign_object_type(osc_server_type, obj); + scm_assert_foreign_object_type(osc_server_thread_type, obj); srv = scm_foreign_object_ref(obj, 0); lo_server_thread_free(srv); } @@ -99,14 +100,14 @@ static int method_callback(const char *path, const char *types, lo_arg **argv, } -static SCM define_osc_method(SCM server_obj, SCM path_obj, SCM proc) +static SCM add_osc_method(SCM server_obj, SCM path_obj, SCM proc) { lo_server_thread srv; lo_method method; char *path; struct method_callback_data *data; - scm_assert_foreign_object_type(osc_server_type, server_obj); + scm_assert_foreign_object_type(osc_server_thread_type, server_obj); srv = scm_foreign_object_ref(server_obj, 0); data = malloc(sizeof(struct method_callback_data)); @@ -126,18 +127,18 @@ void init_guile_osc() { SCM name, slots; - name = scm_from_utf8_symbol("OSCServer"); + name = scm_from_utf8_symbol("OSCServerThread"); slots = scm_list_1(scm_from_utf8_symbol("data")); - osc_server_type = scm_make_foreign_object_type(name, - slots, - finalize_osc_server); + osc_server_thread_type = scm_make_foreign_object_type(name, + slots, + finalize_osc_server_thread); name = scm_from_utf8_symbol("OSCMethod"); slots = scm_list_1(scm_from_utf8_symbol("data")); osc_method_type = scm_make_foreign_object_type(name, slots, NULL); - scm_c_define_gsubr("start-osc", 0, 0, 0, start_osc); - scm_c_define_gsubr("define-osc-method", 3, 0, 0, define_osc_method); + scm_c_define_gsubr("make-osc-server-thread", 1, 0, 0, make_osc_server_thread); + scm_c_define_gsubr("add-osc-method", 3, 0, 0, add_osc_method); scm_add_feature("guile-osc"); } diff --git a/meson.build b/meson.build index 3c8f724..1ad5f2b 100644 --- a/meson.build +++ b/meson.build @@ -14,4 +14,4 @@ library('guile-osc', ['guile-osc.c'], dependencies: [guile_dep, lo_dep], install: true) -install_subdir('guile-osc', install_dir: guile_sitedir) +install_subdir('open-sound-control', install_dir: guile_sitedir) diff --git a/guile-osc/engine.scm b/open-sound-control/api.scm index 7c8310b..abd837c 100644 --- a/guile-osc/engine.scm +++ b/open-sound-control/api.scm @@ -1,7 +1,7 @@ ;; -;; guile-osc/engine.scm +;; open-sound-control/api.scm ;; -;; Copyright © 2023 Thomas White <taw@bitwiz.org.uk> +;; Copyright © 2023 Thomas White <taw@bitwiz.me.uk> ;; ;; This file is part of Guile-OSC. ;; @@ -18,9 +18,10 @@ ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see <http://www.gnu.org/licenses/>. ;; -(define-module (guile-osc engine) - #:export (start-osc - define-osc-method)) +(define-module (open-sound-control api) + #:export (make-osc-server-thread + add-osc-method)) + (if (not (provided? 'guile-osc)) (load-extension "libguile-osc" diff --git a/open-sound-control/server-thread.scm b/open-sound-control/server-thread.scm new file mode 100644 index 0000000..5ff23e2 --- /dev/null +++ b/open-sound-control/server-thread.scm @@ -0,0 +1,24 @@ +;; +;; open-sound-control/server-thread.scm +;; +;; Copyright © 2023 Thomas White <taw@bitwiz.me.uk> +;; +;; This file is part of Guile-OSC. +;; +;; Guile-OSC 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 +;; (at your option) any later version. +;; +;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>. +;; +(define-module (open-sound-control server-thread) + #:use-module (open-sound-control api) + #:re-export (make-osc-server-thread + add-osc-method)) |