23#ifndef DETERMINISTICESPASYNCWEBSERVER_DMX_H
24#define DETERMINISTICESPASYNCWEBSERVER_DMX_H
33#define DMX_MAX_CHANNELS 512u
34#define DMX_SC_DIMMER 0x00u
37#define RDM_SUB_SC 0x01u
38#define RDM_OVERHEAD 26u
41#define RDM_CC_DISCOVERY 0x10u
42#define RDM_CC_DISCOVERY_RESPONSE 0x11u
43#define RDM_CC_GET 0x20u
44#define RDM_CC_GET_RESPONSE 0x21u
45#define RDM_CC_SET 0x30u
46#define RDM_CC_SET_RESPONSE 0x31u
49#define RDM_RESPONSE_ACK 0x00u
50#define RDM_RESPONSE_ACK_TIMER 0x01u
51#define RDM_RESPONSE_NACK_REASON 0x02u
52#define RDM_RESPONSE_ACK_OVERFLOW 0x03u
55#define RDM_PID_DISC_UNIQUE_BRANCH 0x0001u
56#define RDM_PID_DISC_MUTE 0x0002u
57#define RDM_PID_DISC_UN_MUTE 0x0003u
58#define RDM_PID_SUPPORTED_PARAMETERS 0x0050u
59#define RDM_PID_DEVICE_INFO 0x0060u
60#define RDM_PID_DMX_START_ADDRESS 0x00F0u
61#define RDM_PID_IDENTIFY_DEVICE 0x1000u
69size_t dmx_build(uint8_t *buf,
size_t cap, uint8_t start_code,
const uint8_t *channels, uint16_t n);
75uint8_t dmx_get_channel(
const uint8_t *buf,
size_t len, uint16_t ch);
95uint64_t rdm_uid(uint16_t manufacturer, uint32_t device);
98uint16_t rdm_checksum(
const uint8_t *buf,
size_t len);
104size_t rdm_build(uint8_t *buf,
size_t cap,
const RdmPacket *p,
const uint8_t *pdata, uint8_t pdl);
110bool rdm_parse(
const uint8_t *buf,
size_t len, RdmPacket *out,
size_t *consumed);
User-facing configuration for DeterministicESPAsyncWebServer.