Skip to content

Commit e36f981

Browse files
committed
* apply a patch from Massimo to clean up the windows build
1 parent 791f781 commit e36f981

4 files changed

Lines changed: 212 additions & 190 deletions

File tree

src/artnet-discover.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ void print_node_config(artnet_node_entry ne) {
3636
printf("Short Name: %s\n", ne->shortname);
3737
printf("Long Name: %s\n", ne->longname);
3838
printf("Node Report: %s\n", ne->nodereport);
39-
printf("Subnet: 0x%hhx\n", ne->sub);
39+
printf("Subnet: 0x%02x\n", ne->sub);
4040
printf("Numb Ports: %d\n", ne->numbports);
41-
printf("Input Addrs: 0x%hhx, 0x%hhx, 0x%hhx, 0x%hhx\n", ne->swin[0], ne->swin[1], ne->swin[2], ne->swin[3] );
42-
printf("Output Addrs: 0x%hhx, 0x%hhx, 0x%hhx, 0x%hhx\n", ne->swout[0], ne->swout[1], ne->swout[2], ne->swout[3] );
41+
printf("Input Addrs: 0x%02x, 0x%02x, 0x%02x, 0x%02x\n", ne->swin[0], ne->swin[1], ne->swin[2], ne->swin[3] );
42+
printf("Output Addrs: 0x%02x, 0x%02x, 0x%02x, 0x%02x\n", ne->swout[0], ne->swout[1], ne->swout[2], ne->swout[3] );
4343
printf("----------------------------------\n");
4444
}
4545

src/artnet-flood-tx.c

Lines changed: 110 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -33,115 +33,120 @@ int use_select = 0 ;
3333

3434
int delay = 25000;
3535

36-
36+
#ifndef WIN32
3737
#include <sys/select.h>
38+
#else
39+
#include <windows.h>
40+
#endif
3841

3942
int main(int argc, char *argv[]) {
40-
artnet_node node ;
41-
char *ip_addr = NULL ;
42-
int optc, subnet_addr = 0, port_addr = 0 ;
43-
uint8_t data[ARTNET_DMX_LENGTH] ;
44-
struct timeval tv;
45-
int sd, maxsd ;
46-
fd_set rset;
47-
struct timespec ts;
48-
49-
// parse options
50-
while ((optc = getopt (argc, argv, "s:p:d:a:ve")) != EOF) {
51-
switch (optc) {
52-
case 'a':
53-
ip_addr = (char *) strdup(optarg) ;
54-
break;
55-
case 'v':
56-
verbose = 1 ;
57-
break;
58-
case 'e':
59-
use_select = 1 ;
60-
break;
61-
case 's':
62-
subnet_addr = atoi(optarg) ;
63-
64-
if(subnet_addr < 0 && subnet_addr > 15) {
65-
printf("Subnet address must be between 0 and 15\n") ;
66-
exit(1) ;
67-
}
68-
break ;
69-
case 'd':
70-
delay = atoi(optarg) ;
71-
break ;
72-
case 'p':
73-
port_addr = atoi(optarg) ;
74-
75-
if(port_addr < 0 && port_addr > 15) {
76-
printf("Port address must be between 0 and 15\n") ;
77-
exit(1) ;
78-
}
79-
break ;
80-
default:
81-
break;
82-
}
83-
}
43+
artnet_node node ;
44+
char *ip_addr = NULL ;
45+
int optc, subnet_addr = 0, port_addr = 0 ;
46+
uint8_t data[ARTNET_DMX_LENGTH] ;
47+
struct timeval tv;
48+
int sd, maxsd ;
49+
fd_set rset;
50+
#ifndef WIN32
51+
struct timespec ts;
52+
#endif
53+
54+
// parse options
55+
while ((optc = getopt (argc, argv, "s:p:d:a:ve")) != EOF) {
56+
switch (optc) {
57+
case 'a':
58+
ip_addr = (char *) strdup(optarg) ;
59+
break;
60+
case 'v':
61+
verbose = 1 ;
62+
break;
63+
case 'e':
64+
use_select = 1 ;
65+
break;
66+
case 's':
67+
subnet_addr = atoi(optarg) ;
68+
69+
if(subnet_addr < 0 && subnet_addr > 15) {
70+
printf("Subnet address must be between 0 and 15\n") ;
71+
exit(1) ;
72+
}
73+
break ;
74+
case 'd':
75+
delay = atoi(optarg) ;
76+
break ;
77+
case 'p':
78+
port_addr = atoi(optarg) ;
79+
80+
if(port_addr < 0 && port_addr > 15) {
81+
printf("Port address must be between 0 and 15\n") ;
82+
exit(1) ;
83+
}
84+
break ;
85+
default:
86+
break;
87+
}
88+
}
8489

8590
node = artnet_new(ip_addr, verbose) ; ;
8691

87-
artnet_set_short_name(node, "Artnet -> DMX ") ;
88-
artnet_set_long_name(node, "ArtNet Flood RX") ;
89-
artnet_set_node_type(node, ARTNET_NODE) ;
90-
91-
// set the first port to input dmx data
92-
artnet_set_port_type(node, 0, ARTNET_ENABLE_INPUT, ARTNET_PORT_DMX) ;
93-
artnet_set_subnet_addr(node, subnet_addr) ;
94-
95-
// set the universe address of the first port
96-
artnet_set_port_addr(node, 0, ARTNET_INPUT_PORT, port_addr) ;
97-
artnet_start(node) ;
98-
99-
sd = artnet_get_sd(node) ;
100-
101-
if(use_select) {
102-
while(1) {
103-
FD_ZERO(&rset) ;
104-
FD_SET(sd, &rset) ;
105-
106-
tv.tv_usec = delay ;
107-
tv.tv_sec = 0 ;
108-
109-
maxsd = sd ;
110-
111-
switch ( select( maxsd+1, &rset, NULL, NULL, &tv ) ) {
112-
case 0:
113-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
114-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
115-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
116-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
117-
118-
break ;
119-
case -1:
120-
printf("select error\n") ;
121-
break ;
122-
default:
123-
artnet_read(node,0) ;
124-
break;
125-
}
126-
}
127-
} else {
128-
129-
// sched_setscheduler(0, )
130-
131-
while(1) {
132-
ts.tv_nsec = delay ;
133-
ts.tv_sec = 0 ;
134-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
135-
136-
artnet_read(node,0) ;
137-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
138-
139-
nanosleep(&ts, NULL) ;
140-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
141-
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
142-
143-
}
144-
}
145-
146-
return 0 ;
92+
artnet_set_short_name(node, "Artnet -> DMX ") ;
93+
artnet_set_long_name(node, "ArtNet Flood RX") ;
94+
artnet_set_node_type(node, ARTNET_NODE) ;
95+
96+
// set the first port to input dmx data
97+
artnet_set_port_type(node, 0, ARTNET_ENABLE_INPUT, ARTNET_PORT_DMX) ;
98+
artnet_set_subnet_addr(node, subnet_addr) ;
99+
100+
// set the universe address of the first port
101+
artnet_set_port_addr(node, 0, ARTNET_INPUT_PORT, port_addr) ;
102+
artnet_start(node) ;
103+
104+
sd = artnet_get_sd(node) ;
105+
106+
if(use_select) {
107+
while(1) {
108+
FD_ZERO(&rset) ;
109+
FD_SET(sd, &rset) ;
110+
111+
tv.tv_usec = delay ;
112+
tv.tv_sec = 0 ;
113+
114+
maxsd = sd ;
115+
116+
switch ( select( maxsd+1, &rset, NULL, NULL, &tv ) ) {
117+
case 0:
118+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
119+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
120+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
121+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
122+
123+
break ;
124+
case -1:
125+
printf("select error\n") ;
126+
break ;
127+
default:
128+
artnet_read(node,0) ;
129+
break;
130+
}
131+
}
132+
} else {
133+
while(1) {
134+
#ifndef WIN32
135+
ts.tv_nsec = delay ;
136+
ts.tv_sec = 0 ;
137+
#endif
138+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
139+
140+
artnet_read(node,0) ;
141+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
142+
#ifndef WIN32
143+
nanosleep(&ts, NULL) ;
144+
#else
145+
Sleep(delay);
146+
#endif
147+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
148+
artnet_send_dmx(node,0, ARTNET_DMX_LENGTH, data) ;
149+
}
150+
}
151+
return 0 ;
147152
}

0 commit comments

Comments
 (0)