42 #ifndef dds_c_infrastructure_h
43 #define dds_c_infrastructure_h
48 #ifndef osapi_thread_h
57 #ifndef dds_c_common_h
60 #ifndef dds_c_string_h
63 #ifndef dds_c_sequence_h
80 #define RTI_MICRODDS_MAJOR 2
81 #define RTI_MICRODDS_MINOR 0
90 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
94 DDS_ReturnCode_t copy(const T& from);\
96 T& operator=(const T& from);\
97 bool operator==(const T& other);\
98 bool operator!=(const T& other);
100 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T) \
104 DDS_ReturnCode_t copy(const T& from);\
107 T& operator=(const T& from);\
108 bool operator==(const T& other);\
109 bool operator!=(const T& other);
112 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T) \
118 T& operator=(const T& from);\
119 bool operator==(const T& other);\
120 bool operator!=(const T& other);
123 #define DDSC_CPP_SUPPORT_METHODS_EXTENDED(T)
124 #define DDSC_CPP_SUPPORT_METHODS_BASIC(T)
152 #define DDS_Time_t_greater_than(l, r) \
153 (((l).sec > (r).sec) || \
154 (((l).sec == (r).sec) && \
155 ((l).nanosec > (r).nanosec)))
157 #ifdef DOXYGEN_DOCUMENTATION_ONLY
169 #define DDS_TIME_ZERO { 0L, 0UL }
172 #define DDS_Time_is_zero(timePtr) \
173 ((timePtr)->sec == 0L || (timePtr)->nanosec == 0UL)
175 #ifdef DOXYGEN_DOCUMENTATION_ONLY
292 #define T DDS_InstanceHandle_t
293 #define TSeq DDS_InstanceHandleSeq
294 #include <reda/reda_sequence_decl.h>
296 #ifdef DOXYGEN_DOCUMENTATION_ONLY
299 struct DDS_InstanceHandleSeq {};
310 const DDS_InstanceHandle_t *other);
312 #define DDS_InstanceHandle_is_nil(handlePtr) \
313 DDS_InstanceHandle_equals(handlePtr, &DDS_HANDLE_NIL)
315 #ifdef DOXYGEN_DOCUMENTATION_ONLY
324 DDS_InstanceHandle_from_rtps(DDS_InstanceHandle_t *
self,
325 const struct RTPS_Guid *other);
330 DDS_InstanceHandle_to_rtps(
struct RTPS_Guid *other,
331 const DDS_InstanceHandle_t *
self);
336 DDS_InstanceHandle_from_netio_address(DDS_InstanceHandle_t *
self,
337 const struct NETIO_Address *other);
343 const DDS_InstanceHandle_t * other);
348 DDS_InstanceHandle_compare(
const DDS_InstanceHandle_t *
self,
349 const DDS_InstanceHandle_t * other);
370 #define DDS_GUID_INITIALIZER {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
374 extern DDSCDllVariable
const struct DDS_GUID_t DDS_GUID_AUTO;
382 extern DDSCDllVariable
const struct DDS_GUID_t DDS_GUID_PREFIX_UNKNOWN;
386 extern DDSCDllVariable
const struct DDS_GUID_t DDS_GUID_PREFIX_AUTO;
392 DDS_GUID_to_rtps(
struct RTPS_Guid *other,
400 const struct RTPS_Guid *other);
431 #define DDS_SEQUENCE_NUMBER_UNKNOWN REDA_SEQUENCE_NUMBER_UNKNOWN
435 #define DDS_SEQUENCE_NUMBER_ZERO REDA_SEQUENCE_NUMBER_ZERO
439 #define DDS_SEQUENCE_NUMBER_MAX REDA_SEQUENCE_NUMBER_MAX
519 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_FULL(T) \
521 DDSCDllExport DDS_Boolean T ## _initialize(struct T* self); \
522 DDSCDllExport DDS_Boolean T ## _finalize(struct T* self); \
523 DDSCDllExport DDS_Boolean T ## _copy(struct T* self, const struct T* from);\
524 MUST_CHECK_RETURN DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
529 #define DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(T) \
531 DDSCDllExport DDS_Boolean T ## _is_equal(const struct T* self, const struct T* from)
548 #define DDS_STATUS_MASK_NONE ((DDS_StatusMask) 0)
552 #define DDS_STATUS_MASK_ALL (~DDS_STATUS_MASK_NONE)
647 DDS_USERDATA_QOS_POLICY_ID = 1,
651 DDS_DURABILITY_QOS_POLICY_ID = 2,
655 DDS_PRESENTATION_QOS_POLICY_ID = 3,
663 DDS_LATENCYBUDGET_QOS_POLICY_ID = 5,
679 DDS_TIMEBASEDFILTER_QOS_POLICY_ID = 9,
683 DDS_PARTITION_QOS_POLICY_ID = 10,
691 DDS_DESTINATIONORDER_QOS_POLICY_ID = 12,
699 DDS_RESOURCELIMITS_QOS_POLICY_ID = 14,
707 DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID = 16,
711 DDS_READERDATALIFECYCLE_QOS_POLICY_ID = 17,
715 DDS_TOPICDATA_QOS_POLICY_ID = 18,
719 DDS_GROUPDATA_QOS_POLICY_ID = 19,
723 DDS_TRANSPORTPRIORITY_QOS_POLICY_ID = 20,
727 DDS_LIFESPAN_QOS_POLICY_ID = 21,
731 DDS_DURABILITYSERVICE_QOS_POLICY_ID = 22,
738 struct DDS_QosPolicyCount
749 #define MICRO_DDS_SEQUENCE_MODULE
750 #ifdef MICRO_DDS_SEQUENCE_MODULE
751 #define T struct DDS_QosPolicyCount
752 #define TSeq DDS_QosPolicyCountSeq
753 #include <reda/reda_sequence_decl.h>
755 #ifdef DOXYGEN_DOCUMENTATION_ONLY
758 struct DDS_QosPolicyCountSeq
826 #define DDS_DEADLINE_QOS_POLICY_DEFAULT \
827 {{ 0x7fffffffL, 0xffffffffUL }}
865 #define DDS_OWNERSHIP_QOS_POLICY_DEFAULT { DDS_SHARED_OWNERSHIP_QOS }
889 #define DDS_OWNERSHIP_STRENGTH_QOS_POLICY_DEFAULT { 0L }
908 DDS_AUTOMATIC_LIVELINESS_QOS,
912 DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
936 #define DDS_LIVELINESS_QOS_POLICY_DEFAULT \
938 DDS_AUTOMATIC_LIVELINESS_QOS,\
939 {0x7fffffff, 0xffffffffUL} \
984 #define DDS_RELIABILITY_QOS_POLICY_DEFAULT \
985 { DDS_BEST_EFFORT_RELIABILITY_QOS, \
1010 DDS_KEEP_ALL_HISTORY_QOS
1029 #define DDS_HISTORY_QOS_POLICY_DEFAULT { DDS_KEEP_LAST_HISTORY_QOS, \
1057 DDS_TRANSIENT_DURABILITY_QOS,
1061 DDS_PERSISTENT_DURABILITY_QOS
1076 #define DDS_DURABILITY_QOS_POLICY_DEFAULT \
1077 { DDS_VOLATILE_DURABILITY_QOS }
1113 #define DDS_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1141 extern DDSCDllVariable
const char *
const
1172 #define DDS_DATAREADERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1177 DDS_NO_INSTANCE_REPLACEMENT_QOS, \
1188 extern DDSCDllVariable
const char *
const
1203 #define DDS_DATAWRITERRESOURCE_LIMITS_QOS_POLICY_DEFAULT { \
1229 #define DDS_ENTITY_FACTORY_QOS_POLICY_DEFAULT { DDS_BOOLEAN_TRUE }
1239 #define DDS_LENGTH_UNLIMITED (-1)
1251 extern DDSCDllVariable
const char *
const DDS_TYPESUPPORT_QOS_POLICY_NAME;
1256 struct DDS_TypeSupportQosPolicy
1265 #define DDS_TYPESUPPORT_QOS_POLICY_DEFAULT \
1295 #define DDS_SYSTEM_RESOURCE_LIMITS_QOS_POLICY_DEFAULT { 1L,16L }
1303 #define DDS_RtpsWellKnownPorts NETIO_RtpsPortParam
1319 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1355 #define DDS_RtpsWellKnownPorts_t DDS_RtpsWellKnownPorts
1359 #define DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT \
1407 #define DDS_WIRE_PROTOCOL_QOS_POLICY_DEFAULT { \
1409 DDS_RTPS_AUTO_ID , \
1410 DDS_RTPS_AUTO_ID , \
1411 DDS_RTPS_AUTO_ID , \
1412 DDS_RTPS_WELL_KNOWN_PORTS_DEFAULT \
1420 #define DDS_Locator RTPS_Locator
1425 #define DDS_Locator_t RTPS_Locator_t
1430 #define DDS_LocatorUdpv4_t RTPS_LocatorUdpv4_t
1432 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1454 #define REDA_SEQUENCE_API REDA_SEQUENCE_API_CERT
1455 #define TSeq_is_equal
1458 #define T struct RTPS_Locator
1459 #define TSeq DDS_LocatorSeq
1460 #include <reda/reda_sequence_decl.h>
1462 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1471 #define DDS_LOCATOR_INVALID RTPS_LOCATOR_INVALID
1477 #define DDS_LOCATOR_DEFAULT RTPS_LOCATOR_DEFAULT
1482 #define DDS_LOCATOR_KIND_INVALID RTPS_LOCATOR_KIND_INVALID
1487 #define DDS_LOCATOR_PORT_INVALID RTPS_LOCATOR_PORT_INVALID
1492 #define DDS_LOCATOR_ADDRESS_INVALID RTPS_LOCATOR_ADDRESS_INVALID
1500 #define DDS_LOCATOR_KIND_UDPv4 RTPS_LOCATOR_KIND_UDPv4
1505 #define DDS_LOCATOR_KIND_UDPv6 RTPS_LOCATOR_KIND_UDPv6
1510 #define DDS_LOCATOR_KIND_RESERVED RTPS_LOCATOR_KIND_RESERVED
1515 #define DDS_LOCATOR_KIND_SHMEM RTPS_LOCATOR_KIND_SHMEM
1536 #define DDS_PROTOCOL_VERSION_DEFAULT { 0, 0 }
1540 #define DDS_PROTOCOLVERSION_1_0 { 1, 0 }
1543 #define DDS_PROTOCOLVERSION_1_1 { 1, 1 }
1546 #define DDS_PROTOCOLVERSION_1_2 { 1, 2 }
1549 #define DDS_PROTOCOLVERSION_2_0 { 2, 0 }
1552 #define DDS_PROTOCOLVERSION_2_1 { 2, 1 }
1555 #define DDS_PROTOCOLVERSION { 2, 1 }
1559 #define DDS_VENDOR_ID_LENGTH_MAX 2
1570 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1582 DDSC_VARIABLE_LENGTH_VALUE_TYPE_SUPPORT_BASIC(
DDS_VendorId);
1583 #define DDS_VendorId_t DDS_VendorId
1587 #define DDS_VENDOR_ID_DEFAULT { {0, 0} }
1591 #define DDS_VENDORID_UNKNOWN { {0, 0} }
1614 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1634 #define DDS_ProductVersion_t DDS_ProductVersion
1639 #define DDS_PRODUCTVERSION_UNKNOWN { 0, 0, '0', 0 }
1643 #define DDS_PRODUCTVERSION_DEFAULT { 2, 0, 'c', 1 }
1668 #define DDS_DATA_READER_PROTOCOL_QOS_POLICY_DEFAULT \
1700 #define DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW (DDS_LENGTH_UNLIMITED)
1704 #define DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT { \
1707 DDS_RTPSRELIABLEWRITER_DEFAULT_SEND_WINDOW, \
1708 DDS_LENGTH_UNLIMITED, \
1738 #define DDS_DATA_WRITER_PROTOCOL_QOS_POLICY_DEFAULT \
1739 { DDS_RTPS_AUTO_ID, \
1740 DDS_RTPS_RELIABLE_WRITER_PROTOCOL_DEFAULT\
1754 #ifdef DOXYGEN_DOCUMENTATION_ONLY
1757 struct DDS_StringSeq {};
1772 #define DDS_TRANSPORT_QOS_POLICY_DEFAULT \
1774 DDS_SEQUENCE_INITIALIZER(DDS_String)\
1785 extern DDSCDllVariable
const char *
const
1849 #define DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT (32L)
1869 #define DDS_DOMAIN_PARTICIPANT_RESOURCE_LIMITS_QOS_POLICY_DEFAULT \
1879 DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
1880 DDS_DomainParticipantResourceLimitsQosPolicy_MATCH_INIT, \
1889 #define DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH (4)
1897 DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE
value[DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE_LENGTH];
1902 #define DDS_BuiltinTopicKey_t_INITIALIZER { {0, 0, 0, 0} }
1954 const DDS_InstanceHandle_t *out);
1975 typedef struct DDS_ConditionImpl *DDS_Condition_ptr;
1980 #define REDA_SEQUENCE_API REDA_SEQUENCE_API_CERT
1981 #define TSeq_is_equal
1984 #define T struct DDS_ConditionImpl*
1985 #define TSeq DDS_ConditionSeq
1986 #include <reda/reda_sequence_decl.h>
1988 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2002 DDS_ConditionImpl_set_wrapper(
DDS_Condition *
self,
void *wrapper);
2006 DDSCDllExport
void**
2015 #define DDS_GuardCondition_as_condition(guard_condition_ptr_) \
2016 ((DDS_Condition*) guard_condition_ptr_)
2018 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2048 #define DDS_StatusCondition_as_condition(status_cond_ptr_) \
2049 ((DDS_Condition*) status_cond_ptr_)
2051 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2061 DDSCDllExport DDS_StatusMask
2068 DDS_StatusMask mask);
2134 #define DDS_Listener_INITIALIZER { NULL }
2140 #ifdef DOXYGEN_DOCUMENTATION_ONLY
2162 DDSCDllExport DDS_InstanceHandle_t
2177 DDSCDllExport DDS_StatusMask
2197 DDS_Entity_set_wrapper(
DDS_Entity *
self,
void *wrapper);
2235 #define DDS_ENTITYNAME_QOS_NAME_MAX 255
2248 #define DDS_ENTITY_NAME_QOS_POLICY_DEFAULT { {'\0'} }
2256 struct RTI_ManagementQosPolicy
2264 #define RTI_MANAGEMENT_QOS_POLICY_DEFAULT { \
2286 DDSHST_RETCODE_ERROR = -1000,
2287 DDSHST_RETCODE_NOSPACE,
2288 DDSHST_RETCODE_EXISTS,
2289 DDSHST_RETCODE_NOT_EXISTS,
2290 DDSHST_RETCODE_INVALID_PROPERTY,
2291 DDSHST_RETCODE_INVALID_ENTRY_REQUEST,
2292 DDSHST_RETCODE_SUCCESS = 0
2293 } DDSHST_ReturnCode_T;
2299 DDSHST_REPLACE_POLICY_KIND_OLDEST,
2300 DDSHST_REPLACE_POLICY_KIND_NONE
2301 } DDSHST_ReplacePolicyKind_T;
2321 #define DDS_SAMPLE_IDENTITY_UNKNOWN \
2323 DDS_GUID_INITIALIZER, \
2324 DDS_SEQUENCE_NUMBER_UNKNOWN \
2350 #define DDS_WRITEPARAMS_DEFAULT \
2352 DDS_SAMPLE_IDENTITY_UNKNOWN, \
2353 DDS_SAMPLE_IDENTITY_UNKNOWN, \
2355 DDS_HANDLE_NIL_NATIVE \
2368 #define DDS_PropertySeq CDR_PropertySeq
2369 #define DDS_Property CDR_Property
2370 #define DDS_PropertySeq_initialize CDR_PropertySeq_initialize
2371 #define DDS_PropertySeq_set_length CDR_PropertySeq_set_length
2372 #define DDS_PropertySeq_get_length CDR_PropertySeq_get_length
2373 #define DDS_PropertySeq_get_reference CDR_PropertySeq_get_reference
2377 DDSCDllExport
struct DDS_PropertySeq*