sACN  3.0.0
Implementation of ANSI E1.31 (Streaming ACN)
View other versions:
Loading...
Searching...
No Matches
merge_receiver.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2024 ETC Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 ******************************************************************************
16 * This file is a part of sACN. For more information, go to:
17 * https://github.com/ETCLabs/sACN
18 *****************************************************************************/
19
27#ifndef SACN_MERGE_RECEIVER_H_
28#define SACN_MERGE_RECEIVER_H_
29
30#include <stdbool.h>
31#include <stdint.h>
32#include "sacn/receiver.h"
33#include "sacn/dmx_merger.h"
34
48#ifdef __cplusplus
49extern "C" {
50#endif
51
55#define SACN_MERGE_RECEIVER_INVALID SACN_RECEIVER_INVALID
56
97
123 void* context);
124
147 const EtcPalSockAddr* source_addr, const SacnRemoteSource* source_info,
148 const SacnRecvUniverseData* universe_data, void* context);
149
165typedef void (*SacnMergeReceiverSourcesLostCallback)(sacn_merge_receiver_t handle, uint16_t universe,
166 const SacnLostSource* lost_sources, size_t num_lost_sources,
167 void* context);
168
180 void* context);
181
198 void* context);
199
215typedef void (*SacnMergeReceiverSourcePapLostCallback)(sacn_merge_receiver_t handle, uint16_t universe,
216 const SacnRemoteSource* source, void* context);
217
229 void* context);
230
243
246{
247 /********* Required values **********/
248
250 uint16_t universe_id;
253
254 /********* Optional values **********/
255
258
263
268
272
274#define SACN_MERGE_RECEIVER_CONFIG_DEFAULT_INIT \
275 { \
276 0, {NULL, NULL, NULL, NULL}, {1, DMX_ADDRESS_COUNT}, SACN_RECEIVER_INFINITE_SOURCES, true, kSacnIpV4AndIpV6 \
277 }
278
293
310
312
314 const SacnNetintConfig* netint_config);
320 const SacnRecvUniverseSubrange* new_footprint);
322 const SacnRecvUniverseSubrange* new_footprint);
325 const SacnNetintConfig* sys_netint_config, const SacnMergeReceiverNetintList* per_receiver_netint_lists,
326 size_t num_per_receiver_netint_lists);
328 size_t netints_size);
330 sacn_remote_source_t source_handle, SacnMergeReceiverSource* source_info);
331
332#ifdef __cplusplus
333}
334#endif
335
340#endif /* SACN_MERGE_RECEIVER_H_ */
sACN DMX Merger API definitions
etcpal_error_t
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 common.h:85
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 common.h:102
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:89
Definition receiver.h:80
Definition receiver.h:127