27#ifndef SACN_MERGE_RECEIVER_H_
28#define SACN_MERGE_RECEIVER_H_
55#define SACN_MERGE_RECEIVER_INVALID SACN_RECEIVER_INVALID
274#define SACN_MERGE_RECEIVER_CONFIG_DEFAULT_INIT \
276 0, {NULL, NULL, NULL, NULL}, {1, DMX_ADDRESS_COUNT}, SACN_RECEIVER_INFINITE_SOURCES, true, kSacnIpV4AndIpV6 \
326 size_t num_per_receiver_netint_lists);
328 size_t netints_size);
sACN DMX Merger API definitions
sacn_ip_support_t
Definition common.h:71
#define SACN_SOURCE_NAME_MAX_LEN
The maximum length of an sACN source name, including the null-terminator.
Definition common.h:50
uint16_t sacn_remote_source_t
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:410
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:507
etcpal_error_t sacn_merge_receiver_destroy(sacn_merge_receiver_t handle)
Destroy a sACN Merge Receiver instance.
Definition merge_receiver.c:205
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. TODO: Not yet implem...
Definition merge_receiver.c:356
struct SacnMergeReceiverConfig SacnMergeReceiverConfig
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:447
struct SacnMergeReceiverNetintList SacnMergeReceiverNetintList
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:146
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:165
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:272
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:197
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:215
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:122
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:228
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:179
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:253
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:526
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:295
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:89
struct SacnMergeReceiverCallbacks SacnMergeReceiverCallbacks
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. TODO: Not yet impleme...
Definition merge_receiver.c:376
void sacn_merge_receiver_config_init(SacnMergeReceiverConfig *config)
Initialize an sACN Merge Receiver Config struct to default values.
Definition merge_receiver.c:55
int sacn_merge_receiver_t
Definition merge_receiver.h:53
struct SacnMergeReceiverSource SacnMergeReceiverSource
struct SacnRecvMergedData SacnRecvMergedData
sACN Receiver API definitions
Definition receiver.h:138
Definition merge_receiver.h:233
SacnMergeReceiverMergedDataCallback universe_data
Definition merge_receiver.h:234
SacnMergeReceiverSamplingPeriodStartedCallback sampling_period_started
Definition merge_receiver.h:237
SacnMergeReceiverSourceLimitExceededCallback source_limit_exceeded
Definition merge_receiver.h:240
void * callback_context
Definition merge_receiver.h:241
SacnMergeReceiverSourcePapLostCallback source_pap_lost
Definition merge_receiver.h:239
SacnMergeReceiverSamplingPeriodEndedCallback sampling_period_ended
Definition merge_receiver.h:238
SacnMergeReceiverNonDmxCallback universe_non_dmx
Definition merge_receiver.h:235
SacnMergeReceiverSourcesLostCallback sources_lost
Definition merge_receiver.h:236
Definition merge_receiver.h:246
SacnRecvUniverseSubrange footprint
Definition merge_receiver.h:257
uint16_t universe_id
Definition merge_receiver.h:250
int source_count_max
Definition merge_receiver.h:262
sacn_ip_support_t ip_supported
Definition merge_receiver.h:270
SacnMergeReceiverCallbacks callbacks
Definition merge_receiver.h:252
bool use_pap
Definition merge_receiver.h:267
Definition merge_receiver.h:281
bool no_netints
Definition merge_receiver.h:291
size_t num_netints
Definition merge_receiver.h:289
sacn_merge_receiver_t handle
Definition merge_receiver.h:283
SacnMcastInterface * netints
Definition merge_receiver.h:287
Definition merge_receiver.h:296
bool per_address_priorities_active
Definition merge_receiver.h:306
EtcPalUuid cid
Definition merge_receiver.h:300
EtcPalSockAddr addr
Definition merge_receiver.h:304
char name[SACN_SOURCE_NAME_MAX_LEN]
Definition merge_receiver.h:302
sacn_remote_source_t handle
Definition merge_receiver.h:298
uint8_t universe_priority
Definition merge_receiver.h:308
Definition merge_receiver.h:61
const sacn_remote_source_t * active_sources
Definition merge_receiver.h:90
const uint8_t * levels
Definition merge_receiver.h:73
const uint8_t * priorities
Definition merge_receiver.h:78
size_t num_active_sources
Definition merge_receiver.h:95
uint16_t universe_id
Definition merge_receiver.h:65
SacnRecvUniverseSubrange slot_range
Definition merge_receiver.h:69
const sacn_remote_source_t * owners
Definition merge_receiver.h:84
Definition receiver.h:127