From 8cc26446c2132011356cd0e9c587fa91a211baff Mon Sep 17 00:00:00 2001 From: drj Date: Mon, 15 Jul 2024 15:31:46 -0400 Subject: [PATCH 1/6] removed -Werror flag from Makefile.am, fixes errors --- artnet/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/artnet/Makefile.am b/artnet/Makefile.am index 6ffeebf..44cd245 100644 --- a/artnet/Makefile.am +++ b/artnet/Makefile.am @@ -1,5 +1,5 @@ -AM_CFLAGS = -I$(top_builddir) -I$(top_srcdir) -Wall -Werror -Wformat -W +AM_CFLAGS = -I$(top_builddir) -I$(top_srcdir) -Wall -Wformat -W EXTRA_DIST = tod.h misc.h From 0ecf5ce81e6ce8cd39025e67316ae6a966e907a9 Mon Sep 17 00:00:00 2001 From: drj Date: Mon, 15 Jul 2024 15:34:48 -0400 Subject: [PATCH 2/6] Fixed error pertaining to ARTNET_RDM_UID_WIDTH and ARTNET_MAX_UID_COUNT --- artnet/transmit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/artnet/transmit.c b/artnet/transmit.c index ce19b11..1710bee 100644 --- a/artnet/transmit.c +++ b/artnet/transmit.c @@ -163,7 +163,7 @@ int artnet_tx_tod_data(node n, int id) { bloc = 0; while (remaining > 0) { - memset(&tod.data.toddata.tod,0x00, ARTNET_MAX_UID_COUNT); + memset(&tod.data.toddata.tod,0x00, ARTNET_MAX_UID_COUNT * ARTNET_RDM_UID_WIDTH); lim = min(ARTNET_MAX_UID_COUNT, remaining); tod.data.toddata.blockCount = bloc++; tod.data.toddata.uidCount = lim; From 685c48f76ee3af968966a4fd44b7062875cbd6a0 Mon Sep 17 00:00:00 2001 From: drj Date: Thu, 18 Jul 2024 14:01:47 -0400 Subject: [PATCH 3/6] adding custom function to send to individual target interface/device rather than broadcasting. --- artnet/artnet.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/artnet/artnet.c b/artnet/artnet.c index fc016ad..f9f6da2 100644 --- a/artnet/artnet.c +++ b/artnet/artnet.c @@ -586,6 +586,57 @@ int artnet_send_poll_reply(artnet_node vn) { return artnet_tx_poll_reply(n, FALSE); } +int artnet_send_dmx_to_addr(artnet_node vn, int port_id, int16_t length, const uint8_t *data, const char* address) { + node n = vn; + artnet_packet_t p; + int ret; + input_port_t *port; + + check_nullnode(vn); + + if (n->state.mode != ARTNET_ON) { + return ARTNET_EACTION; + } + if (port_id < 0 || port_id >= ARTNET_MAX_PORTS) { + artnet_error("%s : port index out of bounds (%i < 0 || %i > ARTNET_MAX_PORTS)", __FUNCTION__, port_id); + return ARTNET_EARG; + } + port = &n->ports.in[port_id]; + + if (length < 1 || length > ARTNET_DMX_LENGTH) { + artnet_error("%s : Length of dmx data out of bounds (%i < 1 || %i > ARTNET_MAX_DMX)", __FUNCTION__, length); + return ARTNET_EARG; + } + + if (port->port_status & PORT_STATUS_DISABLED_MASK) { + artnet_error("%s : attempt to send on a disabled port (id:%i)", __FUNCTION__, port_id); + return ARTNET_EARG; + } + + // ok we're going to send now, make sure we turn the activity bit on + port->port_status = port->port_status | PORT_STATUS_ACT_MASK; + + p.length = sizeof(artnet_dmx_t) - (ARTNET_DMX_LENGTH - length); + + // now build packet + memcpy(&p.data.admx.id, ARTNET_STRING, ARTNET_STRING_SIZE); + p.data.admx.opCode = htols(ARTNET_DMX); + p.data.admx.verH = 0; + p.data.admx.ver = ARTNET_VERSION; + p.data.admx.sequence = port->seq; + p.data.admx.physical = port_id; + p.data.admx.universe = htols(port->port_addr); + + // set length + p.data.admx.lengthHi = short_get_high_byte(length); + p.data.admx.length = short_get_low_byte(length); + memcpy(&p.data.admx.data, data, length); + + p.to.s_addr = inet_addr(address); + artnet_net_send(n, &p); + return ARTNET_EOK; +} + /* * Sends some dmx data From f029ce43a474bee0ab1af08f19e26a84514aa86e Mon Sep 17 00:00:00 2001 From: drj Date: Thu, 18 Jul 2024 14:10:06 -0400 Subject: [PATCH 4/6] adding custom function to send to individual target interface/device rather than broadcasting. --- artnet/artnet.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/artnet/artnet.h b/artnet/artnet.h index 2b79134..46eb00d 100644 --- a/artnet/artnet.h +++ b/artnet/artnet.h @@ -258,6 +258,11 @@ EXTERN int artnet_send_poll(artnet_node n, const char *ip, artnet_ttm_value_t talk_to_me); EXTERN int artnet_send_poll_reply(artnet_node n); +EXTERN int artnet_send_dmx_to_addr(artnet_node n, +int port_id, +int16_t length, +const uint8_t *data, +const char* address); EXTERN int artnet_send_dmx(artnet_node n, int port_id, int16_t length, From 3644ad1431c3e196d155a4ca930b9b7055f1807c Mon Sep 17 00:00:00 2001 From: drj Date: Thu, 18 Jul 2024 14:17:52 -0400 Subject: [PATCH 5/6] adding custom function to send to individual target interface/device rather than broadcasting. --- artnet/artnet.c | 6 ++---- artnet/artnet.h | 7 ++----- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/artnet/artnet.c b/artnet/artnet.c index f9f6da2..9e75184 100644 --- a/artnet/artnet.c +++ b/artnet/artnet.c @@ -586,10 +586,9 @@ int artnet_send_poll_reply(artnet_node vn) { return artnet_tx_poll_reply(n, FALSE); } -int artnet_send_dmx_to_addr(artnet_node vn, int port_id, int16_t length, const uint8_t *data, const char* address) { +int artnet_send_dmx_to_addr(artnet_node vn, int port_id, int16_t length, const uint8_t *data, uint32_t address) { node n = vn; artnet_packet_t p; - int ret; input_port_t *port; check_nullnode(vn); @@ -632,12 +631,11 @@ int artnet_send_dmx_to_addr(artnet_node vn, int port_id, int16_t length, const u p.data.admx.length = short_get_low_byte(length); memcpy(&p.data.admx.data, data, length); - p.to.s_addr = inet_addr(address); + p.to.s_addr = address; artnet_net_send(n, &p); return ARTNET_EOK; } - /* * Sends some dmx data * diff --git a/artnet/artnet.h b/artnet/artnet.h index 46eb00d..f1acf93 100644 --- a/artnet/artnet.h +++ b/artnet/artnet.h @@ -258,11 +258,8 @@ EXTERN int artnet_send_poll(artnet_node n, const char *ip, artnet_ttm_value_t talk_to_me); EXTERN int artnet_send_poll_reply(artnet_node n); -EXTERN int artnet_send_dmx_to_addr(artnet_node n, -int port_id, -int16_t length, -const uint8_t *data, -const char* address); + EXTERN int artnet_send_dmx_to_addr(artnet_node n, + int port_id, int16_t length, const uint8_t *data, uint32_t address); EXTERN int artnet_send_dmx(artnet_node n, int port_id, int16_t length, From f1c054ef309e8fbaa63b04e8f7e6eaed89169718 Mon Sep 17 00:00:00 2001 From: jeremystewart Date: Thu, 5 Dec 2024 12:14:01 -0500 Subject: [PATCH 6/6] added debian-preinstall.sh script, which runs everything needed to compile libartnet. Must be followed with "make install" to install system-wide --- debian-preinstall.sh | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 debian-preinstall.sh diff --git a/debian-preinstall.sh b/debian-preinstall.sh new file mode 100644 index 0000000..d3162cf --- /dev/null +++ b/debian-preinstall.sh @@ -0,0 +1,9 @@ +echo "Installing autoconf and libtool" +apt update && apt install -y autoconf libtool +echo "Running autoreconf" +autoreconf -fi +echo "Running configure" +./configure +echo "Compiling libartnet" +make -j18 +echo "Run make install to install library on system" \ No newline at end of file