Crate artnet_protocol

Source
Expand description

Contains the ArtCommand enum which holds the entire ArtNet protocol v4, as per https://artisticlicence.com/WebSiteMaster/User%20Guides/art-net.pdf

use artnet_protocol::*;
use std::net::{UdpSocket, ToSocketAddrs};

let socket = UdpSocket::bind(("0.0.0.0", 6454)).unwrap();
let broadcast_addr = ("255.255.255.255", 6454).to_socket_addrs().unwrap().next().unwrap();
socket.set_broadcast(true).unwrap();
let buff = ArtCommand::Poll(Poll::default()).write_to_buffer().unwrap();
socket.send_to(&buff, &broadcast_addr).unwrap();

loop {
    let mut buffer = [0u8; 1024];
    let (length, addr) = socket.recv_from(&mut buffer).unwrap();
    let command = ArtCommand::from_buffer(&buffer[..length]).unwrap();
     
    println!("Received {:?}", command);
    match command {
        ArtCommand::Poll(poll) => {
            // This will most likely be our own poll request, as this is broadcast to all devices on the network
        },
        ArtCommand::PollReply(reply) => {
            // This is an ArtNet node on the network. We can send commands to it like this:
            let command = ArtCommand::Output(Output {
                data: vec![1, 2, 3, 4, 5].into(), // The data we're sending to the node
                ..Output::default()
            });
            let bytes = command.write_to_buffer().unwrap();
            socket.send_to(&bytes, &addr).unwrap();
        },
        _ => {}
    }
}

Re-exports§

pub extern crate bitflags;
pub extern crate byteorder;

Structs§

ArtTalkToMe
The TalkToMe flag, as to be used in the Poll and PollReply message
Output
ArtDmx is the data packet used to transfer DMX512 data. The format is identical for Node to Controller, Node to Node and Controller to Node.
PaddedData
Data in an ArtDmx data packet.
Poll
Used to poll the nodes in the network
PollReply
Gets send by the nodes in the network as a response to the Poll message
PortAddress
A PortAddress is an unsigned integer from 0 to 32_767 (15-bit).

Enums§

ArtCommand
The ArtCommand, to be used for ArtNet.
Error
All the possible errors this crate can encounter

Constants§

ARTNET_HEADER
The ArtNet header. This is the first 8 bytes of each message, and contains the text “Art-Net\0”
ARTNET_PROTOCOL_VERSION
The protocol version. Anything above [4, 0] seems to work for the devices that this library was tested on.

Type Aliases§

Result
The result that this crate uses