42 #ifndef reda_sequenceNumber_h
43 #include "reda/reda_sequenceNumber.h"
48 #ifndef osapi_system_h
55 #include "cdr/cdr_stream.h"
57 #ifndef netio_common_h
60 #ifndef netio_common_h
63 #ifndef netio_address_h
64 #include "netio/netio_address.h"
67 #include "netio/netio_route.h"
69 #ifndef netio_interface_h
80 typedef RTI_UINT32 RTPS_ReturnCode_t;
84 #define RTPS_RETCODE_OK 0
86 #define RTPS_RETCODE_START 1000
90 #define RTPS_RETCODE_ERROR RTPS_RETCODE_START
94 #define RTPS_RETCODE_UNSUPPORTED RTPS_RETCODE_START + 1
98 #define RTPS_RETCODE_BAD_PARAMETER RTPS_RETCODE_START + 2
102 #define RTPS_RETCODE_PRECONDITION_NOT_MET RTPS_RETCODE_START + 3
106 #define RTPS_RETCODE_OUT_OF_RESOURCES RTPS_RETCODE_START + 4
110 #define RTPS_RETCODE_ALREADY_DELETED RTPS_RETCODE_START + 5
114 #define RTPS_PATHNAME_LEN_MAX (255)
120 typedef RTI_UINT16 RTPS_ParameterId;
127 #define RTPS_PID_INCOMPATIBLE_MASK (0x4000)
132 #define RTPS_PID_PAD (0x0000)
137 #define RTPS_PID_SENTINEL (0x0001)
145 #define RTPS_PID_TOPIC_NAME (0x0005)
154 #define RTPS_PID_TYPE_NAME (0x0007)
163 #define RTPS_PID_DURABILITY (0x001d)
172 #define RTPS_PID_DEADLINE (0x0023)
181 #define RTPS_PID_LIVELINESS (0x001b)
190 #define RTPS_PID_RELIABILITY (0x001a)
198 #define RTPS_PID_OWNERSHIP (0x001f)
206 #define RTPS_PID_OWNERSHIP_STRENGTH (0x0006)
214 #define RTPS_PID_PROTOCOL_VERSION (0x0015)
222 #define RTPS_PID_VENDOR_ID (0x0016)
226 #define RTPS_PID_USERDATA_IPADDRESS_COUNT_MAX (4)
233 #define RTPS_PID_UNICAST_LOCATOR6 (0x002f)
240 #define RTPS_PID_MULTICAST_LOCATOR6 (0x0030)
247 #define RTPS_PID_DEFAULT_UNICAST_LOCATOR6 (0x0031)
254 #define RTPS_PID_METATRAFFIC_UNICAST_LOCATOR6 (0x0032)
261 #define RTPS_PID_METATRAFFIC_MULTICAST_LOCATOR6 (0x0033)
266 #define RTPS_PID_LEASE_DURATION (0x0002)
273 #define RTPS_PID_PROPERTY_LIST (0x0059)
278 #define RTPS_PID_PARTICIPANT_GUID (0x0050)
286 #define RTPS_PID_BUILTIN_ENDPOINT_MASK (0x0058)
291 #define RTPS_PID_ENDPOINT_GUID (0x005A)
296 #define RTPS_PID_ENTITY_NAME (0x0062)
302 #define RTPS_PID_KEY_HASH (0x0070)
305 #define RTPS_KEY_HASH_PARAM_LENGTH (16)
310 #define RTPS_PID_STATUS_INFO (0x0071)
313 #define RTPS_STATUS_INFO_PARAM_LENGTH (4)
316 #define RTPS_PID_SEND_QUEUE_SIZE_DEPRECATED (0x0013)
322 typedef RTI_UINT32 RTPS_HostId;
327 #define RTPS_HOST_ID_UNKNOWN (0x00000000)
332 typedef RTI_UINT32 RTPS_AppId;
337 #define RTPS_APP_ID_UNKNOWN (0x00000000)
342 typedef RTI_UINT32 RTPS_InstanceId;
347 #define RTPS_INSTANCE_ID_UNKNOWN (0x00000000)
352 typedef RTI_UINT32 RTPS_ObjectId;
357 #define RTPS_OBJECT_ID_UNKNOWN (0x00000000)
362 #define RTPS_OBJECT_ID_MAX (0xFFFFFFFF)
371 struct RTPS_GuidPrefix
386 RTPS_InstanceId instance_id ;
392 #define RTPS_GUID_PREFIX_UNKNOWN { \
393 RTPS_HOST_ID_UNKNOWN, \
394 RTPS_APP_ID_UNKNOWN, \
395 RTPS_INSTANCE_ID_UNKNOWN}
400 #define RTPS_GUID_PREFIX_SIZE (12)
408 struct RTPS_GuidPrefix prefix;
411 RTPS_ObjectId object_id;
417 #define RTPS_GUID_UNKNOWN { \
418 RTPS_GUID_PREFIX_UNKNOWN, \
419 RTPS_OBJECT_ID_UNKNOWN}
423 #define RTPS_OBJECT_ID_PARTICIPANT (0x000001C1)
426 #define RTPS_OBJECT_ID_WRITER_SDP_PARTICIPANT (0x000100C2)
429 #define RTPS_OBJECT_ID_WRITER_SDP_PUBLICATION (0x000003C2)
432 #define RTPS_OBJECT_ID_WRITER_SDP_SUBSCRIPTION (0x000004C2)
435 #define RTPS_OBJECT_ID_READER_SDP_PARTICIPANT (0x000100C7)
438 #define RTPS_OBJECT_ID_READER_SDP_PUBLICATION (0x000003C7)
441 #define RTPS_OBJECT_ID_READER_SDP_SUBSCRIPTION (0x000004C7)
445 #define RTPS_KEY_HASH_MAX_LENGTH 16
451 RTI_UINT8 value[RTPS_KEY_HASH_MAX_LENGTH];
458 #define RTPS_KEY_HASH_NIL {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
461 #define RTPS_KEY_HASH_DEFAULT { \
463 RTPS_KEY_HASH_MAX_LENGTH\
475 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
476 RTPS_Guid_equals(
struct RTPS_Guid *a,
struct RTPS_Guid *b);
486 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
487 RTPS_Guid_prefix_equals(
489 struct RTPS_Guid *b);
499 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
500 RTPS_Guid_suffix_equals(
502 struct RTPS_Guid *b);
506 typedef RTI_UINT16 RTPS_ProtocolVersion_T;
509 #define RTPS_PROTOCOL_VERSION_MAJOR (0x02)
512 #define RTPS_PROTOCOL_VERSION_MINOR (0x01)
515 typedef RTI_UINT16 RTPS_VendorId;
518 #define RTPS_VENDOR_ID_MAJOR (0x01)
521 #define RTPS_VENDOR_ID_MINOR (0x0A)
524 #define RTPS_VENDOR_ID_RTI_DDS (0x0101)
527 #define RTPS_VENDOR_ID_RTI_MICRO (0x010A)
531 RTPS_VendorId_get_major(RTPS_VendorId *me);
535 RTPS_VendorId_get_minor(RTPS_VendorId *me);
539 typedef RTI_UINT32 RTPS_StatusInfo;
542 #define RTPS_NO_STATUS_INFO (0x00000000)
545 #define RTPS_DISPOSE_STATUS_INFO (0x00000001)
548 #define RTPS_UNREGISTER_STATUS_INFO (0X00000002)
551 #define RTPS_ENDIAN_FLAG (0x01)
566 RTPS_OBJECT_NORMAL_USER_UNKNOWN = 0x00,
567 RTPS_OBJECT_NORMAL_USER_APPLICATION = 0x01,
569 RTPS_OBJECT_NORMAL_USER_CST_WRITER = 0x02,
571 RTPS_OBJECT_NORMAL_USER_PUBLICATION = 0x03,
573 RTPS_OBJECT_NORMAL_USER_SUBSCRIPTION = 0x04,
575 RTPS_OBJECT_NORMAL_USER_CST_READER = 0x07,
576 RTPS_OBJECT_NORMAL_USER_VIRTUAL_SUBSCRIPTION = 0x3C,
577 RTPS_OBJECT_NORMAL_USER_VIRTUAL_CST_READER = 0x3D,
578 RTPS_OBJECT_RESERVED_USER_UNKNOWN = 0x40,
579 RTPS_OBJECT_RESERVED_USER_APPLICATION = 0x41,
580 RTPS_OBJECT_RESERVED_USER_CST_WRITER = 0x42,
581 RTPS_OBJECT_RESERVED_USER_PUBLICATION = 0x43,
582 RTPS_OBJECT_RESERVED_USER_SUBSCRIPTION = 0x44,
583 RTPS_OBJECT_RESERVED_USER_CST_READER = 0x47,
584 RTPS_OBJECT_NORMAL_META_UNKNOWN = 0x80,
585 RTPS_OBJECT_NORMAL_META_APPLICATION = 0x81,
586 RTPS_OBJECT_NORMAL_META_CST_WRITER = 0x82,
587 RTPS_OBJECT_NORMAL_META_PUBLICATION = 0x83,
588 RTPS_OBJECT_NORMAL_META_SUBSCRIPTION = 0x84,
589 RTPS_OBJECT_NORMAL_META_CST_READER = 0x87,
590 RTPS_OBJECT_RESERVED_META_UNKNOWN = 0xc0,
591 RTPS_OBJECT_RESERVED_META_APPLICATION = 0xc1,
592 RTPS_OBJECT_RESERVED_META_CST_WRITER = 0xc2,
593 RTPS_OBJECT_RESERVED_META_PUBLICATION = 0xc3,
594 RTPS_OBJECT_RESERVED_META_SUBSCRIPTION = 0xc4,
595 RTPS_OBJECT_RESERVED_META_CST_READER = 0xc7
603 #define RTPS_LOCATOR_ADDRESS_LENGTH_MAX 16
606 struct RTPS_Locator_t
615 RTI_UINT8 address[RTPS_LOCATOR_ADDRESS_LENGTH_MAX];
619 #define RTPS_LOCATOR_DEFAULT {\
622 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} \
626 #define RTPS_Locator RTPS_Locator_t
629 struct RTPS_LocatorUdpv4_t
642 #define RTPS_LOCATOR_UDPV4_DEFAULT {\
649 extern RTPSDllVariable
const struct RTPS_Locator_t RTPS_LOCATOR_INVALID;
652 extern RTPSDllVariable
const RTI_INT32 RTPS_LOCATOR_KIND_INVALID;
655 extern RTPSDllVariable
const RTI_UINT32 RTPS_LOCATOR_PORT_INVALID;
658 extern RTPSDllVariable
const RTI_UINT8
659 RTPS_LOCATOR_ADDRESS_INVALID[RTPS_LOCATOR_ADDRESS_LENGTH_MAX];
662 extern RTPSDllVariable
const RTI_INT32 RTPS_LOCATOR_KIND_UDPv4;
665 extern RTPSDllVariable
const RTI_INT32 RTPS_LOCATOR_KIND_UDPv6;
668 extern RTPSDllVariable
const RTI_INT32 RTPS_LOCATOR_KIND_RESERVED;
671 extern RTPSDllVariable
const RTI_INT32 RTPS_LOCATOR_KIND_SHMEM;
692 RTPS_SequenceNumber_deserialize(
char **src_buffer,
693 struct REDA_SequenceNumber *instance,
706 MUST_CHECK_RETURN RTPSDllExport RTI_INT32
707 RTPS_SequenceNumber_get_distance(
708 const struct REDA_SequenceNumber *s1,
709 const struct REDA_SequenceNumber *s2);
714 #define RTPS_BITMAP_32BITS_ARRAY_SIZE_MAX (8)
726 struct REDA_SequenceNumber lead;
745 RTI_UINT32 bits[RTPS_BITMAP_32BITS_ARRAY_SIZE_MAX];
749 #define RTPS_BITMAP_SIZE_MAX (256)
752 #define RTPS_BITMAP_DISTANCE_MAX (0x7FFFFFFF)
766 struct RTPS_Bitmap *me,
767 const struct REDA_SequenceNumber *sn,
768 RTI_INT32 bit_count);
785 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
786 RTPS_Bitmap_set_bit(
struct RTPS_Bitmap *me,
788 const struct REDA_SequenceNumber *num,
806 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
808 const struct RTPS_Bitmap *me,
810 const struct REDA_SequenceNumber *num);
824 SHOULD_CHECK_RETURN RTPSDllExport
RTI_BOOL
825 RTPS_Bitmap_get_first_bit(
826 const struct RTPS_Bitmap *me,
827 struct REDA_SequenceNumber *position,
842 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
843 RTPS_Bitmap_get_last_bit(
844 const struct RTPS_Bitmap *me,
845 struct REDA_SequenceNumber *position,
859 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
861 struct RTPS_Bitmap *me,
862 const struct REDA_SequenceNumber *first_seq_num,
863 const struct REDA_SequenceNumber *last_seq_num,
882 struct RTPS_Bitmap *me,
883 const struct RTPS_Bitmap *source);
897 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
899 struct RTPS_Bitmap *me,
900 const struct REDA_SequenceNumber *seq_num);
917 RTPS_Bitmap_truncate(
918 struct RTPS_Bitmap *me,
919 const struct REDA_SequenceNumber *seq_num);
932 RTPS_Bitmap_invert(
struct RTPS_Bitmap *me);
951 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
952 RTPS_Bitmap_deserialize(
953 struct RTPS_Bitmap *me,
954 const char **stream_ptr,
955 RTI_UINT32 max_bits_len,
969 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
971 struct CDR_Stream_t *stream,
972 const struct RTPS_Guid *guid,
985 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
986 RTPS_Guid_deserialize(
987 struct CDR_Stream_t *stream,
988 struct RTPS_Guid *guid,
999 MUST_CHECK_RETURN RTPSDllExport RTI_UINT32
1000 RTPS_Guid_get_max_size_serialized(RTI_UINT32 size);
1013 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
1014 RTPS_serialize_ntp_time(
1015 struct CDR_Stream_t *stream,
1029 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
1030 RTPS_deserialize_ntp_time(
1031 struct CDR_Stream_t *stream,
1043 MUST_CHECK_RETURN RTPSDllExport RTI_UINT32
1044 RTPS_get_ntp_time_max_size_serialized(RTI_UINT32 size);
1057 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
1058 RTPS_serialize_2_octets(
1059 struct CDR_Stream_t *stream,
1060 const RTI_UINT16 * in,
1073 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
1074 RTPS_deserialize_2_octets(
1075 struct CDR_Stream_t *stream,
1087 MUST_CHECK_RETURN RTPSDllExport RTI_UINT32
1088 RTPS_get_2_octets_max_size_serialized(RTI_UINT32 size);
1101 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
1102 RTPS_serialize_ipv6_locator(
1103 struct CDR_Stream_t *stream,
1104 const struct RTPS_Locator_t *loc,
1117 MUST_CHECK_RETURN RTPSDllExport
RTI_BOOL
1118 RTPS_deserialize_ipv6_locator(
1119 struct CDR_Stream_t *stream,
1120 struct RTPS_Locator_t *loc,
1131 MUST_CHECK_RETURN RTPSDllExport RTI_UINT32
1132 RTPS_get_ipv6_locator_max_size_serialized(RTI_UINT32 size);
1145 RTPS_Epoch_deserialize(REDA_Epoch_T * me,
1146 const char **stream,
1151 typedef struct NETIO_Guid RTPS_GUID;
1154 typedef struct NETIO_GuidPrefix RTPS_GuidPrefix_T;
1157 typedef struct NETIO_GuidEntity RTPS_Entity_T;
1160 #define RTPS_GUIDPREFIX_UNKNOWN {{0,0,0,0,0,0,0,0,0,0,0,0}}
1163 #define RTPS_ENTITY_UNKNOWN {{0,0,0,0}}
1173 RTI_UINT32 fractions;
1184 struct RTPS_ProtocolVersion
1203 struct RTPS_ProtocolVersion protocol_version;
1206 struct RTPS_Vendor vendor_id;
1209 RTPS_GuidPrefix_T guid_prefix;
1213 #ifdef RTI_ENDIAN_LITTLE
1214 #define VALID_RTPS_HEADER 0x53505452
1216 #define VALID_RTPS_HEADER 0x52545053
1223 #define RTPS_PAD_KIND (0x01)
1226 #define RTPS_ACKNACK_KIND (0x06)
1229 #define RTPS_HEARTBEAT_KIND (0x07)
1232 #define RTPS_GAP_KIND (0x08)
1235 #define RTPS_INFO_TS_KIND (0x09)
1238 #define RTPS_INFO_SRC_KIND (0x0c)
1241 #define RTPS_INFO_REPLY_IP4_KIND (0x0d)
1244 #define RTPS_INFO_DST_KIND (0x0e)
1247 #define RTPS_INFO_REPLY_KIND (0x0f)
1250 #define RTPS_DATA_KIND (0x15)
1253 #define RTPS_LARGEST_SUBMSG_KIND RTPS_DATA_KIND
1256 #define RTPS_SUBMESSAGE_HEADER_LENGTH 4
1265 struct RTPS_SubmsgHdr
1278 #define RTPS_SUBMSG_FLAG_E 0x1
1285 struct RTPS_SubmsgHdr hdr;
1288 RTPS_Entity_T reader;
1291 RTPS_Entity_T writer;
1294 struct RTPS_Bitmap bitmap;
1301 #define RTPS_ACKNACKFLAGS_F 0x2
1313 struct RTPS_SubmsgHdr hdr;
1319 RTI_UINT16 qos_offset;
1322 RTPS_Entity_T reader;
1325 RTPS_Entity_T writer;
1328 struct REDA_SequenceNumber sn;
1332 #define RTPS_FLAGS_NONE 0x0
1335 #define RTPS_DATAFLAGS_Q 0x2
1338 #define RTPS_DATAFLAGS_D 0x4
1341 #define RTPS_DATA_INLINEQOS_OFFSET 16
1348 struct RTPS_SubmsgHdr hdr;
1351 RTPS_Entity_T reader;
1354 RTPS_Entity_T writer;
1357 struct REDA_SequenceNumber sn_start;
1360 struct RTPS_Bitmap bitmap;
1365 struct RTPS_HEARTBEAT
1368 struct RTPS_SubmsgHdr hdr;
1371 RTPS_Entity_T reader;
1374 RTPS_Entity_T writer;
1377 struct REDA_SequenceNumber sn_first;
1380 struct REDA_SequenceNumber sn_last;
1387 #define RTPS_HBFLAGS_F 0x02
1390 #define RTPS_HBFLAGS_L 0x04
1394 struct RTPS_INFO_DST
1397 struct RTPS_SubmsgHdr hdr;
1400 RTPS_GuidPrefix_T guid_prefix;
1408 struct RTPS_SubmsgHdr hdr;
1411 struct RTPS_Time timestamp;
1415 #define RTPS_INFO_TSFLAGS_I (0x2)
1426 struct RTPS_SubmsgHdr submsg;
1429 struct RTPS_Header header;
1432 struct RTPS_DATA data;
1435 struct RTPS_GAP gap;
1438 struct RTPS_HEARTBEAT hb;
1441 struct RTPS_ACKNACK acknack;
1444 struct RTPS_INFO_TS info_ts;
1447 struct RTPS_INFO_DST info_dst;
1455 RTPS_INTERFACEMODE_UNDEFINED,
1458 RTPS_INTERFACEMODE_WRITER,
1461 RTPS_INTERFACEMODE_READER,
1464 RTPS_INTERFACEMODE_EXTERNAL_RECEIVER
1465 } RTPS_InterfaceMode_t;
1468 struct RTPS_InterfaceProperty
1471 struct NETIO_InterfaceProperty _parent;
1474 RTPS_InterfaceMode_t mode;
1477 struct NETIO_Address intf_address;
1480 RTI_INT32 max_peer_count;
1483 RTI_SIZE_T max_transport_count;
1486 RTI_SIZE_T max_message_buffer_count;
1503 RTI_SIZE_T samples_per_hb;
1506 RTI_UINT32 max_window_size;
1517 RTI_INT32 max_hb_retries;
1520 RTI_INT32 max_samples;
1524 #define RTPS_RETRIES_UNLIMITED (-1)
1527 #define RTPS_RECEIVE_WINDOW_MAX_SIZE (256)
1530 #define RTPS_InterfaceProperty_INITIALIZER \
1532 NETIO_InterfaceProperty_INITIALIZER,\
1533 RTPS_INTERFACEMODE_UNDEFINED,\
1534 NETIO_Address_INITIALIZER, \
1543 RTPS_RETRIES_UNLIMITED, \
1548 struct RTPS_RouteProperty
1551 struct NETIORouteProperty _parent;
1559 struct REDA_SequenceNumber first_sn;
1564 struct REDA_SequenceNumber last_sn;
1569 struct REDA_SequenceNumber last_acked_sn;
1573 #define RTPSRouteProperty_INITIALIZER \
1575 NETIORouteProperty_INITIALIZER, \
1577 REDA_SEQUENCE_NUMBER_ZERO,\
1578 REDA_SEQUENCE_NUMBER_ZERO, \
1579 REDA_SEQUENCE_NUMBER_ZERO \
1585 MUST_CHECK_RETURN RTPSDllExport
struct RT_ComponentFactoryI*
1586 RTPS_InterfaceFactory_get_interface(
void);
1589 #define RTPS_MAX_DESTINATION_PER_PEER (4)
1595 #include "rtps/rtps_rtps_impl.h"