OpenLCP/sacn
2021-07-28 10:37:33 -04:00
..
data.cpp frame_header write operator 2021-07-26 22:48:48 -04:00
data.h frame_header write operator 2021-07-26 22:48:48 -04:00
extended.cpp input stream overload operators 2021-07-26 13:34:11 -04:00
extended.h input stream overload operators 2021-07-26 13:34:11 -04:00
node.cpp implicit public base constructors 2021-06-21 10:25:09 -04:00
node.h class structure for sACN transmitter and tranciever 2021-06-02 09:21:24 -04:00
README.md import from WiFlash 2021-05-27 10:59:22 -04:00
receiver.cpp doc updates 2021-06-22 21:26:03 -04:00
receiver.h source can create and terminate universes 2021-06-20 09:12:14 -04:00
sacn.h import from WiFlash 2021-05-27 10:59:22 -04:00
source.cpp seperate termination from ending semantics 2021-06-20 09:35:56 -04:00
source.h seperate termination from ending semantics 2021-06-20 09:35:56 -04:00
universe.cpp make it explicit when RTTI is beneficial 2021-07-28 10:37:33 -04:00
universe.h allow source to be directly modified 2021-06-20 09:35:03 -04:00

Library for E1.31 sACN

Lightweight streaming protocol for transport of DMX512 using ACN

Top level include

Include sacn.h for full protocol support.

#include "sacn.h"

Requirements

Expects the parent directory to contain the acn and dmx libraries.

Logical components

Protocol Handling

  • sacn.h: [SACN] protocol constants.
  • data.h: [SACN::DATA] protocol support for VECTOR_ROOT_E131_DATA packets.
  • extended.h: [SACN::EXTENDED] protocol support for VECTOR_ROOT_E131_EXTENDED packets

Data Classes

  • universe.h: [SACN::Universe] A set of up to 512 data slots identified by universe number. Note: In E1.31 there may be multiple sources for a universe.

For protocol agnostic universe refer to the base class, DMX::Universe

  • receiver.h: [SACN::Receiver] A receiver is the intended target of information from a source. A receiver may listen on multiple universes.
  • receiver-esp.h: [SACN::EspReceiver] A referance implimention, derived from SACN::Receiver for use with ESP devices and Arduino.

Usage with Arduino

Include receiver-esp.h at the top of your sketch.

#include "src/lib/sacn/receiver-esp.h"

Create a receiver object.

EspReceiver * e131 = new EspReceiver();

In setup, subscribe to a universe an register a callback for data activity.

setup() { e131->subscribe(1); e131->universe(1)->onData(std::bind(&universeHandler, std::placeholders::_1)); }

Write a handler function with the follow signature (returns void, requires 1 argument, a Universe pointer):

void universeHandler(Universe * universe) { do something... }