1
0
Fork 0
A collection of C++ libraries for Lighting Control Protocols, focusing on ESTA sponsored ANSI standards.
Go to file
Kevin Matz b6300cf80b handle ArtIpProg packets 2023-05-22 10:16:20 -04:00
docs use a flat light-mode doxygen theme 2023-04-25 12:13:28 -04:00
example connect unfinished actions to todo notes 2023-04-24 17:04:08 -04:00
lib consider native byte order when interpreting data 2023-05-18 14:38:32 -04:00
platform immitate the C++20 byteorder enum 2023-05-18 14:37:50 -04:00
protocol handle ArtIpProg packets 2023-05-22 10:16:20 -04:00
test add loopback test for OSC #bundle 2023-05-16 08:44:10 -04:00
.gitignore build with cmake 2021-05-27 15:42:48 -04:00
.gitmodules use a flat light-mode doxygen theme 2023-04-25 12:13:28 -04:00
CMakeLists.txt unify project version 2023-04-03 08:57:54 -04:00
LICENSE extend the copyright year 2022-12-05 11:26:03 -05:00
README.md documentation cleanup 2023-04-25 10:25:54 -04:00

README.md

OpenLCP

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

ESTA Protocols Block Diagram

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;

Architecture Flowchart

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.

PDU Hierarch Flowchart

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
ACN Session Data Transport Protocol (SDT) E1.17 i/o
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
EPI 18 - Operation of SDT on UDP Networks E1.17
EPI 19 - ACN Discovery on IP Networks E1.17 Names
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 Data/Discovery
sACN Receiver E1.31
sACN Source E1.31
sACN Data E1.31
sACN Sync E1.31 Rx
sACN Discovery E1.31
sACN Preview E1.31 -
RDMNet E1.33 i/o
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

Non-Standard Protocols

Protocol Designer Version Implementation Status
Art-Net Artistic Licence Holdings Ltd. Protocol 4 v1.4
OSC Open Sound Control Spec 1.1

Dependent Protocols

Protocol Name Standard Referenced By Implementation Status
Universally Unique Identifier (UUID) RFC 4122 RLP, DDL Partial
Service Location Protocol (SLP) RFC 2609 EPI 19
Trivial File Transfer Protocol (TFTP) RFC 1350 EPI 25
Network Time Protocol (NTP) RFC 5909 OSC
Serial Line Internet Protocol (SLIP) RFC 1055 OSC

License

Copyright © 2020-2023 Kevin Matz

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.