From 1ffe53ba1493741b209c3040a359799c5ada4cf4 Mon Sep 17 00:00:00 2001 From: cbdev Date: Mon, 3 Jul 2017 23:55:07 +0200 Subject: Working OSC receiver --- osc.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) (limited to 'osc.h') diff --git a/osc.h b/osc.h index 6cc321d..8fcad71 100644 --- a/osc.h +++ b/osc.h @@ -1,2 +1,54 @@ #include "midimonster.h" -int osc_start(); +#include +#include + +#define OSC_RECV_BUF 4096 + +int init(); +static int backend_configure(char* option, char* value); +static int backend_configure_instance(instance* instance, char* option, char* value); +static instance* backend_instance(); +static channel* backend_channel(instance* instance, char* spec); +static int backend_set(instance* inst, size_t num, channel** c, channel_value* v); +static int backend_handle(size_t num, managed_fd* fds); +static int backend_start(); +static int backend_shutdown(); + +typedef enum { + not_set = 0, + int32 = 'i', + float32 = 'f', + /*s, b*/ //ignored + int64 = 'h', + double64 = 'd', +} osc_parameter_type; + +typedef union { + int32_t i32; + float f; + int64_t i64; + double d; +} osc_parameter_value; + +typedef struct /*_osc_channel*/ { + char* path; + size_t params; + size_t param_index; + size_t* param; + uint8_t mark; + + osc_parameter_type type; + osc_parameter_value max; + osc_parameter_value min; + osc_parameter_value current; +} osc_channel; + +typedef struct /*_osc_instance_data*/ { + size_t channels; + osc_channel* channel; + uint8_t output; + char* root; + socklen_t dest_len; + struct sockaddr_storage dest; + int fd; +} osc_instance; -- cgit v1.2.3