Skip to content

I think I found some protocol violations. #3

@bzuidgeest

Description

@bzuidgeest

I believe found a little mistake in your library. In enum ArtNetTalkToMeTag the fourth bit is 1 if unicast should be used for diagnostics instead of broadcast. using your setup causes sendpol to send to the serverip by default which the spec says is illegal (page 14 of artnet spec 4).

typedef enum ArtNetTalkToMeTag
{
ARTNET_DIAGNOSTIC_BROADCAST = (1 << 3), // Set if ArtNetPollReply should broadcast
ARTNET_DIAGNOSTIC_SEND = (1 << 2), // Set if diagnostic messages should be sent
ARTNET_DIAGNOSTIC_ALWAYS = (1 << 1) // Set if ArtNetPollReply should be sent whenever changes occur
}

to

typedef enum ArtNetTalkToMeTag
{
ARTNET_DIAGNOSTIC_UNICAST = (1 << 3), // Set if ArtNetPollReply should unicast
ARTNET_DIAGNOSTIC_SEND = (1 << 2), // Set if diagnostic messages should be sent
ARTNET_DIAGNOSTIC_ALWAYS = (1 << 1) // Set if ArtNetPollReply should be sent whenever changes occur
}

then adjust both the constructor and sendpol.

Also I see this in artnet.h:

// Port to reply on
#define UDP_PORT_ARTNET_REPLY (UDP_PORT_ARTNET + 1)

The spec clearly say the protocol uses only one port and I could not get it to work without removing this define.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions