clj-artnet 0.2.0-SNAPSHOT

Released under the MIT License

A high-performance Art-Net 4 protocol implementation for Clojure.

Installation

To install, add the following dependency to your project or build file:

[com.github.robinlahtinen/clj-artnet "0.2.0-SNAPSHOT"]

Topics

Namespaces

clj-artnet

Facilities for Art-Net 4 protocol communication.

clj-artnet.impl.protocol.addressing

Port-Address logic (Art-Net 4).

clj-artnet.impl.protocol.codec.compiler

Spec-driven codec compiler for Art-Net 4.

clj-artnet.impl.protocol.codec.constants

Art-Net 4 protocol constants, opcodes, and lookup tables. Single source of truth for all protocol-level values derived from the Art-Net 4 specification.

clj-artnet.impl.protocol.codec.dispatch

Central opcode dispatch for Art-Net packet encoding and decoding. Routes to domain-specific handlers while maintaining the original public API contract.

Public variables and functions:

clj-artnet.impl.protocol.codec.domain.common

Common utilities shared across domain encode/decode modules.

clj-artnet.impl.protocol.codec.domain.config

Encode/decode for Config family packets: ArtInput, ArtAddress, ArtIpProg, ArtIpProgReply.

clj-artnet.impl.protocol.codec.domain.data

Encode/decode for Data family packets: ArtDataRequest, ArtDataReply.

clj-artnet.impl.protocol.codec.domain.diag

Encode/decode for Diagnostic family packets: ArtDiagData, ArtCommand, ArtTrigger, ArtTimeCode.

clj-artnet.impl.protocol.codec.domain.dmx

Encode/decode for DMX family packets: ArtDmx, ArtNzs, ArtVlc, ArtSync. These are the hot-path packets that use flyweight types for zero allocation.

clj-artnet.impl.protocol.codec.domain.firmware

Encode/decode for Firmware family packets: ArtFirmwareMaster, ArtFirmwareReply.

clj-artnet.impl.protocol.codec.domain.poll

Encode/decode for Poll family packets: ArtPoll, ArtPollReply.

clj-artnet.impl.protocol.codec.domain.rdm

Encode/decode for RDM family packets: ArtRdm, ArtRdmSub, ArtTodRequest, ArtTodData, ArtTodControl.

clj-artnet.impl.protocol.codec.primitives

Low-level buffer read/write primitives for Art-Net codec. All functions operate on java.nio.ByteBuffer instances.

clj-artnet.impl.protocol.codec.spec

Declarative packet specifications for Art-Net 4.

clj-artnet.impl.protocol.codec.types

Flyweight packet types for zero-allocation hot paths. ArtDmx and ArtNzs packets use these types to provide map-like access without allocating intermediate data structures.

Public variables and functions:

clj-artnet.impl.protocol.data

Helpers for ArtDataRequest/Reply configuration.

Public variables and functions:

clj-artnet.impl.protocol.diagnostics

Diagnostics logic (Art-Net 4).

clj-artnet.impl.protocol.discovery

ArtPoll/ArtPollReply handling (Art-Net 4).

clj-artnet.impl.protocol.dmx

Pure DMX merge and processing logic (Art-Net 4).

clj-artnet.impl.protocol.dmx-helpers

DMX logic helpers: sync, failsafe, merge (Art-Net 4).

clj-artnet.impl.protocol.effects

Pure data constructors for Art-Net protocol effects.

clj-artnet.impl.protocol.firmware

Art-Net firmware upload coordination.

clj-artnet.impl.protocol.input

ArtInput paging and selection logic.

clj-artnet.impl.protocol.lifecycle

State lifecycle management: initialization and cap sync.

clj-artnet.impl.protocol.machine

Pure Art-Net protocol state machine.

clj-artnet.impl.protocol.node-state

Manages Art-Net node state, including normalization, paging, and status bits.

clj-artnet.impl.protocol.poll

Helpers for ArtPoll discovery configuration and reply-on-change logic.

clj-artnet.impl.protocol.programming

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

clj-artnet.impl.protocol.rdm.discovery

Art-Net RDM/TOD helpers for the impl architecture. Maintains a lightweight Table-of-Devices snapshot and subscriber registry so the logic coordinator can focus on orchestration.

clj-artnet.impl.protocol.rdm.transport

ArtRdm and ArtRdmSub transport validation and helpers per Art-Net 4 spec.

clj-artnet.impl.protocol.state

State schema and initialization (Art-Net 4).

clj-artnet.impl.protocol.sync

ArtSync handling for Art-Net 4 protocol.

clj-artnet.impl.protocol.timing

Timing utilities for deterministic testing.

Public variables and functions:

clj-artnet.impl.protocol.triggers

ArtTrigger and ArtCommand processing per Art-Net 4 specification.

clj-artnet.impl.shell.buffers

Pools direct ByteBuffers for zero-allocation UDP I/O.

Public variables and functions:

clj-artnet.impl.shell.commands

Constructs and injects commands (DMX, RDM, State) into the node’s flow loop.

clj-artnet.impl.shell.effects

Translates pure Art-Net protocol effects into actionable IO descriptors.

Public variables and functions:

clj-artnet.impl.shell.graph

Flow graph construction for the Art-Net node runtime.

Public variables and functions:

clj-artnet.impl.shell.lifecycle

Node lifecycle management (Shell Layer).

clj-artnet.impl.shell.net

Utilities for Art-Net network I/O, including address coercion and channel configuration.

clj-artnet.impl.shell.policy

Art-Net 4 protocol policy enforcement.

clj-artnet.impl.shell.receiver

Process handling UDP reception and packet decoding.

Public variables and functions:

clj-artnet.impl.shell.sender

Process handling UDP transmission and action dispatch.

Public variables and functions:

clj-artnet.impl.shell.state

State snapshot/application utilities for running Art-Net nodes.

Public variables and functions:

clj-artnet.impl.shell.system

System lifecycle and runtime management/integration.