OpenLCP

A collection of C++ libraries for Lighting Control Protocols, focusing on ESTA sponsored ANSI standards.

# Object Architecture

The library encompases both the structured data being communicated between controllable components, and the control objects that expose the data in meaningful ways, without needing to know or understand the underlying protocols.

## Objects

Control objects are structured thusly;

## Data

Serveral of the ESTA protocols use the E1.17 Protocol Data Unit to transfer data. The `PDU` are a series of nested hierarchical data structures. `PDU` may encapsulate one or more `PDU` of an embedded protocol, or be a data endpoint for that protocol. The following slide describes the relational hierocracy of the `PDU` within `ACN`, `sACN`, `RDMnet`, and `OTP`. While similiar in structure and concept, the `PDU` in `RDMnet` do not inherit directly from the `PDU` in `ACN`, and the `PDU` in `OTP` are notably simpler, as data segments may not be inherited from sibling `PDU` in the data.

# Supported Standards

Protocol Name | Standard | Implementation Status
--- | --- | ---
0 to 10 V Analog Control | E1.3 |
USITT DMX512-A | E1.11 | Data Abstraction
ACN Root Layer Protocol (RLP) | E1.17 | Rx
ACN Session Data Transport Protocol (SDT) | E1.17 |
ACN Device Management Protocol (DMP) | E1.17 | Limited
ACN Device Description Language (DDL) | E1.17 |
EPI 10 - Autogeneration of Multicast Address on IPv4 Networks | E1.17 |
EPI 11 - Retrieval of Device Descriptions from DMP Devices on IPv4 Networks | E1.17 |
EPI 12 - ACN on Homogeneous Ethernet Networks | E1.17 |
EPI 13 - Allocation of Internet Protocol Version 4 Addresses to ACN Hosts | E1.17 |
EPI 15 - ACN Allocation of Multicast Addresses on IPv4 Networks | E1.17 |
EPI 16 - ESTA Registered Names and Identifiers | E1.17 |
EPI 17 - ACN Root Layer Protocol Operation on UDP | E1.17 | Rx
EPI 18 - Operation of SDT on UDP Networks | E1.17 |
EPI 19 - ACN Discovery on IP Networks | E1.17 |
EPI 20 - MTU Size for ACN on IPv4 Networks | E1.17 |
EPI 22 - DDL Core Modules for ACN Devices | E1.17 |
Remote Device Management (RDM) | E1.20 | Responder
RDM Subdevice | E1.20 | ✓
RDM Sensors | E1.20 | ✓
RDM Discovery | E1.20 | ✓
RDM Required PIDs | E1.20 | ✓
RDM Status collection PIDs | E1.20 | ✓
EPI 23 - Device Identification Subdevice | E1.30-1 |
EPI 25 - Time Reference in ACN Systems Using SNTP and NTP | E1.30-3 |
EPI 26 - DDL Extensions for DMX and RDM Devices | E1.30-4 |
EPI 32 - Identification of Draft DDL Modules | E1.30-10 |
EPI 33 - ACN RLP Operation on TCP | E1.30-11 |
Streaming ACN (sACN) | E1.31 | Partial
sACN Receiver | E1.31 | ✓
sACN Source | E1.31 | Limited
sACN Data | E1.31 | ✓
sACN Sync | E1.31 | ✓
sACN Discovery | E1.31 | ✓
sACN Preview | E1.31 | -
RDMNet | E1.33 |
RDM Dimmer Message Sets | E1.37-1 | Normative
RDM IPv4 & DNS Configuration Messages | E1.37-2 | Normative
RDM Gateway & Splitter Configuration Messages | E1.37-7 | Normative

## Dependent Protocols

Protocol Name | Standard | Referenced By | Implementation Status
--- | --- | --- | ---
UUID Universally Unique Identifier | RFC 4122 | RLP, DDL | Partial
Service Location Protocol (SLP) | RFC 2609 | EPI 19 |
Trivial File Transfer Protocol (TFTP) | RFC 1350 | EPI 25 |