-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathtest_client.c
43 lines (37 loc) · 1.24 KB
/
test_client.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <err.h>
#include <e131.h>
int main() {
int sockfd;
e131_packet_t packet;
e131_addr_t dest;
// create a socket for E1.31
if ((sockfd = e131_socket()) < 0)
err(EXIT_FAILURE, "e131_socket");
// configure socket to use the default network interface for outgoing multicast data
if (e131_multicast_iface(sockfd, 0) < 0)
err(EXIT_FAILURE, "e131_multicast_iface");
// initialize the new E1.31 packet in universe 1 with 24 slots in preview mode
e131_pkt_init(&packet, 1, 24);
memcpy(&packet.frame.source_name, "E1.31 Test Client", 18);
if (e131_set_option(&packet, E131_OPT_PREVIEW, true) < 0)
err(EXIT_FAILURE, "e131_set_option");
// set remote system destination as unicast address
if (e131_unicast_dest(&dest, "127.0.0.1", E131_DEFAULT_PORT) < 0)
err(EXIT_FAILURE, "e131_unicast_dest");
// loop to send cycling levels for each slot
uint8_t level = 0;
for (;;) {
for (size_t pos=0; pos<24; pos++)
packet.dmp.prop_val[pos + 1] = level;
level++;
if (e131_send(sockfd, &packet, &dest) < 0)
err(EXIT_FAILURE, "e131_send");
e131_pkt_dump(stderr, &packet);
packet.frame.seq_number++;
usleep(250000);
}
}