20#ifndef SACN_CPP_DMX_MERGER_H_
21#define SACN_CPP_DMX_MERGER_H_
171 return (levels !=
nullptr);
287 const uint8_t* new_levels,
288 size_t new_levels_count)
380 settings.per_address_priorities,
381 settings.per_address_priorities_active,
382 settings.universe_priority,
384 settings.source_count_max
ETCPAL_CONSTEXPR_14 void Clear()
ETCPAL_CONSTEXPR_14 void SetValue(const ValueType &new_value)
constexpr ValueType value() const
An instance of sACN DMX Merger functionality; see Using the sACN DMX Merger API.
Definition dmx_merger.h:67
const SacnDmxMergerSource * GetSourceInfo(sacn_dmx_merger_source_t source) const
Gets a read-only view of the source data.
Definition dmx_merger.h:261
DmxMerger(DmxMerger &&other)=default
Move a dmx merger instance.
etcpal::Error UpdateUniversePriority(sacn_dmx_merger_source_t source, uint8_t universe_priority)
Updates a source's universe priority and recalculates outputs.
Definition dmx_merger.h:341
etcpal::Error UpdatePap(sacn_dmx_merger_source_t source, const uint8_t *pap, size_t pap_count)
Updates a source's per-address priorities (PAP) and recalculates outputs.
Definition dmx_merger.h:313
constexpr Handle handle() const
Get the current handle to the underlying C DMX merger.
Definition dmx_merger.h:370
etcpal::Error UpdateLevels(sacn_dmx_merger_source_t source, const uint8_t *new_levels, size_t new_levels_count)
Updates a source's levels and recalculates outputs.
Definition dmx_merger.h:286
void Shutdown()
Destroy a merger instance.
Definition dmx_merger.h:204
etcpal::Error Startup(const Settings &settings)
Create a new merger instance.
Definition dmx_merger.h:187
etcpal::Expected< sacn_dmx_merger_source_t > AddSource()
Adds a new source to the merger.
Definition dmx_merger.h:225
etcpal::Error RemoveSource(sacn_dmx_merger_source_t source)
Removes a source from the merger.
Definition dmx_merger.h:246
etcpal::Error RemovePap(sacn_dmx_merger_source_t source)
Removes the per-address priority (PAP) data from the source and recalculate outputs.
Definition dmx_merger.h:360
DmxMerger & operator=(DmxMerger &&other)=default
Move a dmx merger instance.
Definition dmx_merger.h:45
C++ wrapper for the sACN init/deinit functions.
sACN DMX Merger API definitions
const SacnDmxMergerSource * sacn_dmx_merger_get_source(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t source)
Gets a read-only view of the source data.
Definition dmx_merger.c:390
etcpal_error_t sacn_dmx_merger_destroy(sacn_dmx_merger_t handle)
Destroy a merger instance.
Definition dmx_merger.c:258
uint16_t sacn_dmx_merger_source_t
A source handle used by the DMX merger, could represent a remote source or another logical source (e....
Definition dmx_merger.h:72
etcpal_error_t sacn_dmx_merger_update_levels(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t source, const uint8_t *new_levels, size_t new_levels_count)
Updates a source's levels and recalculates outputs.
Definition dmx_merger.c:434
etcpal_error_t sacn_dmx_merger_create(const SacnDmxMergerConfig *config, sacn_dmx_merger_t *handle)
Create a new merger instance.
Definition dmx_merger.c:203
static const sacn_dmx_merger_t kSacnDmxMergerInvalid
An invalid sACN merger handle value.
Definition dmx_merger.h:68
etcpal_error_t sacn_dmx_merger_update_universe_priority(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t source, uint8_t universe_priority)
Updates a source's universe priority and recalculates outputs.
Definition dmx_merger.c:557
int sacn_dmx_merger_t
Each merger has a handle associated with it.
Definition dmx_merger.h:66
etcpal_error_t sacn_dmx_merger_update_pap(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t source, const uint8_t *pap, size_t pap_count)
Updates a source's per-address priorities (PAP) and recalculates outputs.
Definition dmx_merger.c:494
etcpal_error_t sacn_dmx_merger_remove_source(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t source)
Removes a source from the merger.
Definition dmx_merger.c:348
etcpal_error_t sacn_dmx_merger_remove_pap(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t source)
Removes the per-address priority (PAP) data from the source and recalculate outputs.
Definition dmx_merger.c:603
static const sacn_dmx_merger_source_t kSacnDmxMergerSourceInvalid
An invalid DMX merger source handle value.
Definition dmx_merger.h:74
etcpal_error_t sacn_dmx_merger_add_source(sacn_dmx_merger_t merger, sacn_dmx_merger_source_t *source_id)
Adds a new source to the merger.
Definition dmx_merger.c:306
@ kSacnReceiverInfiniteSources
Constant for "infinite" when listening or merging sACN universes.
Definition receiver.h:70
A namespace which contains all C++ language definitions in the sACN library.
Definition common.h:50
A set of configuration information for a merger instance.
Definition dmx_merger.h:78
uint8_t * levels
This is always required to be non-NULL.
Definition dmx_merger.h:84
The current input data for a single source of the merge.
Definition dmx_merger.h:145
A set of configuration settings that a merger needs to initialize.
Definition dmx_merger.h:77
uint8_t * per_address_priorities
This is only allowed to be NULL if and only if SACN_DMX_MERGER_DISABLE_INTERNAL_PAP_BUFFER is 0.
Definition dmx_merger.h:91
bool IsValid() const
Determine whether a DmxMerger Settings instance contains valid data for sACN operation.
Definition dmx_merger.h:169
Settings()=default
Create an empty, invalid data structure by default.
bool * per_address_priorities_active
This is allowed to be NULL.
Definition dmx_merger.h:97
uint8_t * universe_priority
This is allowed to be NULL.
Definition dmx_merger.h:103
uint8_t * levels
This is always required to be non-NULL.
Definition dmx_merger.h:83
sacn_dmx_merger_source_t * owners
This is only allowed to be NULL if and only if SACN_DMX_MERGER_DISABLE_INTERNAL_OWNER_BUFFER is 0.
Definition dmx_merger.h:112
int source_count_max
The maximum number of sources this universe will listen to when using dynamic memory.
Definition dmx_merger.h:114