Skip to content

File syn_dmx512.h

FileList > proto > syn_dmx512.h

Go to the source code of this file

USITT DMX512-A Stage & Architectural Lighting Protocol Stack. More...

  • #include "../common/syn_defs.h"
  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_DMX512_Master
DMX512 Master Handle.
struct SYN_DMX512_Slave
DMX512 Slave Handle.

Public Types

Type Name
enum SYN_DMX512_RxState
DMX512 Receiver State Machine States.

Public Functions

Type Name
size_t syn_dmx512_master_build_frame (const SYN_DMX512_Master * master, uint8_t * out_buf, size_t max_len)
Build DMX packet payload (Start Code + Channel Slots).
uint8_t syn_dmx512_master_get_channel (const SYN_DMX512_Master * master, uint16_t channel)
Get channel value (1-indexed channel, 1..512).
void syn_dmx512_master_init (SYN_DMX512_Master * master, uint16_t num_channels)
Initialize DMX512 Master engine.
SYN_Status syn_dmx512_master_set_channel (SYN_DMX512_Master * master, uint16_t channel, uint8_t value)
Set channel value (1-indexed channel, 1..512).
uint8_t syn_dmx512_slave_get_channel (const SYN_DMX512_Slave * slave, uint16_t offset)
Read channel value from local slave footprint (0-indexed offset).
void syn_dmx512_slave_init (SYN_DMX512_Slave * slave, uint16_t start_address, uint16_t footprint)
Initialize DMX512 Slave engine.
bool syn_dmx512_slave_is_updated (SYN_DMX512_Slave * slave)
Check if a complete DMX packet was received since last query.
void syn_dmx512_slave_rx_break (SYN_DMX512_Slave * slave)
Signal line Break event to Slave engine (e.g. from UART framing error interrupt).
void syn_dmx512_slave_rx_byte (SYN_DMX512_Slave * slave, uint8_t byte)
Ingest incoming byte stream into Slave engine.

Macros

Type Name
define SYN_DMX512_BAUD_RATE 250000UL
define SYN_DMX512_MAX_CHANNELS 512U
DMX512 Protocol Constants.
define SYN_DMX512_START_CODE_NULL 0x00U

Detailed Description

Provides non-blocking, zero-malloc DMX512 Master transmitter and Slave receiver engines supporting standard 512-channel universes, start code filtering, start address slot mapping, and UART framing breaking.

Public Types Documentation

enum SYN_DMX512_RxState

DMX512 Receiver State Machine States.

enum SYN_DMX512_RxState {
    SYN_DMX512_STATE_WAIT_BREAK = 0,
    SYN_DMX512_STATE_WAIT_START,
    SYN_DMX512_STATE_READ_SLOTS
};


Public Functions Documentation

function syn_dmx512_master_build_frame

Build DMX packet payload (Start Code + Channel Slots).

size_t syn_dmx512_master_build_frame (
    const SYN_DMX512_Master * master,
    uint8_t * out_buf,
    size_t max_len
) 

Parameters:

  • master Master handle.
  • out_buf Output buffer for frame payload.
  • max_len Maximum capacity of out_buf.

Returns:

Number of payload bytes written (1 + num_channels).


function syn_dmx512_master_get_channel

Get channel value (1-indexed channel, 1..512).

uint8_t syn_dmx512_master_get_channel (
    const SYN_DMX512_Master * master,
    uint16_t channel
) 

Parameters:

  • master Master handle.
  • channel Channel index (1..512).

Returns:

8-bit slot value.


function syn_dmx512_master_init

Initialize DMX512 Master engine.

void syn_dmx512_master_init (
    SYN_DMX512_Master * master,
    uint16_t num_channels
) 

Parameters:

  • master Master handle.
  • num_channels Active universe length (1..512, default 512).

function syn_dmx512_master_set_channel

Set channel value (1-indexed channel, 1..512).

SYN_Status syn_dmx512_master_set_channel (
    SYN_DMX512_Master * master,
    uint16_t channel,
    uint8_t value
) 

Parameters:

  • master Master handle.
  • channel Channel index (1..512).
  • value 8-bit slot value (0..255).

Returns:

SYN_OK on success, error code on invalid channel.


function syn_dmx512_slave_get_channel

Read channel value from local slave footprint (0-indexed offset).

uint8_t syn_dmx512_slave_get_channel (
    const SYN_DMX512_Slave * slave,
    uint16_t offset
) 

Parameters:

  • slave Slave handle.
  • offset Footprint channel offset (0 .. footprint - 1).

Returns:

Channel value byte.


function syn_dmx512_slave_init

Initialize DMX512 Slave engine.

void syn_dmx512_slave_init (
    SYN_DMX512_Slave * slave,
    uint16_t start_address,
    uint16_t footprint
) 

Parameters:

  • slave Slave handle.
  • start_address Start channel address (1..512).
  • footprint Channel footprint length (e.g. 4 for 4-channel fixture).

function syn_dmx512_slave_is_updated

Check if a complete DMX packet was received since last query.

bool syn_dmx512_slave_is_updated (
    SYN_DMX512_Slave * slave
) 

Parameters:

  • slave Slave handle.

Returns:

true if updated, false otherwise.


function syn_dmx512_slave_rx_break

Signal line Break event to Slave engine (e.g. from UART framing error interrupt).

void syn_dmx512_slave_rx_break (
    SYN_DMX512_Slave * slave
) 

Parameters:

  • slave Slave handle.

function syn_dmx512_slave_rx_byte

Ingest incoming byte stream into Slave engine.

void syn_dmx512_slave_rx_byte (
    SYN_DMX512_Slave * slave,
    uint8_t byte
) 

Parameters:

  • slave Slave handle.
  • byte Incoming byte from UART rx.

Macro Definition Documentation

define SYN_DMX512_BAUD_RATE

#define SYN_DMX512_BAUD_RATE `250000UL`

define SYN_DMX512_MAX_CHANNELS

DMX512 Protocol Constants.

#define SYN_DMX512_MAX_CHANNELS `512U`


define SYN_DMX512_START_CODE_NULL

#define SYN_DMX512_START_CODE_NULL `0x00U`

Standard dimmer start code



The documentation for this class was generated from the following file src/syntropic/proto/syn_dmx512.h