diff options
-rw-r--r-- | dmx512/src/dmx4pd.h | 5 | ||||
-rw-r--r-- | dmx512/src/dmxin.c | 50 | ||||
-rw-r--r-- | dmx512/src/dmxout.c | 5 |
3 files changed, 52 insertions, 8 deletions
diff --git a/dmx512/src/dmx4pd.h b/dmx512/src/dmx4pd.h index d386c28..cc6fe66 100644 --- a/dmx512/src/dmx4pd.h +++ b/dmx512/src/dmx4pd.h @@ -25,6 +25,11 @@ #include "m_pd.h" +#include <dmx/dmx.h> + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> #define DMX4PD_POSTBANNER \ diff --git a/dmx512/src/dmxin.c b/dmx512/src/dmxin.c index 9e9e1b4..cfccd4b 100644 --- a/dmx512/src/dmxin.c +++ b/dmx512/src/dmxin.c @@ -17,21 +17,65 @@ #include "dmx4pd.h" + static t_class *dmxin_class; typedef struct _dmxin { t_object x_obj; + int x_device; + + t_outlet*x_outlet1, *x_outlet2; } t_dmxin; + + + +static void dmxin_close(t_dmxin*x) +{ + if(x->x_device>=0) { + close(x->x_device); + } + x->x_device=-1; +} + + +static void dmxin_open(t_dmxin*x, t_symbol*s_devname) +{ + int argc=2; + const char *args[2] = {"--dmx", s_devname->s_name}; + const char**argv=args; + char*devname=""; + int fd; + + if(s_devname && s_devname->s_name) + devname=s_devname->s_name; + + // strncpy(args[0], "--dmx", MAXPDSTRING); + // strncpy(args[1], devname, MAXPDSTRING); + + fd = open (DMXINdev(&argc, argv), O_RDONLY); + + if(fd!=-1) { + dmxin_close(x); + x->x_device=fd; + } +} + + static void *dmxin_new(void) { - t_dmxin *x = (t_dmxin *)pd_new(dmxin_class); - return (x); + if(0) { + t_dmxin *x = (t_dmxin *)pd_new(dmxin_class); + return (x); + } else { + error("[dmxin] not yet implemented"); + return 0; + } } static void *dmxin_free(t_dmxin*x) { - + dmxin_close(x); } void dmxin_setup(void) diff --git a/dmx512/src/dmxout.c b/dmx512/src/dmxout.c index b9066cb..fc3a875 100644 --- a/dmx512/src/dmxout.c +++ b/dmx512/src/dmxout.c @@ -17,14 +17,9 @@ #include "dmx4pd.h" -#include <fcntl.h> -#include <sys/stat.h> #include <unistd.h> #include <string.h> - -#include <dmx/dmx.h> - static t_class *dmxout_class; typedef struct _dmxout |