init
This commit is contained in:
455
unitree_SDK/include/dds/ddsi/ddsi_config.h
Normal file
455
unitree_SDK/include/dds/ddsi/ddsi_config.h
Normal file
@@ -0,0 +1,455 @@
|
||||
/*
|
||||
* Copyright(c) 2006 to 2022 ZettaScale Technology and others
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License v. 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
||||
* v. 1.0 which is available at
|
||||
* http://www.eclipse.org/org/documents/edl-v10.php.
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
||||
*/
|
||||
#ifndef DDSI_CONFIG_H
|
||||
#define DDSI_CONFIG_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "dds/export.h"
|
||||
#include "dds/features.h"
|
||||
#include "dds/ddsrt/sched.h"
|
||||
#include "dds/ddsrt/random.h"
|
||||
#include "dds/ddsi/ddsi_portmapping.h"
|
||||
#include "dds/ddsi/ddsi_locator.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ddsi_config;
|
||||
|
||||
/**
|
||||
* @brief Default-initialize a configuration (unstable)
|
||||
*
|
||||
* @param[out] cfg The configuration struct to be initialized.
|
||||
*/
|
||||
DDS_EXPORT void ddsi_config_init_default (struct ddsi_config *cfg);
|
||||
|
||||
enum ddsi_standards_conformance {
|
||||
DDSI_SC_PEDANTIC,
|
||||
DDSI_SC_STRICT,
|
||||
DDSI_SC_LAX
|
||||
};
|
||||
|
||||
#define DDSI_SC_PEDANTIC_P(config) ((config).standards_conformance <= DDSI_SC_PEDANTIC)
|
||||
#define DDSI_SC_STRICT_P(config) ((config).standards_conformance <= DDSI_SC_STRICT)
|
||||
|
||||
enum ddsi_besmode {
|
||||
DDSI_BESMODE_FULL,
|
||||
DDSI_BESMODE_WRITERS,
|
||||
DDSI_BESMODE_MINIMAL
|
||||
};
|
||||
|
||||
enum ddsi_retransmit_merging {
|
||||
DDSI_REXMIT_MERGE_NEVER,
|
||||
DDSI_REXMIT_MERGE_ADAPTIVE,
|
||||
DDSI_REXMIT_MERGE_ALWAYS
|
||||
};
|
||||
|
||||
enum ddsi_boolean_default {
|
||||
DDSI_BOOLDEF_DEFAULT,
|
||||
DDSI_BOOLDEF_FALSE,
|
||||
DDSI_BOOLDEF_TRUE
|
||||
};
|
||||
|
||||
#ifdef DDS_HAS_SHM
|
||||
enum ddsi_shm_loglevel {
|
||||
DDSI_SHM_OFF = 0,
|
||||
DDSI_SHM_FATAL,
|
||||
DDSI_SHM_ERROR,
|
||||
DDSI_SHM_WARN,
|
||||
DDSI_SHM_INFO,
|
||||
DDSI_SHM_DEBUG,
|
||||
DDSI_SHM_VERBOSE
|
||||
};
|
||||
#endif
|
||||
|
||||
#define DDSI_PARTICIPANT_INDEX_AUTO -1
|
||||
#define DDSI_PARTICIPANT_INDEX_NONE -2
|
||||
|
||||
/* ddsi_config_listelem must be an overlay for all used listelem types */
|
||||
struct ddsi_config_listelem {
|
||||
struct ddsi_config_listelem *next;
|
||||
};
|
||||
|
||||
#ifdef DDS_HAS_NETWORK_PARTITIONS
|
||||
struct networkpartition_address {
|
||||
struct networkpartition_address *next;
|
||||
ddsi_locator_t loc;
|
||||
};
|
||||
|
||||
struct ddsi_config_networkpartition_listelem {
|
||||
struct ddsi_config_networkpartition_listelem *next;
|
||||
char *name;
|
||||
char *address_string;
|
||||
struct networkpartition_address *uc_addresses;
|
||||
struct networkpartition_address *asm_addresses;
|
||||
#ifdef DDS_HAS_SSM
|
||||
struct networkpartition_address *ssm_addresses;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct ddsi_config_ignoredpartition_listelem {
|
||||
struct ddsi_config_ignoredpartition_listelem *next;
|
||||
char *DCPSPartitionTopic;
|
||||
};
|
||||
|
||||
struct ddsi_config_partitionmapping_listelem {
|
||||
struct ddsi_config_partitionmapping_listelem *next;
|
||||
char *networkPartition;
|
||||
char *DCPSPartitionTopic;
|
||||
struct ddsi_config_networkpartition_listelem *partition;
|
||||
};
|
||||
#endif /* DDS_HAS_NETWORK_PARTITIONS */
|
||||
|
||||
#ifdef DDS_HAS_NETWORK_CHANNELS
|
||||
struct ddsi_config_channel_listelem {
|
||||
struct ddsi_config_channel_listelem *next;
|
||||
char *name;
|
||||
int priority;
|
||||
int64_t resolution;
|
||||
#ifdef DDS_HAS_BANDWIDTH_LIMITING
|
||||
uint32_t data_bandwidth_limit;
|
||||
uint32_t auxiliary_bandwidth_limit;
|
||||
#endif
|
||||
int diffserv_field;
|
||||
struct thread_state *channel_reader_thrst; /* keeping an handle to the running thread for this channel */
|
||||
struct nn_dqueue *dqueue; /* The handle of teh delivery queue servicing incoming data for this channel*/
|
||||
struct xeventq *evq; /* The handle of the event queue servicing this channel*/
|
||||
uint32_t queueId; /* the index of the networkqueue serviced by this channel*/
|
||||
struct ddsi_tran_conn * transmit_conn; /* the connection used for sending data out via this channel */
|
||||
};
|
||||
#endif /* DDS_HAS_NETWORK_CHANNELS */
|
||||
|
||||
struct ddsi_config_maybe_int32 {
|
||||
int isdefault;
|
||||
int32_t value;
|
||||
};
|
||||
|
||||
struct ddsi_config_maybe_uint32 {
|
||||
int isdefault;
|
||||
uint32_t value;
|
||||
};
|
||||
|
||||
struct ddsi_config_thread_properties_listelem {
|
||||
struct ddsi_config_thread_properties_listelem *next;
|
||||
char *name;
|
||||
ddsrt_sched_t sched_class;
|
||||
struct ddsi_config_maybe_int32 schedule_priority;
|
||||
struct ddsi_config_maybe_uint32 stack_size;
|
||||
};
|
||||
|
||||
struct ddsi_config_peer_listelem
|
||||
{
|
||||
struct ddsi_config_peer_listelem *next;
|
||||
char *peer;
|
||||
};
|
||||
|
||||
struct ddsi_config_prune_deleted_ppant {
|
||||
int64_t delay;
|
||||
int enforce_delay;
|
||||
};
|
||||
|
||||
/* allow multicast bits (default depends on network type): */
|
||||
#define DDSI_AMC_FALSE 0u
|
||||
#define DDSI_AMC_SPDP 1u
|
||||
#define DDSI_AMC_ASM 2u
|
||||
#ifdef DDS_HAS_SSM
|
||||
#define DDSI_AMC_SSM 4u
|
||||
#define DDSI_AMC_TRUE (DDSI_AMC_SPDP | DDSI_AMC_ASM | DDSI_AMC_SSM)
|
||||
#else
|
||||
#define DDSI_AMC_TRUE (DDSI_AMC_SPDP | DDSI_AMC_ASM)
|
||||
#endif
|
||||
#define DDSI_AMC_DEFAULT 0x80000000u
|
||||
|
||||
/* FIXME: this should be fully dynamic ... but this is easier for a quick hack */
|
||||
enum ddsi_transport_selector {
|
||||
DDSI_TRANS_DEFAULT, /* actually UDP, but this is so we can tell what has been set */
|
||||
DDSI_TRANS_UDP,
|
||||
DDSI_TRANS_UDP6,
|
||||
DDSI_TRANS_TCP,
|
||||
DDSI_TRANS_TCP6,
|
||||
DDSI_TRANS_RAWETH,
|
||||
DDSI_TRANS_NONE /* FIXME: see FIXME above ... :( */
|
||||
};
|
||||
|
||||
enum ddsi_many_sockets_mode {
|
||||
DDSI_MSM_NO_UNICAST,
|
||||
DDSI_MSM_SINGLE_UNICAST,
|
||||
DDSI_MSM_MANY_UNICAST
|
||||
};
|
||||
|
||||
#ifdef DDS_HAS_SECURITY
|
||||
struct ddsi_plugin_library_properties {
|
||||
char *library_path;
|
||||
char *library_init;
|
||||
char *library_finalize;
|
||||
};
|
||||
|
||||
struct ddsi_authentication_properties {
|
||||
char *identity_certificate;
|
||||
char *identity_ca;
|
||||
char *private_key;
|
||||
char *password;
|
||||
char *trusted_ca_dir;
|
||||
char *crl;
|
||||
int include_optional_fields;
|
||||
};
|
||||
|
||||
struct ddsi_access_control_properties {
|
||||
char *permissions;
|
||||
char *permissions_ca;
|
||||
char *governance;
|
||||
};
|
||||
|
||||
struct ddsi_config_omg_security {
|
||||
struct ddsi_authentication_properties authentication_properties;
|
||||
struct ddsi_access_control_properties access_control_properties;
|
||||
struct ddsi_plugin_library_properties authentication_plugin;
|
||||
struct ddsi_plugin_library_properties access_control_plugin;
|
||||
struct ddsi_plugin_library_properties cryptography_plugin;
|
||||
};
|
||||
|
||||
struct ddsi_config_omg_security_listelem {
|
||||
struct ddsi_config_omg_security_listelem *next;
|
||||
struct ddsi_config_omg_security cfg;
|
||||
};
|
||||
#endif /* DDS_HAS_SECURITY */
|
||||
|
||||
#ifdef DDS_HAS_SSL
|
||||
struct ddsi_config_ssl_min_version {
|
||||
int major;
|
||||
int minor;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct ddsi_config_socket_buf_size {
|
||||
struct ddsi_config_maybe_uint32 min, max;
|
||||
};
|
||||
|
||||
struct ddsi_config_network_interface {
|
||||
int automatic;
|
||||
char *name;
|
||||
char *address;
|
||||
int prefer_multicast;
|
||||
int presence_required;
|
||||
enum ddsi_boolean_default multicast;
|
||||
struct ddsi_config_maybe_int32 priority;
|
||||
};
|
||||
|
||||
struct ddsi_config_network_interface_listelem {
|
||||
struct ddsi_config_network_interface_listelem *next;
|
||||
struct ddsi_config_network_interface cfg;
|
||||
};
|
||||
|
||||
enum ddsi_config_entity_naming_mode {
|
||||
DDSI_ENTITY_NAMING_DEFAULT_EMPTY,
|
||||
DDSI_ENTITY_NAMING_DEFAULT_FANCY
|
||||
};
|
||||
|
||||
/* Expensive checks (compiled in when NDEBUG not defined, enabled only if flag set in xchecks) */
|
||||
#define DDSI_XCHECK_WHC 1u
|
||||
#define DDSI_XCHECK_RHC 2u
|
||||
#define DDSI_XCHECK_XEV 4u
|
||||
|
||||
struct ddsi_config
|
||||
{
|
||||
int valid;
|
||||
uint32_t tracemask;
|
||||
uint32_t enabled_xchecks;
|
||||
char *pcap_file;
|
||||
|
||||
/* interfaces */
|
||||
struct ddsi_config_network_interface_listelem *network_interfaces;
|
||||
|
||||
/* deprecated interface support */
|
||||
char *depr_networkAddressString;
|
||||
int depr_prefer_multicast;
|
||||
char *depr_assumeMulticastCapable;
|
||||
|
||||
char **networkRecvAddressStrings;
|
||||
uint32_t allowMulticast;
|
||||
char *externalAddressString;
|
||||
char *externalMaskString;
|
||||
FILE *tracefp;
|
||||
char *tracefile;
|
||||
int tracingAppendToFile;
|
||||
enum ddsi_transport_selector transport_selector;
|
||||
enum ddsi_boolean_default compat_use_ipv6;
|
||||
enum ddsi_boolean_default compat_tcp_enable;
|
||||
int dontRoute;
|
||||
int enableMulticastLoopback;
|
||||
uint32_t domainId;
|
||||
struct ddsi_config_maybe_uint32 extDomainId; // domain id advertised in discovery
|
||||
char *domainTag;
|
||||
int participantIndex;
|
||||
int maxAutoParticipantIndex;
|
||||
char *spdpMulticastAddressString;
|
||||
char *defaultMulticastAddressString;
|
||||
int64_t spdp_interval;
|
||||
int64_t spdp_response_delay_max;
|
||||
int64_t lease_duration;
|
||||
int64_t const_hb_intv_sched;
|
||||
int64_t const_hb_intv_sched_min;
|
||||
int64_t const_hb_intv_sched_max;
|
||||
int64_t const_hb_intv_min;
|
||||
enum ddsi_retransmit_merging retransmit_merging;
|
||||
int64_t retransmit_merging_period;
|
||||
int squash_participants;
|
||||
int liveliness_monitoring;
|
||||
int noprogress_log_stacktraces;
|
||||
int64_t liveliness_monitoring_interval;
|
||||
int prioritize_retransmit;
|
||||
enum ddsi_boolean_default multiple_recv_threads;
|
||||
unsigned recv_thread_stop_maxretries;
|
||||
|
||||
unsigned primary_reorder_maxsamples;
|
||||
unsigned secondary_reorder_maxsamples;
|
||||
|
||||
unsigned delivery_queue_maxsamples;
|
||||
|
||||
uint16_t fragment_size;
|
||||
uint32_t max_msg_size;
|
||||
uint32_t max_rexmit_msg_size;
|
||||
uint32_t init_transmit_extra_pct;
|
||||
uint32_t max_rexmit_burst_size;
|
||||
|
||||
int publish_uc_locators; /* Publish discovery unicast locators */
|
||||
int enable_uc_locators; /* If false, don't even try to create a unicast socket */
|
||||
|
||||
#ifdef DDS_HAS_TOPIC_DISCOVERY
|
||||
int enable_topic_discovery_endpoints;
|
||||
#endif
|
||||
|
||||
/* TCP transport configuration */
|
||||
int tcp_nodelay;
|
||||
int tcp_port;
|
||||
int64_t tcp_read_timeout;
|
||||
int64_t tcp_write_timeout;
|
||||
int tcp_use_peeraddr_for_unicast;
|
||||
|
||||
#ifdef DDS_HAS_SSL
|
||||
/* SSL support for TCP */
|
||||
int ssl_enable;
|
||||
int ssl_verify;
|
||||
int ssl_verify_client;
|
||||
int ssl_self_signed;
|
||||
char * ssl_keystore;
|
||||
char * ssl_rand_file;
|
||||
char * ssl_key_pass;
|
||||
char * ssl_ciphers;
|
||||
struct ddsi_config_ssl_min_version ssl_min_version;
|
||||
#endif
|
||||
|
||||
#ifdef DDS_HAS_NETWORK_CHANNELS
|
||||
struct ddsi_config_channel_listelem *channels;
|
||||
struct ddsi_config_channel_listelem *max_channel; /* channel with highest prio; always computed */
|
||||
#endif /* DDS_HAS_NETWORK_CHANNELS */
|
||||
#ifdef DDS_HAS_NETWORK_PARTITIONS
|
||||
struct ddsi_config_networkpartition_listelem *networkPartitions;
|
||||
unsigned nof_networkPartitions;
|
||||
struct ddsi_config_ignoredpartition_listelem *ignoredPartitions;
|
||||
struct ddsi_config_partitionmapping_listelem *partitionMappings;
|
||||
#endif /* DDS_HAS_NETWORK_PARTITIONS */
|
||||
struct ddsi_config_peer_listelem *peers;
|
||||
struct ddsi_config_thread_properties_listelem *thread_properties;
|
||||
|
||||
/* debug/test/undoc features: */
|
||||
int xmit_lossiness; /**<< fraction of packets to drop on xmit, in units of 1e-3 */
|
||||
uint32_t rmsg_chunk_size; /**<< size of a chunk in the receive buffer */
|
||||
uint32_t rbuf_size; /* << size of a single receiver buffer */
|
||||
enum ddsi_besmode besmode;
|
||||
int meas_hb_to_ack_latency;
|
||||
int unicast_response_to_spdp_messages;
|
||||
int synchronous_delivery_priority_threshold;
|
||||
int64_t synchronous_delivery_latency_bound;
|
||||
|
||||
/* Write cache */
|
||||
|
||||
int whc_batch;
|
||||
uint32_t whc_lowwater_mark;
|
||||
uint32_t whc_highwater_mark;
|
||||
struct ddsi_config_maybe_uint32 whc_init_highwater_mark;
|
||||
int whc_adaptive;
|
||||
|
||||
unsigned defrag_unreliable_maxsamples;
|
||||
unsigned defrag_reliable_maxsamples;
|
||||
unsigned accelerate_rexmit_block_size;
|
||||
int64_t responsiveness_timeout;
|
||||
uint32_t max_participants;
|
||||
int64_t writer_linger_duration;
|
||||
int multicast_ttl;
|
||||
struct ddsi_config_socket_buf_size socket_rcvbuf_size;
|
||||
struct ddsi_config_socket_buf_size socket_sndbuf_size;
|
||||
int64_t ack_delay;
|
||||
int64_t nack_delay;
|
||||
int64_t preemptive_ack_delay;
|
||||
int64_t schedule_time_rounding;
|
||||
int64_t auto_resched_nack_delay;
|
||||
int64_t ds_grace_period;
|
||||
#ifdef DDS_HAS_BANDWIDTH_LIMITING
|
||||
uint32_t auxiliary_bandwidth_limit; /* bytes/second */
|
||||
#endif
|
||||
uint32_t max_queued_rexmit_bytes;
|
||||
unsigned max_queued_rexmit_msgs;
|
||||
unsigned ddsi2direct_max_threads;
|
||||
int late_ack_mode;
|
||||
int retry_on_reject_besteffort;
|
||||
int generate_keyhash;
|
||||
uint32_t max_sample_size;
|
||||
|
||||
/* compability options */
|
||||
enum ddsi_standards_conformance standards_conformance;
|
||||
int explicitly_publish_qos_set_to_default;
|
||||
enum ddsi_many_sockets_mode many_sockets_mode;
|
||||
int assume_rti_has_pmd_endpoints;
|
||||
|
||||
struct ddsi_portmapping ports;
|
||||
|
||||
int monitor_port;
|
||||
|
||||
int enable_control_topic;
|
||||
int initial_deaf;
|
||||
int initial_mute;
|
||||
int64_t initial_deaf_mute_reset;
|
||||
|
||||
int use_multicast_if_mreqn;
|
||||
struct ddsi_config_prune_deleted_ppant prune_deleted_ppant;
|
||||
int redundant_networking;
|
||||
|
||||
#ifdef DDS_HAS_SECURITY
|
||||
struct ddsi_config_omg_security_listelem *omg_security_configuration;
|
||||
#endif
|
||||
|
||||
#ifdef DDS_HAS_SHM
|
||||
int enable_shm;
|
||||
char *shm_locator;
|
||||
char *iceoryx_service;
|
||||
enum ddsi_shm_loglevel shm_log_lvl;
|
||||
#endif
|
||||
|
||||
enum ddsi_config_entity_naming_mode entity_naming_mode;
|
||||
ddsrt_prng_seed_t entity_naming_seed;
|
||||
|
||||
#if defined (__cplusplus)
|
||||
public:
|
||||
ddsi_config() {
|
||||
ddsi_config_init_default (this);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSI_CONFIG_H */
|
Reference in New Issue
Block a user