clj-artnet.impl.protocol.programming

Implements Art-Net remote programming semantics for ArtAddress, ArtInput, and ArtIpProg.

Provides pure functions to transform node state based on remote programming commands, including diagnostic acknowledgement generation.

apply-artaddress

(apply-artaddress node defaults packet)

Applies ArtAddress packet fields to the node state.

Returns {:node node’ :changes {…} :command-info {…}}.

apply-artinput

(apply-artinput {:keys [node packet target-bind-index]})

Applies ArtInput disable directives to the node’s GoodInput field.

Returns {:node node’ :disabled :changes {…} :applied-bind-index n :applied-to-base? boolean}.

apply-artipprog

(apply-artipprog {:keys [node network network-defaults packet]})

Applies ArtIpProg semantics, producing state changes and reply map.

artaddress-acknowledgements

(artaddress-acknowledgements info packet)

Generates diagnostic acknowledgement entries for ArtAddress command-info.

Returns a vector of {:text … :priority …} maps.

artinput-disable-bit

describe-artaddress-command

(describe-artaddress-command info packet)

Converts ArtAddress command-info to a human-readable diagnostic string.

Returns nil if no description is applicable.

good-input-disabled-bit

good-output-ltp-bit

good-output-sacn-bit

good-outputb-continuous-bit

good-outputb-rdm-disabled-bit