27#ifndef SACN_MERGE_RECEIVER_H_
28#define SACN_MERGE_RECEIVER_H_
49#define SACN_MERGE_RECEIVER_MAX_SLOTS \
50 ((SACN_DMX_MERGER_MAX_SLOTS > kSacnDmxAddressCount) ? kSacnDmxAddressCount : SACN_DMX_MERGER_MAX_SLOTS)
175 size_t num_lost_sources,
288#define SACN_MERGE_RECEIVER_CONFIG_DEFAULT_INIT \
289 {0, {NULL, NULL, NULL, NULL}, {1, SACN_MERGE_RECEIVER_MAX_SLOTS}, kSacnReceiverInfiniteSources, \
290 true, kSacnIpV4AndIpV6}
336 uint16_t new_universe_id,
342 size_t num_per_receiver_netint_lists);
345 size_t netints_size);
sACN DMX Merger API definitions
sacn_ip_support_t
This enum defines how the API module will use IPv4 and IPv6 networking.
Definition common.h:75
uint16_t sacn_remote_source_t
A source discovered on an sACN network that has a CID - used by Receiver and Merge Receiver.
Definition common.h:47
@ kSacnSourceNameMaxLen
The maximum length of an sACN source name, including the null-terminator.
Definition common.h:58
etcpal_error_t sacn_merge_receiver_reset_networking(const SacnNetintConfig *sys_netint_config)
Resets underlying network sockets and packet receipt state, determines network interfaces for all mer...
Definition merge_receiver.c:436
size_t sacn_merge_receiver_get_network_interfaces(sacn_merge_receiver_t handle, EtcPalMcastNetintId *netints, size_t netints_size)
Obtain a list of a merge receiver's network interfaces.
Definition merge_receiver.c:534
etcpal_error_t sacn_merge_receiver_destroy(sacn_merge_receiver_t handle)
Destroy a sACN Merge Receiver instance.
Definition merge_receiver.c:221
etcpal_error_t sacn_merge_receiver_change_footprint(sacn_merge_receiver_t handle, const SacnRecvUniverseSubrange *new_footprint)
Change the footprint within the universe on which an sACN receiver is listening.
Definition merge_receiver.c:381
struct SacnMergeReceiverConfig SacnMergeReceiverConfig
A set of configuration information for an sACN merge receiver.
etcpal_error_t sacn_merge_receiver_reset_networking_per_receiver(const SacnNetintConfig *sys_netint_config, const SacnMergeReceiverNetintList *per_receiver_netint_lists, size_t num_per_receiver_netint_lists)
Resets underlying network sockets and packet receipt state, determines network interfaces for each me...
Definition merge_receiver.c:473
struct SacnMergeReceiverNetintList SacnMergeReceiverNetintList
A set of network interfaces for a particular merge receiver.
void(* SacnMergeReceiverNonDmxCallback)(sacn_merge_receiver_t receiver_handle, const EtcPalSockAddr *source_addr, const SacnRemoteSource *source_info, const SacnRecvUniverseData *universe_data, void *context)
Notify that a non-data packet has been received.
Definition merge_receiver.h:151
void(* SacnMergeReceiverSourcesLostCallback)(sacn_merge_receiver_t handle, uint16_t universe, const SacnLostSource *lost_sources, size_t num_lost_sources, void *context)
Notify that one or more sources have entered a source loss state.
Definition merge_receiver.h:172
etcpal_error_t sacn_merge_receiver_get_footprint(sacn_merge_receiver_t handle, SacnRecvUniverseSubrange *footprint)
Get the footprint within the universe on which a sACN Merge Receiver is currently listening.
Definition merge_receiver.c:297
void(* SacnMergeReceiverSamplingPeriodEndedCallback)(sacn_merge_receiver_t handle, uint16_t universe, void *context)
Notify that a merge receiver's sampling period has ended.
Definition merge_receiver.h:207
void(* SacnMergeReceiverSourcePapLostCallback)(sacn_merge_receiver_t handle, uint16_t universe, const SacnRemoteSource *source, void *context)
Notify that a source has stopped transmission of per-address priority packets.
Definition merge_receiver.h:226
void(* SacnMergeReceiverMergedDataCallback)(sacn_merge_receiver_t handle, const SacnRecvMergedData *merged_data, void *context)
Notify that a new data packet has been received and merged.
Definition merge_receiver.h:126
void(* SacnMergeReceiverSourceLimitExceededCallback)(sacn_merge_receiver_t handle, uint16_t universe, void *context)
Notify that more than the configured maximum number of sources are currently sending on the universe ...
Definition merge_receiver.h:241
void(* SacnMergeReceiverSamplingPeriodStartedCallback)(sacn_merge_receiver_t handle, uint16_t universe, void *context)
Notify that a merge receiver's sampling period has begun.
Definition merge_receiver.h:188
etcpal_error_t sacn_merge_receiver_get_universe(sacn_merge_receiver_t handle, uint16_t *universe_id)
Get the universe on which a sACN Merge Receiver is currently listening.
Definition merge_receiver.c:278
etcpal_error_t sacn_merge_receiver_get_source(sacn_merge_receiver_t merge_receiver_handle, sacn_remote_source_t source_handle, SacnMergeReceiverSource *source_info)
Gets a copy of the information for the specified merge receiver source.
Definition merge_receiver.c:554
etcpal_error_t sacn_merge_receiver_change_universe(sacn_merge_receiver_t handle, uint16_t new_universe_id)
Change the universe on which a sACN Merge Receiver is listening.
Definition merge_receiver.c:320
etcpal_error_t sacn_merge_receiver_create(const SacnMergeReceiverConfig *config, sacn_merge_receiver_t *handle, const SacnNetintConfig *netint_config)
Create a new sACN Merge Receiver to listen and merge sACN data on a universe.
Definition merge_receiver.c:99
struct SacnMergeReceiverCallbacks SacnMergeReceiverCallbacks
A set of callback functions that the library uses to notify the application about sACN events.
etcpal_error_t sacn_merge_receiver_change_universe_and_footprint(sacn_merge_receiver_t handle, uint16_t new_universe_id, const SacnRecvUniverseSubrange *new_footprint)
Change the universe and footprint on which an sACN merge receiver is listening.
Definition merge_receiver.c:401
void sacn_merge_receiver_config_init(SacnMergeReceiverConfig *config)
Initialize an sACN Merge Receiver Config struct to default values.
Definition merge_receiver.c:65
int sacn_merge_receiver_t
A handle to an sACN Merge Receiver.
Definition merge_receiver.h:57
struct SacnMergeReceiverSource SacnMergeReceiverSource
Information about a remote sACN source being tracked by a merge receiver.
static const sacn_merge_receiver_t kSacnMergeReceiverInvalid
An invalid sACN Merge Receiver handle value.
Definition merge_receiver.h:59
struct SacnRecvMergedData SacnRecvMergedData
Newly updated merged data within the configured footprint.
sACN Receiver API definitions
Information about a sACN source that was lost.
Definition receiver.h:153
On input, this structure is used to indicate a network interface to use.
Definition common.h:89
A set of callback functions that the library uses to notify the application about sACN events.
Definition merge_receiver.h:247
SacnMergeReceiverSourceLimitExceededCallback source_limit_exceeded
Optional.
Definition merge_receiver.h:254
SacnMergeReceiverSamplingPeriodStartedCallback sampling_period_started
Optional.
Definition merge_receiver.h:251
SacnMergeReceiverMergedDataCallback universe_data
Required.
Definition merge_receiver.h:248
SacnMergeReceiverSourcesLostCallback sources_lost
Optional.
Definition merge_receiver.h:250
void * callback_context
(optional) Pointer to opaque data passed back with each callback.
Definition merge_receiver.h:255
SacnMergeReceiverSourcePapLostCallback source_pap_lost
Optional.
Definition merge_receiver.h:253
SacnMergeReceiverSamplingPeriodEndedCallback sampling_period_ended
Optional.
Definition merge_receiver.h:252
SacnMergeReceiverNonDmxCallback universe_non_dmx
Optional.
Definition merge_receiver.h:249
A set of configuration information for an sACN merge receiver.
Definition merge_receiver.h:260
int source_count_max
The maximum number of sources this universe will listen to.
Definition merge_receiver.h:276
SacnRecvUniverseSubrange footprint
The footprint within the universe to monitor.
Definition merge_receiver.h:271
uint16_t universe_id
Universe number on which to listen for sACN.
Definition merge_receiver.h:264
bool use_pap
If true, this allows per-address priorities (if any are received) to be fed into the merger.
Definition merge_receiver.h:281
SacnMergeReceiverCallbacks callbacks
The callbacks this merge receiver will use to notify the application of events.
Definition merge_receiver.h:266
sacn_ip_support_t ip_supported
What IP networking the merge_receiver will support.
Definition merge_receiver.h:284
A set of network interfaces for a particular merge receiver.
Definition merge_receiver.h:294
size_t num_netints
The size of netints, or 0 if netints is NULL.
Definition merge_receiver.h:302
bool no_netints
If this is true, this merge receiver will not use any network interfaces for multicast traffic.
Definition merge_receiver.h:304
SacnMcastInterface * netints
If non-NULL, this is the list of interfaces the application wants to use, and the status codes are fi...
Definition merge_receiver.h:300
sacn_merge_receiver_t handle
The merge receiver's handle.
Definition merge_receiver.h:296
Information about a remote sACN source being tracked by a merge receiver.
Definition merge_receiver.h:309
char name[kSacnSourceNameMaxLen]
The name of the source.
Definition merge_receiver.h:315
EtcPalUuid cid
The Component Identifier (CID) of the source.
Definition merge_receiver.h:313
uint8_t universe_priority
The source's current per-universe priority.
Definition merge_receiver.h:321
EtcPalSockAddr addr
The network address from which the most recent sACN packet originated.
Definition merge_receiver.h:317
bool per_address_priorities_active
Whether the source is sending per-address priority packets, or only per-universe.
Definition merge_receiver.h:319
sacn_remote_source_t handle
The handle of the source.
Definition merge_receiver.h:311
Network interface configuration information to give the sACN library.
Definition common.h:114
Newly updated merged data within the configured footprint.
Definition merge_receiver.h:65
const uint8_t * levels
The merged levels for the universe at the location indicated by slot_range.
Definition merge_receiver.h:77
uint16_t universe_id
The sACN Universe identifier.
Definition merge_receiver.h:69
const sacn_remote_source_t * owners
The source handles of the owners of the slots within slot_range.
Definition merge_receiver.h:88
size_t num_active_sources
The current number of sources considered to be active on the current universe (and thus the size of a...
Definition merge_receiver.h:99
const sacn_remote_source_t * active_sources
The handles of all sources considered to be active on the current universe.
Definition merge_receiver.h:94
SacnRecvUniverseSubrange slot_range
The range of slots represented by this data (the configured footprint).
Definition merge_receiver.h:73
const uint8_t * priorities
The merged per-address priorities for the universe at the location indicated by slot_range.
Definition merge_receiver.h:82
A complete description of newly received universe data within the configured footprint.
Definition receiver.h:92
Defines a range of addresses within a sACN universe.
Definition receiver.h:83
Information about a remote sACN source being tracked by a receiver.
Definition receiver.h:142