- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten - svcTabCommon: Export-Header-Fix via Fallback-Target - TrainingAreaBase: Stub-Header für BUILD_RTI=OFF - ddsfts: Include-Pfad und Dependency-Fixes - BUILD_RTI=OFF Compilation vollständig unterstützt Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
4800 lines
131 KiB
C
4800 lines
131 KiB
C
/*
|
|
* Copyright (c) 2024 Real-Time Innovations, Inc. All rights reserved.
|
|
* No duplications, whole or partial, manual or electronic, may be made
|
|
* without express written permission. Any such copies, or revisions thereof,
|
|
* must display this notice unaltered.
|
|
* This code contains trade secrets of Real-Time Innovations, Inc.
|
|
*/
|
|
#ifndef mig_rtps_h
|
|
#define mig_rtps_h
|
|
|
|
#ifndef osapi_type_h
|
|
#include "osapi/osapi_type.h"
|
|
#endif
|
|
#ifndef osapi_rtpsGuid_h
|
|
#include "osapi/osapi_rtpsGuid.h"
|
|
#endif
|
|
#ifndef reda_epoch_h
|
|
#include "reda/reda_epoch.h"
|
|
#endif
|
|
#ifndef reda_inlineList_h
|
|
#include "reda/reda_inlineList.h"
|
|
#endif
|
|
#ifndef reda_sequenceNumber_h
|
|
#include "reda/reda_sequenceNumber.h"
|
|
#endif
|
|
#ifndef cdr_type_h
|
|
#include "cdr/cdr_type.h"
|
|
#endif
|
|
#ifndef transport_common_h
|
|
#include "transport/transport_common.h"
|
|
#endif
|
|
#ifndef mig_dll_h
|
|
#include "mig/mig_dll.h"
|
|
#endif
|
|
#ifndef cdr_stream_h
|
|
#include "cdr/cdr_stream.h"
|
|
#endif
|
|
#ifndef xcdr_rtps_h
|
|
#include "xcdr/xcdr_rtps.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* Doxygen file-level documentation =====================================*/
|
|
|
|
/* ======= */
|
|
/* DOXYGEN */
|
|
/* ======= */
|
|
|
|
/*e \file
|
|
\brief RTPS protocol defined types, implemented in C.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsClass MIGRtps
|
|
\ingroup MIGModule
|
|
\brief The RTPS protocol defines many types. This submodule is a concrete
|
|
implementation of the data types necessary for RTPS communication.
|
|
For detailed explanation, see RTPS protocol.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsBitmapClass MIGRtpsBitmap
|
|
\ingroup MIGRtpsClass
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsParameterSequenceClass MIGRtpsParameterSequence
|
|
\ingroup MIGModule
|
|
\brief optional parameter sequence
|
|
For detailed explanation, see RTPS protocol.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsPidModule MIGRtpsPid
|
|
\ingroup MIGRtpsModule
|
|
@brief RTPS defined parameter ID.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsSubmessageFlagClass MIGRtpsSubmessageFlag
|
|
\ingroup MIGRtpsClass
|
|
\brief Submessages may have flag bitfield, which impart more meaning
|
|
to the contents.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsSubmessageVarStatusInfoClass MIGRtpsSubmessageVarStatusInfo
|
|
\ingroup MIGRtpsClass
|
|
\brief VAR submessages may have status info bitfield, which impart more
|
|
meaning to the contents.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsSequenceNumberClass MIGRtpsSequenceNumber
|
|
\ingroup MIGRtpsClass
|
|
\brief A logical derived class of \ref REDASequenceNumber, which exists solely
|
|
to supply helper methods to deal with RTPS protocol aspect.
|
|
*/
|
|
|
|
/*e \defgroup MIGRtpsVirtualWriterInfoClass MIGRtpsVirtualWriterInfo
|
|
\ingroup MIGRtps
|
|
\brief
|
|
*/
|
|
|
|
/* ============== */
|
|
/* END OF DOXYGEN */
|
|
/* ============== */
|
|
|
|
/* ======= */
|
|
/* DEFINES */
|
|
/* ======= */
|
|
|
|
/* ================= */
|
|
/* SIZES AND LENGTHS */
|
|
/* ================= */
|
|
|
|
|
|
#define MIG_RTPS_APP_ACK_MAX_USER_DATA_SIZE 32768
|
|
|
|
|
|
#define MIG_RTPS_CRC_32_SIZE (4)
|
|
|
|
|
|
#define MIG_RTPS_CRC_64_SIZE (8)
|
|
|
|
|
|
#define MIG_RTPS_CRC_128_SIZE (16)
|
|
|
|
|
|
#define MIG_RTPS_CRC_MAX_SIZE MIG_RTPS_CRC_128_SIZE
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_CRC_SUBMESSAGE_CONTENT_SIZE (8)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_SUBMESSAGE_HEADER_SIZE ((RTI_UINT16) 4)
|
|
|
|
|
|
/**
|
|
* @brief Size of a CRC submessage.
|
|
*/
|
|
#define MIG_RTPS_CRC_SIZE \
|
|
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE + MIG_RTPS_CRC_SUBMESSAGE_CONTENT_SIZE)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
/*
|
|
* DATA_BATCH submsg overhead (40 bytes total) without including inlineQos
|
|
* and batchSampleInfo.
|
|
* - submessage overhead (4 bytes)
|
|
* - extraFlags (2 bytes)
|
|
* - octetsToInlineQos (2 bytes)
|
|
* - readerId (4 bytes)
|
|
* - writerId (4 bytes)
|
|
* - batchSN (8 bytes)
|
|
* - firstSampleSN (8 bytes)
|
|
* - offsetToLastSampleSN (4 bytes)
|
|
* - batchSampleCount (4 bytes)
|
|
*/
|
|
#define MIG_RTPS_DATA_BATCH_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 36)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MIN (8)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_AVG \
|
|
MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MIN
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
/*
|
|
* DATA_FRAG submsg overhead (36 bytes total):
|
|
* - submessage overhead (4 bytes)
|
|
* - extraFlags (2 bytes)
|
|
* - octetsToInlineQos (2 bytes)
|
|
* - readerId (4 bytes)
|
|
* - writerId (4 bytes)
|
|
* - writerSN (8 bytes)
|
|
* - fragmentStartingNum (4 bytes)
|
|
* - fragmentsInSubmessage (2 bytes)
|
|
* - fragmentSize (2 bytes)
|
|
* - sampleSize (4 bytes)
|
|
*/
|
|
#define MIG_RTPS_DATA_FRAG_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 32)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
/*
|
|
* DATA_FRAG_SESSION submsg overhead (44 bytes total):
|
|
* Adds virtualWriterSN to the DATA_FRAG size.
|
|
*/
|
|
#define MIG_RTPS_DATA_FRAG_SESSION_SIZE (MIG_RTPS_DATA_FRAG_SIZE + 8)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
/*
|
|
* \brief Minimum size of a DATA submessage (so no inlineQos or serialized data)
|
|
* without the submessage header.
|
|
* Accounts for extraFlags (2B), octectsToInlineQos (2B), readerId (4B) and
|
|
* writerId (4B) and writerSN (8B).
|
|
* Refer to the RTPS Specification 2.3. - Section 9.4.5.3.
|
|
* This differs from MIG_RTPS_DATA_SIZE in that here we are not considering the
|
|
* MIG_RTPS_SUBMESSAGE_HEADER_SIZE (4B).
|
|
*/
|
|
#define MIG_RTPS_DATA_SUBMESSAGE_MIN_CONTENT_SIZE (20)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
/*
|
|
* @brief Minimum size of a DATA submessage.
|
|
* Refer to the RTPS Specification 2.3. - Section 9.4.5.3.
|
|
*/
|
|
#define MIG_RTPS_DATA_SIZE \
|
|
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE \
|
|
+ MIG_RTPS_DATA_SUBMESSAGE_MIN_CONTENT_SIZE)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
/*
|
|
* DATA_SESSION submsg overhead (32 bytes total):
|
|
* - submessage overhead (4 bytes)
|
|
* - extraFlags (2 bytes)
|
|
* - octetsToInlineQos (2 bytes)
|
|
* - readerId (4 bytes)
|
|
* - writerId (4 bytes)
|
|
* - writerSN (8 bytes)
|
|
* - writerVSN (8 bytes)
|
|
*/
|
|
#define MIG_RTPS_DATA_SESSION_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 28)
|
|
|
|
|
|
#define MIG_RTPS_EPOCH_SIZE (4)
|
|
|
|
|
|
/*
|
|
* @brief Filter signature length
|
|
*/
|
|
|
|
#define MIG_RTPS_FILTER_SIGNATURE_LENGTH 16
|
|
|
|
|
|
/*RTPS.2.0*/
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_GUID_PREFIX_SIZE (12)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@see MIGRtpsGuid_toString
|
|
*/
|
|
|
|
#define MIG_RTPS_GUID_STRING_LENGTH (44)
|
|
|
|
|
|
#define MIG_RTPS_GAP_SIZE_SERIALIZED (52)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_HEADER_MAGIC_WORD_SIZE (4)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_HEADER_SIZE ((RTI_UINT16) 20) /*RTPS.2.0*/
|
|
|
|
|
|
#define MIG_RTPS_HEARTBEAT_BATCH_SIZE_SERIALIZED (48)
|
|
|
|
|
|
#define MIG_RTPS_HEARTBEAT_SIZE_SERIALIZED (32)
|
|
|
|
|
|
/*
|
|
* @brief Size of an INFO_DST submessage.
|
|
*/
|
|
#define MIG_RTPS_INFO_DESTINATION_SIZE \
|
|
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE + MIG_RTPS_GUID_PREFIX_SIZE)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_INFO_SOURCE_UNUSED_FIELD_SIZE (4)
|
|
|
|
|
|
/*
|
|
* @brief Size of an INFO_TS submessage.
|
|
*/
|
|
#define MIG_RTPS_INFO_TS_SIZE (MIG_RTPS_SUBMESSAGE_HEADER_SIZE + 8)
|
|
|
|
|
|
#define MIG_RTPS_KEY_HASH_INVALID_LENGTH 0
|
|
|
|
|
|
#define MIG_RTPS_KEY_HASH_MAX_LENGTH 16
|
|
|
|
|
|
/*
|
|
* CORE-6181: maximum string length = length representation (4) +
|
|
* string (2 characters per byte) + null character (1)
|
|
*/
|
|
#define MIG_RTPS_KEY_HASH_STRING_MAX_LENGTH \
|
|
(4 + (2 * MIG_RTPS_KEY_HASH_MAX_LENGTH) + 1)
|
|
|
|
|
|
#define MIG_RTPS_NACKFRAG_SIZE_SERIALIZED (56)
|
|
|
|
|
|
#define MIG_RTPS_OCTETS_TO_ENCAPSULATION_ID_SIZE (4)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_SIZE (2)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_SUBMESSAGE_HEADER_SIZE_MAX (64)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_SUBMESSAGE_SIZE_MIN (8)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_VENDOR_ID_SIZE (2)
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass */
|
|
|
|
#define MIG_RTPS_VIRTUAL_WRITER_INFO_MAX_OVERHEAD_SIZE (48)
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass */
|
|
|
|
#define MIG_RTPS_WRITER_INFO_MAX_HEADER_OVERHEAD_SIZE \
|
|
(8) /* entityId + unsigned long */
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_INFO_SOURCE_CONTENT_SIZE \
|
|
(MIG_RTPS_INFO_SOURCE_UNUSED_FIELD_SIZE + MIG_RTPS_PROTOCOL_VERSION_SIZE \
|
|
+ MIG_RTPS_VENDOR_ID_SIZE + MIG_RTPS_GUID_PREFIX_SIZE)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_INFO_SOURCE_SIZE \
|
|
(MIG_RTPS_SUBMESSAGE_HEADER_SIZE + MIG_RTPS_INFO_SOURCE_CONTENT_SIZE)
|
|
|
|
|
|
/* ======================== */
|
|
/* END OF SIZES AND LENGTHS */
|
|
/* ======================== */
|
|
|
|
/* ============================== */
|
|
/* MAX, DEFAULT OR INVALID VALUES */
|
|
/* ============================== */
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_APP_ID_AUTO (0x00000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_APP_ID_UNKNOWN RTI_OSAPI_RTPS_APP_ID_UNKNOWN
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_APP_ID_ZERO (0x00000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass */
|
|
|
|
#define MIG_RTPS_BITMAP_32BITS_ARRAY_SIZE_MAX (8) /* 256/32 = 8 */
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
Can only handle distance that doesn't overflow with int anyway.
|
|
*/
|
|
|
|
#define MIG_RTPS_BITMAP_DISTANCE_MAX (0x7FFFFFFF)
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass */
|
|
|
|
#define MIG_RTPS_BITMAP_SIZE_MAX (256)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
The size of the sample info ignoring the inline parameters is 20 bytes
|
|
The MIG_RTPS_BATCHDATA_SAMPLEINFO_SIZE_MAX is considering five possible inline
|
|
parameters:
|
|
- KEYHASH (4 + 16)
|
|
- STATUSINFO (4 + 4)
|
|
- ORIGWRITERINFO (4 + 24)
|
|
- RELATEDORIGWRITERINFO (4 + 24)
|
|
- SOURCE_GUID (4 + 16)
|
|
- RELATED_SOURCE_GUID (4 + 16)
|
|
- RELATED_READER_GUID (4 + 16)
|
|
- RELATED_EPOCH (4 + 8)
|
|
- SENTINEL (4)
|
|
*/
|
|
|
|
/* Inline param */
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_INLINE_PARAM_SIZE_MAX (160)
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_INLINE_PARAM_SIZE_MAX_WITHOUT_KEYHASH \
|
|
(140)
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_INLINE_PARAM_UNKEYED_SIZE_MAX (140)
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MAX (180)
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_SIZE_MAX_WITHOUT_INLINE_PARAM (20)
|
|
|
|
|
|
#define MIG_RTPS_DATA_INLINE_QOS_OFFSET_DEFAULT (16)
|
|
|
|
|
|
#define MIG_RTPS_DOMAIN_DEFAULT (-1)
|
|
|
|
|
|
#define MIG_RTPS_DOMAIN_TAG_DEFAULT (NULL)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_GUID_AUTO \
|
|
{ \
|
|
MIG_RTPS_GUID_PREFIX_AUTO, MIG_RTPS_OBJECT_ID_AUTO \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_GUID_UNKNOWN \
|
|
{ \
|
|
MIG_RTPS_GUID_PREFIX_UNKNOWN, MIG_RTPS_OBJECT_ID_UNKNOWN \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_GUID_ZERO \
|
|
{ \
|
|
MIG_RTPS_GUID_PREFIX_ZERO, MIG_RTPS_OBJECT_ID_ZERO \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_GUID_PREFIX_AUTO \
|
|
{ \
|
|
MIG_RTPS_HOST_ID_AUTO, MIG_RTPS_APP_ID_AUTO, MIG_RTPS_INSTANCE_ID_AUTO \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_GUID_PREFIX_UNKNOWN \
|
|
{ \
|
|
MIG_RTPS_HOST_ID_UNKNOWN, MIG_RTPS_APP_ID_UNKNOWN, \
|
|
MIG_RTPS_INSTANCE_ID_UNKNOWN \
|
|
}
|
|
|
|
|
|
#define MIG_RTPS_GUID_PREFIX_ZERO \
|
|
{ \
|
|
MIG_RTPS_HOST_ID_ZERO, MIG_RTPS_APP_ID_ZERO, MIG_RTPS_INSTANCE_ID_ZERO \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_HOST_ID_AUTO (0x00000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_HOST_ID_UNKNOWN RTI_OSAPI_RTPS_HOST_ID_UNKNOWN
|
|
|
|
|
|
#define MIG_RTPS_HOST_ID_ZERO (0x00000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_INSTANCE_ID_AUTO (0x00000000) /*RTPS.2.0*/
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_INSTANCE_ID_UNKNOWN \
|
|
RTI_OSAPI_RTPS_INSTANCE_ID_UNKNOWN /*RTPS.2.0*/
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_INSTANCE_ID_ZERO (0x00000000) /*RTPS.2.0*/
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_IP_ADDRESS_INVALID (0)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_KEY_HASH_DEFAULT \
|
|
{ \
|
|
MIG_RTPS_KEY_HASH_NIL, /* value */ \
|
|
MIG_RTPS_KEY_HASH_MAX_LENGTH /* length */ \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_KEY_HASH_INVALID \
|
|
{ \
|
|
MIG_RTPS_KEY_HASH_NIL, /* value */ \
|
|
MIG_RTPS_KEY_HASH_INVALID_LENGTH /* length */ \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_KEY_HASH_NIL \
|
|
{ \
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
|
|
}
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_PORT_INVALID (0)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_SUBMESSAGE_ALIGNMENT (4)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_SUBMESSAGE_OCTETS_TO_NEXT_HEADER_MAX (0xFFFF)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_OBJECT_KEY_UNKNOWN (0)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Meta traffic bit.
|
|
*/
|
|
|
|
#define MIG_RTPS_OBJECT_KIND_M_BIT (0x80)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Reserved object bit.
|
|
*/
|
|
|
|
#define MIG_RTPS_OBJECT_KIND_R_BIT (0x40)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_PATHNAME_LEN_MAX (255)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_TIMESTAMP_FRAC_DEFAULT (0)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_TIMESTAMP_SEC_DEFAULT (0)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_UNPROTECTED_CHANNELS_MAX_LENGTH_DEFAULT (1048576) /* 1MB */
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
|
|
|
|
#define MIG_RTPS_NO_STATUS_INFO (0x00000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
|
|
|
|
#define MIG_RTPS_D_STATUS_INFO (0x00000001)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
|
|
|
|
#define MIG_RTPS_U_STATUS_INFO (0x00000002)
|
|
|
|
|
|
/* ===================================== */
|
|
/* END OF MAX, DEFAULT OR INVALID VALUES */
|
|
/* ===================================== */
|
|
|
|
/* ========== */
|
|
/* OBJECT IDS */
|
|
/* ========== */
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_OBJECT_ID_UNKNOWN (0x00000000)
|
|
#define MIG_RTPS_OBJECT_ID_ZERO (0x00000000)
|
|
#define MIG_RTPS_OBJECT_ID_AUTO (0x00000000)
|
|
|
|
#define MIG_RTPS_OBJECT_ID_PARTICIPANT (0x000001C1)
|
|
#define MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER \
|
|
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_READER (0x000100C7)
|
|
|
|
#define MIG_RTPS_OBJECT_ID_PUB_WRITER NDDS_TRANSPORT_RTPS_OBJECT_ID_PUB_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_SUB_WRITER NDDS_TRANSPORT_RTPS_OBJECT_ID_SUB_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_PUB_READER NDDS_TRANSPORT_RTPS_OBJECT_ID_PUB_READER
|
|
#define MIG_RTPS_OBJECT_ID_SUB_READER NDDS_TRANSPORT_RTPS_OBJECT_ID_SUB_READER
|
|
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_PUB_WRITER (0xFF0003C2)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_SUB_WRITER (0xFF0004C2)
|
|
|
|
#define MIG_RTPS_OBJECT_ID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER \
|
|
NDDS_TRANSPORT_RTPS_OBJECT_ID_P2P_PARTICIPANT_LIVELINESS_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER (0x000200C7)
|
|
|
|
/* SERVICE REQUEST object IDs are in the entity kind vendor-builtin range */
|
|
#define MIG_RTPS_OBJECT_ID_SERVICE_REQUEST_WRITER (0x00020082)
|
|
#define MIG_RTPS_OBJECT_ID_SERVICE_REQUEST_READER (0x00020087)
|
|
|
|
/* LOCATOR PING object IDs are in the entity kind vendor-builtin range */
|
|
#define MIG_RTPS_OBJECT_ID_LOCATOR_PING_MESSAGE_WRITER (0x00020182)
|
|
#define MIG_RTPS_OBJECT_ID_LOCATOR_PING_MESSAGE_READER (0x00020187)
|
|
|
|
/* MONITORING object IDs */
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_PERIODIC_WRITER (0x00000183)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_PERIODIC_READER (0x00000184)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_PERIODIC_READER_CACHE (0x0001843C)
|
|
/* The Monitoring periodic reader does not have a related cache reader */
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_EVENT_WRITER (0x00000283)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_EVENT_READER (0x00000284)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_EVENT_READER_CACHE (0x0002843C)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_LOGGING_WRITER (0x00000383)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_LOGGING_READER (0x00000384)
|
|
#define MIG_RTPS_OBJECT_ID_MONITORING_LOGGING_READER_CACHE (0x0003843C)
|
|
|
|
/* DDS Security: stateless entities */
|
|
#define MIG_RTPS_OBJECT_ID_STATELESS_MESSAGE_WRITER (0x000201C3)
|
|
#define MIG_RTPS_OBJECT_ID_STATELESS_MESSAGE_READER (0x000201C4)
|
|
|
|
/* DDS Security: secure participant reliable discovery entities */
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_SPDP_BUILTIN_PARTICIPANT_RELIABLE_WRITER \
|
|
(0xFF0101C2)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_SPDP_BUILTIN_PARTICIPANT_RELIABLE_READER \
|
|
(0xFF0101C7)
|
|
|
|
/* DDS Security: secure participant message entities */
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER \
|
|
NDDS_TRANSPORT_RTPS_OBJECT_ID_SECURE_P2P_PARTICIPANT_LIVELINESS_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER \
|
|
(0xFF0200C7)
|
|
|
|
/* DDS Security: secure volatile entities */
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_VOLATILE_MESSAGE_WRITER (0xFF0202C3)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_VOLATILE_MESSAGE_READER (0xFF0202C4)
|
|
|
|
/* RTI Secure DDS: secure service request */
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_SERVICE_REQUEST_WRITER (0xFF020082)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_SERVICE_REQUEST_READER (0xFF020087)
|
|
|
|
/* DDS SPDP2: reliable participant configuration entities */
|
|
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER \
|
|
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_BOOTSTRAP_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER \
|
|
(0x00010087)
|
|
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_WRITER \
|
|
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_CONFIG_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_READER \
|
|
(0x00010187)
|
|
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_WRITER \
|
|
NDDS_TRANSPORT_RTPS_OBJECT_ID_SPDP2_PARTICIPANT_SECURE_CONFIG_WRITER
|
|
#define MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_READER \
|
|
(0xFF010187)
|
|
|
|
/* Type lookup */
|
|
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_WRITER (0x000300C3)
|
|
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_READER (0x000300C4)
|
|
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_WRITER (0x000301C3)
|
|
#define MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_READER (0x000301C4)
|
|
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
|
|
(0xFF0300C3)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_READER \
|
|
(0xFF0300C4)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_WRITER (0xFF0301C3)
|
|
#define MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_READER (0xFF0301C4)
|
|
|
|
/* ================= */
|
|
/* END OF OBJECT IDS */
|
|
/* ================= */
|
|
|
|
|
|
/* ============== */
|
|
/* ENDPOINTS BITS */
|
|
/* ============== */
|
|
|
|
/* ====================== */
|
|
/* BUILTIN ENDPOINTS BITS */
|
|
/* ====================== */
|
|
|
|
/* Protocol defined built-in endpoint bits */
|
|
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 0)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_READER \
|
|
((RTI_UINT32) 0x00000001 << 1)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PUBLICATION_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 2)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PUBLICATION_READER \
|
|
((RTI_UINT32) 0x00000001 << 3)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SUBSCRIPTION_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 4)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SUBSCRIPTION_READER \
|
|
((RTI_UINT32) 0x00000001 << 5)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 6)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_PROXY_READER \
|
|
((RTI_UINT32) 0x00000001 << 7)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 8)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATE_READER \
|
|
((RTI_UINT32) 0x00000001 << 9)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 10)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_MESSAGE_READER \
|
|
((RTI_UINT32) 0x00000001 << 11)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 12)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REQUEST_READER \
|
|
((RTI_UINT32) 0x00000001 << 13)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REPLY_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 14)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_TYPE_LOOKUP_SERVICE_REPLY_READER \
|
|
((RTI_UINT32) 0x00000001 << 15)
|
|
/* DDS Security related endpoints */
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PUBLICATION_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 16)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PUBLICATION_READER \
|
|
((RTI_UINT32) 0x00000001 << 17)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_SUBSCRIPTION_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 18)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_SUBSCRIPTION_READER \
|
|
((RTI_UINT32) 0x00000001 << 19)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 20)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_MESSAGE_READER \
|
|
((RTI_UINT32) 0x00000001 << 21)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATELESS_MESSAGE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 22)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_PARTICIPANT_STATELESS_MESSAGE_READER \
|
|
((RTI_UINT32) 0x00000001 << 23)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_VOLATILE_MESSAGE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 24)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_PARTICIPANT_VOLATILE_MESSAGE_READER \
|
|
((RTI_UINT32) 0x00000001 << 25)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_RELIABLE_PARTICIPANT_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 26)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_RELIABLE_PARTICIPANT_READER \
|
|
((RTI_UINT32) 0x00000001 << 27)
|
|
|
|
/* ============================= */
|
|
/* END OF BUILTIN ENDPOINTS BITS */
|
|
/* ============================= */
|
|
|
|
/* ========================== */
|
|
/* BUILTIN ENDPOINTS EXT BITS */
|
|
/* ========================== */
|
|
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 0)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_READER \
|
|
((RTI_UINT32) 0x00000001 << 1)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REPLY_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 2)
|
|
#define MIG_RTPS_BUILTIN_ENDPOINT_SECURE_TYPE_LOOKUP_SERVICE_REPLY_READER \
|
|
((RTI_UINT32) 0x00000001 << 3)
|
|
|
|
/* ================================= */
|
|
/* END OF BUILTIN ENDPOINTS EXT BITS */
|
|
/* ================================= */
|
|
|
|
|
|
/* ====================================== */
|
|
/* VENDOR SPECIFIC BUILTIN ENDPOINTS BITS */
|
|
/* ====================================== */
|
|
|
|
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SERVICE_REQUEST_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 0)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SERVICE_REQUEST_READER \
|
|
((RTI_UINT32) 0x00000001 << 1)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_LOCATOR_PING_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 2)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_LOCATOR_PING_READER \
|
|
((RTI_UINT32) 0x00000001 << 3)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SECURE_SERVICE_REQUEST_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 4)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SECURE_SERVICE_REQUEST_READER \
|
|
((RTI_UINT32) 0x00000001 << 5)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_CDS_ANNOUNCER_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 6)
|
|
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 7)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_RELIABLE_READER \
|
|
((RTI_UINT32) 0x00000001 << 8)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 9)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_SECURE_RELIABLE_READER \
|
|
((RTI_UINT32) 0x00000001 << 10)
|
|
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_PERIODIC_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 11)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_PERIODIC_READER \
|
|
((RTI_UINT32) 0x00000001 << 12)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_EVENT_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 13)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_EVENT_READER \
|
|
((RTI_UINT32) 0x00000001 << 14)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_LOGGING_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 15)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_MONITORING_LOGGING_READER \
|
|
((RTI_UINT32) 0x00000001 << 16)
|
|
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER \
|
|
((RTI_UINT32) 0x00000001 << 17)
|
|
#define MIG_RTPS_VENDOR_BUILTIN_ENDPOINT_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER \
|
|
((RTI_UINT32) 0x00000001 << 18)
|
|
|
|
|
|
/* ============================================= */
|
|
/* END OF VENDOR SPECIFIC BUILTIN ENDPOINTS BITS */
|
|
/* ============================================= */
|
|
|
|
/* ===================== */
|
|
/* END OF ENDPOINTS BITS */
|
|
/* ===================== */
|
|
|
|
/* ===== */
|
|
/* FLAGS */
|
|
/* ===== */
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass */
|
|
|
|
#define MIG_RTPS_NO_FLAG ((MIGRtpsSubmessageFlag) 0x00)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether this is a big endian/little endian message
|
|
*/
|
|
|
|
#define MIG_RTPS_ENDIAN_FLAG ((MIGRtpsSubmessageFlag) 0x01)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief MessageLengthFlag tells if the HE contains messageLength
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_MSG_LEN_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief timestampFlag tells if the HE contains timestamp
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_TS_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief RTPS 2.5 UExtension4Flag
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_UE4_FLAG ((MIGRtpsSubmessageFlag) 0x08)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief RTPS 2.5 WExtension8Flag
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_WE8_FLAG ((MIGRtpsSubmessageFlag) 0x10)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief One of two checksum flags: "C1" in RTPS 2.5 specification.
|
|
The ChecksumFlags are represented with the literal 'C'. There are three two
|
|
flags: C1 and C2. When the two 'C' flags are set to zero, the HeaderExtension
|
|
does not include the messageChecksum, any other value of the flags indicates
|
|
the messageChecksum is included (possible options are: NONE, CRC-32, CRC-64,
|
|
MD5 (128 bit)).
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_CHECKSUM1_FLAG ((MIGRtpsSubmessageFlag) 0x40)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief Second of two checksum flags: "C2" in RTPS 2.5 specification.
|
|
The ChecksumFlags are represented with the literal 'C'. There are three two
|
|
flags: C1 and C2. When the two 'C' flags are set to zero, the HeaderExtension
|
|
does not include the messageChecksum, any other value of the flags indicates
|
|
the messageChecksum is included (possible options are: NONE, CRC-32, CRC-64,
|
|
MD5 (128 bit)).
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_CHECKSUM2_FLAG ((MIGRtpsSubmessageFlag) 0x20)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEADER_EXTENSION
|
|
\brief ParametersFlag, tells if HE contains parameters
|
|
*/
|
|
|
|
#define MIG_RTPS_HE_PARAM_FLAG ((MIGRtpsSubmessageFlag) 0x80)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_INFO_REPLY
|
|
*/
|
|
|
|
#define MIG_RTPS_INFO_REPLY_M_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_INFO_TS
|
|
*/
|
|
|
|
#define MIG_RTPS_INFO_TS_I_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_ACK
|
|
*/
|
|
|
|
#define MIG_RTPS_ACK_F_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_NACK
|
|
*/
|
|
|
|
#define MIG_RTPS_ACK_N_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_F_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_BATCH
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_BATCH_F_FLAG MIG_RTPS_HEARTBEAT_F_FLAG
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_L_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_BATCH
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_BATCH_L_FLAG MIG_RTPS_HEARTBEAT_L_FLAG
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_VIRTUAL
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_VIRTUAL_V_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_VIRTUAL
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_VIRTUAL_W_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_HEARTBEAT_VIRTUAL
|
|
*/
|
|
|
|
#define MIG_RTPS_HEARTBEAT_VIRTUAL_N_FLAG ((MIGRtpsSubmessageFlag) 0x08)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_ISSUE
|
|
*/
|
|
|
|
#define MIG_RTPS_ISSUE_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_ISSUE
|
|
*/
|
|
|
|
#define MIG_RTPS_ISSUE_D_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
#define MIG_RTPS_DATA_FLAGS_NONE (0)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_DATA
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_DATA
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_D_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_DATA
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_K_FLAG ((MIGRtpsSubmessageFlag) 0x08)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_VAR
|
|
*/
|
|
|
|
#define MIG_RTPS_VAR_H_FLAG ((MIGRtpsSubmessageFlag) 0x08)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_VAR
|
|
*/
|
|
|
|
#define MIG_RTPS_VAR_I_FLAG ((MIGRtpsSubmessageFlag) 0x10)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_DATA_FRAG
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_FRAG_H_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_DATA_FRAG
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_FRAG_K_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
@see MIGRtpsSubmessageId#MIG_RTPS_DATA_BATCH
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether a batch sample has timestamp or not
|
|
|
|
Use in SAMPLE_INFO inside BATCH_DATA messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_T_FLAG ((MIGRtpsSubmessageFlag) 0x01)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether or not a batch sample has inlienQoS
|
|
|
|
Use in SAMPLE_INFO inside BATCH_DATA messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_Q_FLAG ((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether or not a batch sample has sequence offset
|
|
|
|
Use in SAMPLE_INFO inside BATCH_DATA messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_O_FLAG ((MIGRtpsSubmessageFlag) 0x04)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether or not a batch sample has data
|
|
|
|
Use in SAMPLE_INFO inside BATCH_DATA messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_D_FLAG ((MIGRtpsSubmessageFlag) 0x08)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether a batch sample is valid or invalid
|
|
|
|
Use in SAMPLE_INFO inside BATCH_DATA messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_I_FLAG ((MIGRtpsSubmessageFlag) 0x10)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief tells whether or not a batch sample has the serialized key or not
|
|
|
|
Use in SAMPLE_INFO inside BATCH_DATA messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_DATA_BATCH_SAMPLE_INFO_K_FLAG ((MIGRtpsSubmessageFlag) 0x20)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief In an APP_ACK message, for a concrete ack'd
|
|
sn interval indicates if the payload is invalid
|
|
|
|
Use in APP_ACK messages.
|
|
*/
|
|
|
|
#define MIG_RTPS_APP_ACK_I_FLAG ((MIGRtpsSubmessageFlag) 0x01)
|
|
|
|
|
|
/*e \ingroup MIGRtpsSubmessageFlagClass
|
|
\brief In SecureSubMsg messages. Used for security.
|
|
*/
|
|
|
|
#define MIG_RTPS_SUBMESSAGE_SECURITY_FLAG_MULTI_SUBMESSAGE \
|
|
((MIGRtpsSubmessageFlag) 0x02)
|
|
|
|
|
|
/* ============ */
|
|
/* END OF FLAGS */
|
|
/* ============ */
|
|
|
|
/* =============== */
|
|
/* PRODUCT VERSION */
|
|
/* =============== */
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief 1.0 version of protocol, which NDDS 3.0 implements
|
|
|
|
This definition must always be defined so we always have a default value
|
|
in the case that it is not specified by a remote node.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_1_0 (0x0100)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief 1.1 version of protocol.
|
|
|
|
This definition must always be defined so we always have a default value
|
|
in the case that it is not specified by a remote node.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_1_1 (0x0101)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief 1.2 version of protocol.
|
|
|
|
This definition must always be defined so we always have a default value
|
|
in the case that it is not specified by a remote node.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_1_2 (0x0102)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief 2.0 version of protocol.
|
|
|
|
This definition must always be defined so we always have a default value
|
|
in the case that it is not specified by a remote node.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_2_0 (0x0200) /*RTPS.2.0*/
|
|
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_2_1 (0x0201)
|
|
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_2_2 (0x0202)
|
|
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_2_3 (0x0203)
|
|
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_2_4 (0x0204)
|
|
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_2_5 (0x0205)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Version of protocol this MIG module supports.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION MIG_RTPS_PROTOCOL_VERSION_2_5 /* RTPS.2.5 */
|
|
|
|
|
|
/*
|
|
MIG_RTPS_PROTOCOL_VERSION 2.3 is DDSI-RTPS specification 2.2 + changes added by
|
|
DDS Security 1.1
|
|
MIG_RTPS_PROTOCOL_VERSION 2.4 is DDSI-RTPS specification 2.3
|
|
*/
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Major version of protocol this MIG module supports.
|
|
*/
|
|
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_MAJOR RTI_XCDR_RTPS_PROTOCOL_VERSION_MAJOR
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Minor version of protocol this MIG module supports.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_MINOR RTI_XCDR_RTPS_PROTOCOL_VERSION_MINOR
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Unknown version of the protocol.
|
|
*/
|
|
|
|
#define MIG_RTPS_PROTOCOL_VERSION_UNKNOWN (0x0000)
|
|
|
|
|
|
/**
|
|
* When a product version is equal to this value, it means that the product
|
|
* version is unknown (see documentation for the DDS_PRODUCTVERSION_UNKNOWN
|
|
* initializer of the equivalent DDS_ProductVersion_t type).
|
|
*
|
|
* The local product version is populated when the participant is created (see
|
|
* DDS_DomainParticipantPresentation_initialize).
|
|
* The remote product version is populated when asserting the remote endpoint
|
|
* (see PRESPsService_assertRemoteEndpointEx).
|
|
* It is also part of the builtin participant topic data and used in security
|
|
* to populate PRESTrustedParticipantInfo.
|
|
*
|
|
* Depending on its value, (de)serialization of the directed samples's GUID
|
|
* will be done in native endianness or in big endian. The default initializer
|
|
* value means that (de)serialization will be the default one: big endian.
|
|
*/
|
|
|
|
#define MIG_RTPS_PRODUCT_VERSION_MAJOR_DEFAULT 0
|
|
#define MIG_RTPS_PRODUCT_VERSION_MINOR_DEFAULT 0
|
|
#define MIG_RTPS_PRODUCT_VERSION_RELEASE_DEFAULT 0
|
|
#define MIG_RTPS_PRODUCT_VERSION_REVISION_DEFAULT 0
|
|
#define MIGRtpsProductVersion_INITIALIZER \
|
|
{ \
|
|
MIG_RTPS_PRODUCT_VERSION_MAJOR_DEFAULT, \
|
|
MIG_RTPS_PRODUCT_VERSION_MINOR_DEFAULT, \
|
|
MIG_RTPS_PRODUCT_VERSION_RELEASE_DEFAULT, \
|
|
MIG_RTPS_PRODUCT_VERSION_REVISION_DEFAULT \
|
|
}
|
|
/**
|
|
* Used to detect if we are setting the product version in writeParams.
|
|
* Setting the productVersion in writeParams is necessary to send a direct
|
|
* sample.
|
|
*/
|
|
#define MIG_RTPS_PRODUCT_VERSION_INVALID_INITIALIZER \
|
|
{ \
|
|
-1, -1, -1, -1 \
|
|
}
|
|
|
|
|
|
/* ====================== */
|
|
/* END OF PRODUCT VERSION */
|
|
/* ====================== */
|
|
|
|
/* ====== */
|
|
/* VENDOR */
|
|
/* ====== */
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
RTI vendor ID major.
|
|
*/
|
|
|
|
#define MIG_RTPS_VENDOR_ID_MAJOR RTI_XCDR_RTPS_VENDOR_ID_MAJOR
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
RTI vensor ID minor.
|
|
*/
|
|
|
|
#define MIG_RTPS_VENDOR_ID_MINOR RTI_XCDR_RTPS_VENDOR_ID_MINOR
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
RTI vendor ID (Pro)
|
|
*/
|
|
|
|
#define MIG_RTPS_VENDOR_ID_RTI (0x0101)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
RTI vendor ID (Micro)
|
|
*/
|
|
|
|
#define MIG_RTPS_VENDOR_ID_RTI_MICRO (0x010a)
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
Unknown/undeclared vendor.
|
|
*/
|
|
|
|
#define MIG_RTPS_VENDOR_ID_UNKNOWN (0x0000)
|
|
|
|
|
|
/* ============= */
|
|
/* END OF VENDOR */
|
|
/* ============= */
|
|
|
|
/* ============================================================= */
|
|
/* RTPS SPECIFICATION PID DEFINITIONS (MUST UNDERSTAND == FALSE) */
|
|
/* ============================================================= */
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Mask for ParameterId bit indicating subspace where
|
|
unrecognized PIDs are either ignored or treated as
|
|
incompatible QoS
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_INCOMPATIBLE_MASK (0x4000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Mask for ParameterId bit indicating subspace where
|
|
unrecognized PIDs are either ignored or treated as
|
|
incompatible QoS
|
|
*/
|
|
|
|
#define MIG_RTPS_EXTENDED_PID_INCOMPATIBLE_MASK (0x40000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Mask for ParameterId bit indicating if the PIDs
|
|
is vendor specific
|
|
*/
|
|
|
|
#define MIG_RTPS_EXTENDED_PID_VENDORSPECIFIC_MASK (0x80000000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Pad for parameter values in case they don't end on a 4-byte boundary
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PAD (0x0000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Indicate end of parameter sequence.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_SENTINEL (0x0001)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Allows the specification of large member ID and/or data length values;
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_EXTENDED (0x3F01)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::userDataQosPolicy : UserDataQosPolicy,
|
|
Subscription::userDataQosPolicy : UserDataQosPolicy
|
|
Application::userDataQosPolicy : UserDataQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_USER_DATA (0x002c)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::topic : PathName, Subscription::topic : PathName
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TOPIC_NAME (0x0005)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::typeName : TypeName,
|
|
Subscription::typeName : TypeName
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE_NAME (0x0007)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
* Used for domain ID
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DOMAIN_ID (0x000F)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
* Used for domain Tag. Must understand flag is set upon send (resulting on
|
|
* PID 0x4014).
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DOMAIN_TAG (0x0014)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::groupDataQosPolicy : GroupDataQosPolicy,
|
|
Subscription::groupDataQosPolicy : GroupDataQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_GROUP_DATA (0x002d)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::topicDataQosPolicy : TopicDataQosPolicy,
|
|
Subscription::topicDataQosPolicy : TopicDataQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TOPIC_DATA (0x002e)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publicatoin::durabilityQosPolicy : DurabilityQosPolicy
|
|
Used for field Subscription::durabilityQosPolicy : DurabilityQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DURABILITY (0x001d)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::durabilityQosPolicy : DurabilityServiceQosPolicy
|
|
Used for field Topic::durabilityQosPolicy : DurabilityServiceQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DURABILITY_SERVICE (0x001e)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::deadlineQosPolicy : DeadlineQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DEADLINE (0x0023)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::latencyBudgetQosPolicy : LatencyBudgetQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_LATENCY_BUDGET (0x0027)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::livelinessQosPolicy : LivelinessQosPolicy
|
|
Used for field Subscription::livelinessQosPolicy : LivelinessQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_LIVELINESS (0x001b)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::reliabilityOffered : RTI_UINT32
|
|
Used for field Subscription::reliabilityRequested : RTI_UINT32
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RELIABILITY (0x001a)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::lifespanQosPolicy : LifespanQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_LIFESPAN (0x002b)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::destinationOrderQosPolicy :
|
|
DestinationOrderQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DESTINATION_ORDER (0x0025)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Topic::history : HistoryQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_HISTORY (0x0040)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Topic::resourceLimits : ResourceLimitsQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RESOURCE_LIMITS (0x0041)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::ownershipQosPolicy : OwnershipQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_OWNERSHIP (0x001f)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Publication::strength : long
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_OWNERSHIP_STRENGTH (0x0006)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::presentationQosPolicy : PresentationQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PRESENTATION (0x0021)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::partitionQosPolicy : PartitionQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PARTITION (0x0029)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::minimumSeparation : NtpTime, AKA
|
|
Used for field Subscription::time_based_filter : TimeBasedFilterQosPolicy
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TIME_BASED_FILTER (0x0004)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule */
|
|
|
|
#define MIG_RTPS_PID_TRANSPORT_PRIORITY (0x0049)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Application::protocolVersion : ProtocolVersion
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PROTOCOL_VERSION (0x0015)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Application::vendorId : VendorId
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_VENDOR_ID (0x0016)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_UNICAST_LOCATOR6 (0x002f)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_MULTICAST_LOCATOR6 (0x0030)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX
|
|
Used for field Reader::userdataMulticastIPAddressList : IPAddress[]
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_MULTICAST_IPADDRESS (0x0011)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DEFAULT_UNICAST_LOCATOR6 (0x0031)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DEFAULT_MULTICAST_LOCATOR6 (0x0048)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_UNICAST_IPADDRESS_COUNT_MAX
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_METATRAFFIC_UNICAST_LOCATOR6 (0x0032)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_USERDATA_MULTICAST_IPADDRESS_COUNT_MAX
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_METATRAFFIC_MULTICAST_LOCATOR6 (0x0033)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_APP_IPADDRESS_COUNT_MAX
|
|
Used for field Application::unicastIPAddressList : IPAddress[]
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DEFAULT_UNICAST_IPADDRESS (0x000c)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Application::userdataUnicastPort :Port
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DEFAULT_UNICAST_PORT (0x000e)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field ParticipantProxy::metatrafficUnicastLocatorList.address :
|
|
IPv4Address_t
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_METATRAFFIC_UNICAST_IPADDRESS (0x0045)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Application::metatrafficUnicastPort : Port
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_METATRAFFIC_UNICAST_PORT (0x000d)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Array of max size MIG_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS_COUNT_MAX
|
|
Used for field Application::metatrafficMulticastIPAddressList: IPAddress[]
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_METATRAFFIC_MULTICAST_IPADDRESS (0x000b)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_METATRAFFIC_MULTICAST_PORT (0x0046)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
boolean
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_EXPECTS_INLINE_QOS (0x0043)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field DomainParticipant::manualLivelinessCount : unsigned long
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_MANUAL_LIVELINESS_COUNT (0x0034)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PARTICIPANT_BUILTIN_ENDPOINTS (0x0044)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field SDPParticipantData::leaseDuration NtpTime
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_LEASE_DURATION (0x0002)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Subscription::contentFilteredTopicProperties
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_CONTENT_FILTER_PROPERTY (0x0035)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for field Participant::propertyList
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PROPERTY_LIST (0x0059)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for participant GUID
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PARTICIPANT_GUID (0x0050)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for participant entity ID
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PARTICIPANT_ENTITY_ID (0x0051)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for GROUP GUID
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_GROUP_GUID (0x0052)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Used for Group OID
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_GROUP_ENTITY_ID (0x0053)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate filter signature inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_FILTER_SIGNATURE (0x0055)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate coherent set inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_COHERENT_SET (0x0056)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate directed write inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DIRECTED_WRITE (0x0057)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate builtin endpoint set inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_BUILTIN_ENDPOINT_MASK (0x0058)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ENDPOINT_GUID (0x005A)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate max sample serialized size inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_MAX_SAMPLE_SERIALIZED_SIZE (0x0060)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate original writer info inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ORIGINAL_WRITER_INFO (0x0061)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate entity name inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ENTITY_NAME (0x0062)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate group coherent set inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_GROUP_COHERENT_SET (0x0063)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_KEY_HASH (0x0070)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_STATUS_INFO (0x0071)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
XTypes
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE_OBJECT (0x0072)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
Data Representation - supported by reader, writer, topic
|
|
Allows data representation supported by the entity
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DATA_REPRESENTATION (0x0073)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
XTypes
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE_CONSISTENCY (0x0074)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
XTypes
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE_INFORMATION_V2 (0x0075)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
XTypes
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_BASE_TYPE_NAME (0x0076)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* RTPS 2.3 Liveliness.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_BUILTIN_ENDPOINT_QOS (0x0077)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Used for propagating the related DW/DR GUID in enhanced RPC discovery.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RELATED_ENTITY_GUID (0x0081)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Security
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_IDENTITY_TOKEN (0x1001)
|
|
#define MIG_RTPS_PID_PERMISSIONS_TOKEN (0x1002)
|
|
#define MIG_RTPS_PID_DATA_TAGS (0x1003)
|
|
#define MIG_RTPS_PID_ENDPOINT_SECURITY_PROTECTION_INFO (0x1004)
|
|
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_PROTECTION_INFO (0x1005)
|
|
|
|
/**
|
|
* DDS-Security implementations that support DDS-XTYPES shall advertise the
|
|
* availability of the Secure TypeLookup Built-In Endpoints using the Parameter
|
|
* with ID PID_AVAILABLE_BUILTIN_ENDPOINTS_EXT
|
|
*/
|
|
#define MIG_RTPS_PID_AVAILABLE_BUILTIN_ENDPOINTS_EX (0x1007)
|
|
|
|
/*
|
|
* 0x1006 is reserved for PID_IDENTITY_STATUS_TOKEN (Secure DDS 1.1,
|
|
* sec. 7.4.1.6) that we currently do not support.
|
|
*/
|
|
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_DIGITAL_SIGNATURE_ALGO (0x1010)
|
|
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_KEY_ESTABLISHMENT_ALGO (0x1011)
|
|
#define MIG_RTPS_PID_PARTICIPANT_SECURITY_SYMMETRIC_CIPHER_ALGO (0x1012)
|
|
#define MIG_RTPS_PID_ENDPOINT_SECURITY_SYMMETRIC_CIPHER_ALGO (0x1013)
|
|
|
|
|
|
/*
|
|
* NOTE: if you are adding a discovery-related PID, you need to do it here
|
|
* and add a redefinition in disc rtps.ifc.
|
|
*/
|
|
|
|
/* ========================================= */
|
|
/* END OF RTPS SPECIFICATION PID DEFINITIONS */
|
|
/* ========================================= */
|
|
|
|
/* ============================================================== */
|
|
/* RTI VENDOR SPECIFIC PID DEFINITIONS (MUST UNDERSTAND == FALSE) */
|
|
/* ============================================================== */
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Participant::productVersion
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PRODUCT_VERSION (0x8000)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Participant::pluginPromiscuityKind
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PLUGIN_PROMISCUITY_KIND_DEPRECATED (0x8001)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field:
|
|
- Publication::virtualGuid
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ENTITY_VIRTUAL_GUID (0x8002)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field:
|
|
- Publication::serviceKind
|
|
- Subscription::serviceKind
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_SERVICE (0x8003)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for TypeCode information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPECODE (0x8004)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for TypeCode information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DISABLE_ACKS (0x8005)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for Locator Filter information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_LOCATOR_FILTER_LIST (0x8006)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for Encapsulation information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_UNICAST_LOCATOR6_EX (0x8007)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for Encapsulation information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_MULTICAST_LOCATOR6_EX (0x8008)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used to indicate if virtual HB are expected
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_EXPECTS_VIRTUAL_HB (0x8009)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for Role Name information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ROLE_NAME (0x800A)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for Role Name information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ACK_KIND (0x800B)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for Encapsulation information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PRESENTATION_EX (0x800C)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field:
|
|
- Publisher::virtualGuid
|
|
|
|
This parameter is used only with GROUP access
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_GROUP_VIRTUAL_GUID (0x800D)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for peer host update
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PEER_HOST_EPOCH_DEPRECATED (0x800E)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for domain ID
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RTI_DOMAIN_ID (0x800F)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate related original writer info inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RELATED_ORIGINAL_WRITER_INFO (0x0083)
|
|
#define MIG_RTPS_PID_RELATED_ORIGINAL_WRITER_INFO_LEGACY (0x800F)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate related reader GUID inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RELATED_READER_GUID (0x8010)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for propagating transport settings
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TRANSPORT_INFO_LIST (0x8010)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate source GUID inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_SOURCE_GUID (0x8011)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for propagating the direct communication setting in
|
|
a PERSISTENT or TRANSIENT DR
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_DIRECT_COMMUNICATION (0x8011)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate related source GUID inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RELATED_SOURCE_GUID (0x8012)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate TopicQuery GUID inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TOPIC_QUERY_GUID (0x8013)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for propagating the topic-query-publication property
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TOPIC_QUERY_PUBLICATION (0x8014)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for propagating the endpoint property change epoch
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ENDPOINT_PROPERTY_CHANGE_EPOCH (0x8015)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for propagating the participant locator reachability lease expiration
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_REACHABILITY_LEASE_DURATION (0x8016)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for propagating the vendor-specific endpoints for a participant
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_VENDOR_BUILTIN_ENDPOINT_MASK (0x8017)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Used for propagating the vendor-specific endpoint security attributes.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ENDPOINT_SECURITY_ATTRIBUTES (0x8018)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate sample signature inline Qos
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_SAMPLE_SIGNATURE (0x8019)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Indicate sample epoch in metp
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_SAMPLE_EPOCH (0x8020)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Compressed version of the TYPE_OBJECT
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE_OBJECT_LB (0x8021)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Identifies the coherent set for an end coherent set sample
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_END_COHERENT_SET (0x8022)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Identifies the group coherent set for an end coherent set sample
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_END_GROUP_COHERENT_SET (0x8023)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Number of samples in a coherent set for a given DW
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_END_COHERENT_SET_SAMPLE_COUNT (0x8024)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Whether instance state consistency is enabled
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_ISC_KIND (0x8025)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Used for propagating vendor-specific participant security attributes.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_VENDOR_PARTICIPANT_SECURITY_PROTECTION_INFO (0x8026)
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Number of samples published in response to a snapshot TopicQuery.
|
|
* This inline QoS is only part of the last sample.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TOPIC_QUERY_SAMPLE_COUNT (0x8027)
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*
|
|
* Used to propagate topic alias names.
|
|
*/
|
|
#define MIG_RTPS_PID_TOPIC_NAME_ALIASES (0x8028)
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*
|
|
* Used to propagate type alias names.
|
|
*/
|
|
#define MIG_RTPS_PID_TYPE_NAME_ALIASES (0x8029)
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*
|
|
* Used to indicate whether the reliability kind needs to match exactly,
|
|
* when matching publications and subscriptions.
|
|
*/
|
|
#define MIG_RTPS_PID_EXACT_RELIABILITY_KIND_MATCH (0x802A)
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
*
|
|
* Used to send information about the features that this type supports.
|
|
* For example, a type can support zero copy and/or flat data.
|
|
* Prior to TypeObjectV2, this information was sent in the TypeObjectV1 object.
|
|
*/
|
|
#define MIG_RTPS_PID_TYPE_PROPERTIES (0x802B)
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Used to indicate that the number of samples published in response to a
|
|
* snapshot TopicQuery is unknown.
|
|
*
|
|
* This is a special value for the MIG_RTPS_PID_TOPIC_QUERY_SAMPLE_COUNT
|
|
* parameter. If the value of this parameter is
|
|
* MIG_TOPIC_QUERY_SAMPLE_COUNT_UNKNOWN, or not present, the number of samples
|
|
* published in response to a snapshot TopicQuery is unknown.
|
|
*/
|
|
|
|
#define MIG_TOPIC_QUERY_SAMPLE_COUNT_UNKNOWN (-1)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
* Used for propagating vendor-specific builtin endpoint attributes.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_VENDOR_BUILTIN_ENDPOINT_QOS (0x8077)
|
|
|
|
/*
|
|
* NOTE 1: if you are adding a discovery-related PID, you need to do it here
|
|
* and add a redefinition in disc rtps.ifc.
|
|
*
|
|
* NOTE 2: we decided NOT TO REUSE vendor specific GUIDs from now on. Even if
|
|
* they are used in different contexts (inline qos vs discovery). The only
|
|
* exceptions to this rule are relate_reader_guid/transport_info_list, and
|
|
* source_guid/direct_communication.
|
|
*/
|
|
|
|
/* ========================================== */
|
|
/* END OF RTI VENDOR SPECIFIC PID DEFINITIONS */
|
|
/* ========================================== */
|
|
|
|
/* ========================== */
|
|
/* DEPRECATED PID DEFINITIONS */
|
|
/* ========================== */
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Publication::persistence : NtpTime
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_PERSISTENCE_DEPRECATED (0x0003)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Publication::typeChecksum : TypeChecksum,
|
|
Subscription::typeChecksum : TypeChecksum
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE_CHECKSUM_DEPRECATED (0x0008)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for client server.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE2_NAME_DEPRECATED (0x0009)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for client server.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPE2_CHECKSUM_DEPRECATED (0x000a)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Publication::expectsAck : boolean
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_EXPECTS_ACK_DEPRECATED (0x0010)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Array of max size MIG_RTPS_PID_MANAGER_KEY_COUNT_MAX
|
|
Used for field Application::managerKeyList : unsigned long []
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_MANAGER_KEY_DEPRECATED (0x0012)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Publication::sendQueueSize : unsigned long.
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_SEND_QUEUE_SIZE_DEPRECATED (0x0013)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Manager::vargAppsSequenceNumberLast : SequenceNumber
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_VARGAPPS_SEQUENCE_NUMBER_LAST_DEPRECATED (0x0017)
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
Used for field Subscription::recvQueueSize : unsigned long
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_RECV_QUEUE_SIZE_DEPRECATED (0x0018)
|
|
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
DEPRECATED: Used for TypeCode information
|
|
*/
|
|
|
|
#define MIG_RTPS_PID_TYPECODE_DEPRECATED (0x0047)
|
|
|
|
|
|
/* ================================= */
|
|
/* END OF DEPRECATED PID DEFINITIONS */
|
|
/* ================================= */
|
|
|
|
/* ====== */
|
|
/* MACROS */
|
|
/* ====== */
|
|
|
|
|
|
#define MIGRtpsAppAckPerVirtualWriter_attachedToParent(self) \
|
|
((self)->_node.inlineList != NULL)
|
|
|
|
|
|
#define MIGRtpsAppAckPerVirtualWriter_getIntervalCount(self) \
|
|
((RTI_UINT32) ((self)->_list \
|
|
? REDASkiplist_getNodeCount(&(self)->_list->list) \
|
|
: ((self)->_interval ? 1 : (self)->_numIntervals)))
|
|
|
|
|
|
#define MIGRtpsAppAck_getVirtualWriterCount(self) \
|
|
((RTI_UINT32) ((self)->_list ? (RTI_UINT32) REDAInlineList_getSize( \
|
|
(self)->_list) \
|
|
: (self)->_numVirtualWriters))
|
|
|
|
|
|
#define MIGRtpsObjectId_isParticipantAnnouncementReader(oid__) \
|
|
((oid__) == MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_READER \
|
|
|| (oid__) \
|
|
== MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_READER)
|
|
|
|
|
|
#define MIGRtpsObjectId_isParticipantAnnouncementWriter(oid__) \
|
|
((oid__) == MIG_RTPS_OBJECT_ID_SPDP_PARTICIPANT_WRITER \
|
|
|| (oid__) \
|
|
== MIG_RTPS_OBJECT_ID_SPDP2_BUILTIN_PARTICIPANT_BOOTSTRAP_WRITER)
|
|
|
|
#define MIGRtpsObjectId_isTypeLookupServiceRequestWriter(oid__) \
|
|
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_WRITER \
|
|
|| (oid__) \
|
|
== MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_WRITER)
|
|
|
|
#define MIGRtpsObjectId_isTypeLookupServiceRequestReader(oid__) \
|
|
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REQUEST_READER \
|
|
|| (oid__) \
|
|
== MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REQUEST_READER)
|
|
|
|
#define MIGRtpsObjectId_isTypeLookupServiceReplyWriter(oid__) \
|
|
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_WRITER \
|
|
|| (oid__) == MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_WRITER)
|
|
|
|
#define MIGRtpsObjectId_isTypeLookupServiceReplyReader(oid__) \
|
|
((oid__) == MIG_RTPS_OBJECT_ID_TYPE_LOOKUP_SERVICE_REPLY_READER \
|
|
|| (oid__) == MIG_RTPS_OBJECT_ID_SECURE_TYPE_LOOKUP_SERVICE_REPLY_READER)
|
|
|
|
#define MIGRtpsObjectId_isTypeLookupServiceWriter(oid__) \
|
|
MIGRtpsObjectId_isTypeLookupServiceRequestWriter((oid__)) \
|
|
|| MIGRtpsObjectId_isTypeLookupServiceReplyWriter((oid__))
|
|
|
|
#define MIGRtpsObjectId_isTypeLookupServiceReader(oid__) \
|
|
MIGRtpsObjectId_isTypeLookupServiceRequestReader((oid__)) \
|
|
|| MIGRtpsObjectId_isTypeLookupServiceReplyReader((oid__))
|
|
|
|
/* ============= */
|
|
/* END OF MACROS */
|
|
/* ============= */
|
|
|
|
/* ======= */
|
|
/* RENAMES */
|
|
/* ======= */
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsGuid RTIOsapiRtpsGuid
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsGuidPrefix RTIOsapiRtpsGuidPrefix
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_CRC_KIND_DEFAULT MIG_RTPS_CRC_KIND_32
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_HEADER_EXTENSION_ENABLE_MESSAGE_LENGTH_DEFAULT RTI_FALSE
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIG_RTPS_HEADER_EXTENSION_ENABLE_TIMESTAMP_DEFAULT RTI_FALSE
|
|
|
|
/* ============== */
|
|
/* END OF RENAMES */
|
|
/* ============== */
|
|
|
|
/* ============== */
|
|
/* END OF DEFINES */
|
|
/* ============== */
|
|
|
|
/* ================ */
|
|
/* TYPE DEFINITIONS */
|
|
/* ================ */
|
|
|
|
typedef enum {
|
|
MIG_ACK_KIND_DATA = 1,
|
|
MIG_ACK_KIND_BATCH = 2,
|
|
MIG_ACK_KIND_SESSION = 3
|
|
} MIGAckKind;
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef const char *MIGConstRtpsDomainTag;
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef RTI_UINT32 MIGRtpsAppId;
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* \brief Different CRC kinds that can be used to compute CRC of RTPS message.
|
|
* The name of each kind contain the length of the CRC in bits.
|
|
*/
|
|
typedef enum {
|
|
MIG_RTPS_CRC_KIND_INVALID,
|
|
MIG_RTPS_CRC_KIND_32_LEGACY, /* crc algorithm pre-7.1.0, in a dedicated
|
|
submessage */
|
|
MIG_RTPS_CRC_KIND_32, /* RTPS-spec-defined CRC-32C (Castagnoli) */
|
|
MIG_RTPS_CRC_KIND_64, /* RTPS-spec-defined CRC-65/XZ */
|
|
MIG_RTPS_CRC_KIND_128 /* RTPS-spec-defined MD-5 */
|
|
} MIGRtpsCrcKind;
|
|
|
|
typedef RTI_UINT16 MIGRtpsDataFlags;
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef char *MIGRtpsDomainTag;
|
|
|
|
typedef enum {
|
|
MIG_HEARTBEAT_KIND_DATA = 1,
|
|
MIG_HEARTBEAT_KIND_BATCH = 2,
|
|
MIG_HEARTBEAT_KIND_SESSION = 3
|
|
} MIGHeartbeatKind;
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef RTI_UINT32 MIGRtpsHostId;
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef RTI_UINT32 MIGRtpsInstanceId; /*RTPS.2.0*/
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef RTI_UINT32 MIGRtpsObjectId;
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief The first three bytes of the MIGRtpsObjectId. Known in the RTPS spec.
|
|
as the entityKey.
|
|
*/
|
|
typedef RTI_UINT32 MIGRtpsObjectKey;
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* \brief The last byte of the MIGRtpsObjectId. Known in the RTPS spec. as the
|
|
* entityKind.
|
|
*
|
|
* RTPSObject is categorized into (normal/reserved) x (user/meta) quadrant.
|
|
* Within each quadrant, there are several built-in (provided for at the RTPS
|
|
* protocol level) objects, such as application, publication/subscription,
|
|
* CST writer/reader.
|
|
*
|
|
* 'Normal' refers to vendor-defined entities while 'Reserved' means 'reserved
|
|
* by the spec'.
|
|
* 'User' means that entity is discoverable (and most likely created by the
|
|
* user) and 'Meta' means builtin and non-discoverable (i.e., there is no
|
|
* discovery traffic generated by these endpoints).
|
|
*
|
|
*
|
|
* There are a number of different types of endpoints that we are currently
|
|
* creating. They are outlined here, along with which of the following suffixes
|
|
* they are created with.
|
|
*
|
|
* The bits within the entityKind byte can be viewed as kk tt tt tt.
|
|
* Where
|
|
* k = kind
|
|
* Identifies if the entity is Meta / Reserved / User. The current
|
|
* kind are
|
|
* 00 - User entity
|
|
* 01 - Vendor entity
|
|
* 10 - Builtin Entity
|
|
* 11 - Vendor Builtin Entity
|
|
* t = type
|
|
* Identifies the type of entity. If the two most significant bits are
|
|
* '11', it indicates the entity is virtual. The current types are
|
|
* 0x00 - Unknown
|
|
* 0x01 - Participant
|
|
* 0x02 - Keyed DataWriter
|
|
* 0x03 - Un-keyed DataWriter
|
|
* 0x04 - Un-keyed DataReader
|
|
* 0x07 - Keyed DataReader
|
|
* 0x08 - Writer Group
|
|
* 0x09 - Reader Group
|
|
* 0x0A - Topic
|
|
* 0x0B - Keyed Group DataWriter
|
|
* 0x0C - Un-keyed Group DataWriter
|
|
* 0x0D - Un-keyed Group DataReader
|
|
* 0x0E - Keyed Group DataReader
|
|
*
|
|
* Note: The Publishers and Subscribers associated with the following endpoint
|
|
* kinds will use the suffix from the same grouping as their endpoints, so they
|
|
* are not called out explicitly in the table
|
|
*
|
|
* Endpoint Kinds | Meta/Reserved bits
|
|
* --------------------------------------------------------------
|
|
* Liveliness | 11
|
|
* Anonymous | 11
|
|
* Builtin entities defined by the spec | 11
|
|
* PublicationBuiltinTopicData, |
|
|
* SubscriptionBuiltinTopisData, |
|
|
* ParticipantBuiltinTopicData |
|
|
* The user-accessible counterparts to the | 00 (followed by 11 to signify
|
|
* above built-in readers | 'virtual')
|
|
* User-created | 00
|
|
* Security spec endpoints | 11
|
|
* VirtualSubscriptionBuiltinTopicReader | 01
|
|
* ServiceRequestChannel, non-user exposed | 10
|
|
* ServiceRequestChannel, user-exposed | 00 (followed by 11 to signify
|
|
* reader | 'virtual')
|
|
* Locator Ping Channel | 10
|
|
*/
|
|
|
|
typedef enum {
|
|
MIG_RTPS_OBJECT_NORMAL_USER_UNKNOWN = 0x00,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_APPLICATION = 0x01,
|
|
/*e Use this suffix for writers of data with a key. */
|
|
MIG_RTPS_OBJECT_NORMAL_USER_CST_WRITER = 0x02,
|
|
/*e Use this suffix for writers of data with no key. */
|
|
MIG_RTPS_OBJECT_NORMAL_USER_PUBLICATION = 0x03,
|
|
/*e Use this suffix for readers of data with no key. */
|
|
MIG_RTPS_OBJECT_NORMAL_USER_SUBSCRIPTION = 0x04,
|
|
/*e Use this suffix for readers of data with a key. */
|
|
MIG_RTPS_OBJECT_NORMAL_USER_CST_READER = 0x07,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_WRITER_GROUP = 0x08,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_READER_GROUP = 0x09,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_TOPIC = 0x0a,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_CST_GROUP_WRITER = 0x0b,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_GROUP_WRITER = 0x0c,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_GROUP_READER = 0x0d,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_CST_GROUP_READER = 0x0e,
|
|
|
|
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_SUBSCRIPTION = 0x3C,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_CST_READER = 0x3D,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_READER_GROUP = 0x3e,
|
|
MIG_RTPS_OBJECT_NORMAL_USER_VIRTUAL_TOPIC = 0x3f,
|
|
|
|
MIG_RTPS_OBJECT_RESERVED_USER_UNKNOWN = 0x40,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_APPLICATION = 0x41,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_CST_WRITER = 0x42,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_PUBLICATION = 0x43,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_SUBSCRIPTION = 0x44,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_CST_READER = 0x47,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_WRITER_GROUP = 0x48,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_READER_GROUP = 0x49,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_TOPIC = 0x4a,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_CST_GROUP_WRITER = 0x4b,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_GROUP_WRITER = 0x4c,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_GROUP_READER = 0x4d,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_CST_GROUP_READER = 0x4e,
|
|
|
|
/*
|
|
* Virtual writers are not real writers
|
|
*
|
|
* One of the use case for virtual writers is to support the API
|
|
* DDS_DataReader_add_sample_to_remote_writer_queue, which allows users to
|
|
* add samples to a remote writer's queue without coming from
|
|
* a physical writer.
|
|
*/
|
|
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_CST_WRITER = 0x72,
|
|
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_PUBLICATION = 0x73,
|
|
|
|
MIG_RTPS_OBJECT_NORMAL_META_UNKNOWN = 0x80,
|
|
MIG_RTPS_OBJECT_NORMAL_META_APPLICATION = 0x81,
|
|
MIG_RTPS_OBJECT_NORMAL_META_CST_WRITER = 0x82,
|
|
MIG_RTPS_OBJECT_NORMAL_META_PUBLICATION = 0x83,
|
|
MIG_RTPS_OBJECT_NORMAL_META_SUBSCRIPTION = 0x84,
|
|
MIG_RTPS_OBJECT_NORMAL_META_CST_READER = 0x87,
|
|
MIG_RTPS_OBJECT_NORMAL_META_WRITER_GROUP = 0x88,
|
|
MIG_RTPS_OBJECT_NORMAL_META_READER_GROUP = 0x89,
|
|
MIG_RTPS_OBJECT_NORMAL_META_TOPIC = 0x8a,
|
|
MIG_RTPS_OBJECT_NORMAL_META_CST_GROUP_WRITER = 0x8b,
|
|
MIG_RTPS_OBJECT_NORMAL_META_GROUP_WRITER = 0x8c,
|
|
MIG_RTPS_OBJECT_NORMAL_META_GROUP_READER = 0x8d,
|
|
MIG_RTPS_OBJECT_NORMAL_META_CST_GROUP_READER = 0x8e,
|
|
|
|
MIG_RTPS_OBJECT_RESERVED_META_UNKNOWN = 0xc0,
|
|
MIG_RTPS_OBJECT_RESERVED_META_APPLICATION = 0xc1,
|
|
MIG_RTPS_OBJECT_RESERVED_META_CST_WRITER = 0xc2,
|
|
MIG_RTPS_OBJECT_RESERVED_META_PUBLICATION = 0xc3,
|
|
MIG_RTPS_OBJECT_RESERVED_META_SUBSCRIPTION = 0xc4,
|
|
MIG_RTPS_OBJECT_RESERVED_META_CST_READER = 0xc7,
|
|
MIG_RTPS_OBJECT_RESERVED_META_WRITER_GROUP = 0xc8,
|
|
MIG_RTPS_OBJECT_RESERVED_META_READER_GROUP = 0xc9,
|
|
MIG_RTPS_OBJECT_RESERVED_META_TOPIC = 0xca,
|
|
MIG_RTPS_OBJECT_RESERVED_META_CST_GROUP_WRITER = 0xcb,
|
|
MIG_RTPS_OBJECT_RESERVED_META_GROUP_WRITER = 0xcc,
|
|
MIG_RTPS_OBJECT_RESERVED_META_GROUP_READER = 0xcd,
|
|
MIG_RTPS_OBJECT_RESERVED_META_CST_GROUP_READER = 0xce
|
|
} MIGRtpsObjectSuffix;
|
|
|
|
/**
|
|
* Special GUIDs assigned to "fake" remote writers that are used by the API
|
|
* DDS_DataReader_add_sample_to_remote_writer_queue. This GUIDs should never be
|
|
* used by real writers
|
|
*/
|
|
|
|
/*
|
|
* The probability of collision using only 12 bytes of the hash is given
|
|
* by the birthday problem. With 12 bytes we have 2^96 possible values
|
|
* and the probability of collision is:
|
|
* P(n) = 1 - e^(-n^2/2m)
|
|
* where n is the number of different endpoints and m the number of possible
|
|
* values (2^96).
|
|
*
|
|
* For 10000000 million different endpoints the probability of collision is
|
|
* P(10,000,000) = 1 - e^(-10^14/2^97) whis is quite low.
|
|
*
|
|
* In addition there is no possible collision with the GUIDs we generate
|
|
* for real entities using UUID-based GUIDs (default) and
|
|
* DDS_RtpsAppIdGenerator_initialize_rtps_guid_prefix
|
|
* because these GUIDs conform to the RTPS spec and have the first two bytes
|
|
* matching the vendorId with a value of (0x01, 0x01) for Connext Pro.
|
|
*/
|
|
|
|
/* clang-format off */
|
|
#define MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID_PREFIX \
|
|
{ 0x5254495f, 0x50535f53, 0x53594e43 } /* ASCII for RTI_PS_SYNC */
|
|
|
|
/*
|
|
* GUID used to identify a keyed remote writer that will be used to inject
|
|
* samples into the ServiceTopic DataReader facing the user applications in
|
|
* persistence service when sync is enabled.
|
|
*/
|
|
#define MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID \
|
|
{ \
|
|
MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID_PREFIX, \
|
|
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_CST_WRITER \
|
|
}
|
|
|
|
/*
|
|
* GUID used to identify an unkeyed remote writer that will be used to inject
|
|
* samples into the ServiceTopic DataReader facing the user applications in
|
|
* persistence service when sync is enabled.
|
|
*/
|
|
#define MIG_PERSISTENCE_SERVICE_SYNC_UNKEYED_REMOTE_WRITER_GUID \
|
|
{ \
|
|
MIG_PERSISTENCE_SERVICE_SYNC_KEYED_REMOTE_WRITER_GUID_PREFIX, \
|
|
MIG_RTPS_OBJECT_RESERVED_USER_VIRTUAL_PUBLICATION \
|
|
}
|
|
/* clang-format on */
|
|
|
|
/*e \ingroup MIGRtpsPidModule
|
|
RTPS parameter ID, used to describe RTPS objects.
|
|
*/
|
|
typedef RTI_UINT16 MIGRtpsParameterId;
|
|
|
|
|
|
typedef struct MIGRtpsGuidPrefix MIGRtpsParticipantId;
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef RTI_UINT16 MIGRtpsProtocolVersion;
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Denotes reader or writer type.
|
|
*/
|
|
typedef enum {
|
|
MIG_RTPS_RW_TYPE_UNKNOWN,
|
|
MIG_RTPS_RW_TYPE_READER,
|
|
MIG_RTPS_RW_TYPE_WRITER
|
|
} MIGRtpsRWType;
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief Denotes keyed (CST) or unkeyed (PS) type.
|
|
*/
|
|
typedef enum {
|
|
MIG_RTPS_SAMPLE_TYPE_UNKNOWN,
|
|
MIG_RTPS_SAMPLE_TYPE_CST,
|
|
MIG_RTPS_SAMPLE_TYPE_PS
|
|
} MIGRtpsSampleType;
|
|
|
|
/*e \ingroup MIGRtpsSubmessageVarStatusInfoClass */
|
|
typedef RTI_UINT32 MIGRtpsStatusInfo;
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief RTPS submessage flags.
|
|
*/
|
|
typedef RTI_UINT8 MIGRtpsSubmessageFlag;
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
\brief RTPS submessage types.
|
|
*/
|
|
typedef enum {
|
|
/**************************************************************************
|
|
* IMPORTANT:
|
|
* Range 0x00 to 0x7f is reserved by the RTPS spec: this range cannot be
|
|
* used for vendor specific IDs. However, at the moment of writing this,
|
|
* we have multiple, out-of-spec IDs violating this. Only IDs defined
|
|
* in RTPS spec section 9.4.5.1.1 should be here. Accordingly to the spec,
|
|
* vendor specific IDs should be defined within [0x80, 0xff] range.
|
|
**************************************************************************/
|
|
/*e header extension */
|
|
MIG_RTPS_HEADER_EXTENSION = 0x00,
|
|
/*e padding */
|
|
MIG_RTPS_PAD = 0x01,
|
|
/*e CST variable */
|
|
MIG_RTPS_VAR = 0x02,
|
|
/*e P/S issue */
|
|
MIG_RTPS_ISSUE = 0x03,
|
|
/*e acknowledgement */
|
|
MIG_RTPS_ACK = 0x06,
|
|
/*e heartbeat */
|
|
MIG_RTPS_HEARTBEAT = 0x07,
|
|
/*e gap */
|
|
MIG_RTPS_GAP = 0x08,
|
|
/*e timestamp */
|
|
MIG_RTPS_INFO_TS = 0x09,
|
|
/*e message source */
|
|
MIG_RTPS_INFO_SRC = 0x0c,
|
|
/*e how to reply to sender using IPv4*/
|
|
MIG_RTPS_INFO_REPLY_IP4 = 0x0d, /*RTPS.2.0*/
|
|
/*e destination of the message; intended recipient */
|
|
MIG_RTPS_INFO_DST = 0x0e,
|
|
/*e how to reply to sender using IPv6 */
|
|
MIG_RTPS_INFO_REPLY = 0x0f, /*RTPS.2.0*/
|
|
/*e identifier for the data fragments submessage */
|
|
MIG_RTPS_DATA_FRAG_20 = 0x10, /*RTPS.2.0*/
|
|
/*e identifier for the no key data fragments submessage */
|
|
MIG_RTPS_NOKEY_DATA_FRAG = 0x11, /*RTPS.2.0*/
|
|
/*e identifier for the data fragments nack submessage */
|
|
MIG_RTPS_NACK_FRAG = 0x12, /*RTPS.2.0*/
|
|
/*e identifier for the data fragments heartbeat submessage */
|
|
MIG_RTPS_HEARTBEAT_FRAG = 0x13, /*RTPS.2.0*/
|
|
/*e data for locator-filter session */
|
|
MIG_RTPS_DATA_SESSION = 0x14,
|
|
/*e data */
|
|
MIG_RTPS_DATA = NDDS_TRANSPORT_UDP_DATA_SUBMESSAGE_ID, /* RTPS 2.1 */
|
|
/*e identifier for the data fragments submessage */
|
|
MIG_RTPS_DATA_FRAG = 0x16, /* RTPS 2.5 */
|
|
/*e batch ACKNACK */
|
|
MIG_RTPS_ACK_BATCH = 0x17, /* RTPS 2.1 */
|
|
/*e identifier for the data batch submessage */
|
|
MIG_RTPS_DATA_BATCH = 0x18, /*RTPS.2.1*/
|
|
/*e batch heartbeat */
|
|
MIG_RTPS_HEARTBEAT_BATCH = 0x19, /*RTPS.2.1*/
|
|
/*e session ACKNACK */
|
|
MIG_RTPS_ACK_SESSION = 0x1a,
|
|
/*e session Heartbeat */
|
|
MIG_RTPS_HEARTBEAT_SESSION = 0x1b,
|
|
/*e app-level ack */
|
|
MIG_RTPS_APP_ACK = 0x1c,
|
|
/*e app-level ack confirmation */
|
|
MIG_RTPS_APP_ACK_CONF = 0x1d,
|
|
/*e virtual heartbeat */
|
|
MIG_RTPS_HEARTBEAT_VIRTUAL = 0x1e,
|
|
/**************************************************************************
|
|
* IMPORTANT: End of basic id range, if new items are added to the basic
|
|
* range (which as maximum can span from 0x00 to 0x2F),
|
|
* MIG_RTPS_SUBMESSAGE_BASIC_ID_MAX must be updated.
|
|
*
|
|
* Per RTPS spec section 9.4.5.1.1.1, DDS Security 1.1 submessages should
|
|
* use ids from 0x30 to 0x3F. If this changes in the future and new DDS
|
|
* Security ids are added before this range,
|
|
* MIG_RTPS_SUBMESSAGE_SECURE_ID_MIN may need to be updated.
|
|
**************************************************************************/
|
|
/*e secure body submessage */
|
|
MIG_RTPS_SECURE_BODY = 0x30,
|
|
/*e secure prefix submessage */
|
|
MIG_RTPS_SECURE_PREFIX = 0x31,
|
|
/*e secure postfix submessage */
|
|
MIG_RTPS_SECURE_POSTFIX = 0x32,
|
|
/*e secure RTPS prefix submessage */
|
|
MIG_RTPS_SECURE_RTPS_PREFIX = 0x33,
|
|
/*e secure RTPS postfix submessage */
|
|
MIG_RTPS_SECURE_RTPS_POSTFIX = 0x34,
|
|
/**************************************************************************
|
|
* IMPORTANT: End of secure id range, if new items are added to the secure
|
|
* range (which as maximum can span from 0x30 to 0x3F),
|
|
* MIG_RTPS_SUBMESSAGE_SECURE_ID_MAX must be updated.
|
|
*
|
|
* Range from 0x40 to 0x7F is reserved for spec ids, but it is currently
|
|
* unused. If we (or the OMG) adds new ids in this range, a new range will
|
|
* need to be defined.
|
|
*
|
|
* Per RTPS spec section 9.4.5.1.1, vendor specific submessages should
|
|
* use ids from 0x80 to 0xFF. In current versions of RTI products,
|
|
* 0x80 is used for RTI CRC32 submessage. If this changes in the future,
|
|
* MIG_RTPS_SUBMESSAGE_VENDOR_ID_MIN will need to be updated.
|
|
*
|
|
* IMPORTANT: If we ever introduce or modify one of these, we should be
|
|
* synchronized with the Micro implementation of RTPS.
|
|
**************************************************************************/
|
|
/*e CRC32 */
|
|
MIG_RTPS_CRC32 = 0x80,
|
|
/*e data frag for locator-filter session */
|
|
MIG_RTPS_DATA_FRAG_SESSION = 0x81,
|
|
/*e UDPv4 WAN BINDING_PING */
|
|
MIG_RTPS_BINDING_PING = 0x82
|
|
/**************************************************************************
|
|
* IMPORTANT: End of vendor id range, if new items are added here,
|
|
* MIG_RTPS_SUBMESSAGE_VENDOR_ID_MAX must be updated.
|
|
*
|
|
* Note that while per RTPS spec, vendor specific submessages should
|
|
* use ids from 0x80 to 0xFF, MIG_RTPS_SUBMESSAGE_VENDOR_ID_MAX is set to
|
|
* the highest id we support.
|
|
**************************************************************************/
|
|
} MIGRtpsSubmessageId;
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
typedef RTI_UINT16 MIGRtpsVendorId;
|
|
|
|
|
|
/* ======================= */
|
|
/* END OF TYPE DEFINITIONS */
|
|
/* ======================= */
|
|
|
|
/* ========== */
|
|
/* STRUCTURES */
|
|
/* ========== */
|
|
|
|
/* ==================== */
|
|
/* FORWARD DECLARATIONS */
|
|
/* ==================== */
|
|
|
|
struct MIGRtpsBitmap;
|
|
|
|
|
|
struct REDABuffer;
|
|
|
|
|
|
struct REDASequenceNumber;
|
|
|
|
|
|
struct RTICdrStream;
|
|
|
|
|
|
struct RTINetioLocator;
|
|
|
|
|
|
struct RTINtpTime;
|
|
|
|
/* =========================== */
|
|
/* END OF FORWARD DECLARATIONS */
|
|
/* =========================== */
|
|
|
|
/* ===================== */
|
|
/* STRUCTURE DEFINITIONS */
|
|
/* ===================== */
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* A member of an AppAck structure, containing
|
|
* the SNs acknowledged for a given virtual writer.
|
|
*
|
|
*/
|
|
|
|
struct MIGRtpsAppAckPerVirtualWriter {
|
|
struct REDAInlineListNode _node;
|
|
struct MIGRtpsGuid virtualWriterGuid;
|
|
RTI_UINT32 epoch;
|
|
struct MIGRtpsAppAck *_parent;
|
|
/* If the buffer is set, we will iterate over a serialized message */
|
|
struct RTICdrStream _buffer;
|
|
RTI_UINT16 _curInterval;
|
|
struct REDASequenceNumberInterval _tmpInterval;
|
|
RTI_UINT16 _numIntervals;
|
|
|
|
/* If the list or interval are set, we will iterate over a deserialized
|
|
* message. Both buffer and (list or interval) cannot be set at the same
|
|
* time
|
|
*/
|
|
struct REDASequenceNumberIntervalList *_list;
|
|
struct REDASequenceNumberInterval *_interval;
|
|
const struct REDASkiplistNode *_curNode;
|
|
struct REDASequenceNumberInterval *_curIntervalNode;
|
|
};
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Represents an application-level acknowledgment.
|
|
* Contains the acknowledged sequence number intervals per virtual writer
|
|
* and the corresponding payloads (if enabled).
|
|
*
|
|
* Provides iteration methods through two different available representations
|
|
* of the APP_ACK message:
|
|
* - a serialized APP_ACK message contained in a loaned buffer
|
|
* - an inlineList of virtual writers, each containing a list of intervals
|
|
*
|
|
* When includesIntervals is false, this type represents an APP_ACK_CONF
|
|
* and only includes virtual writers guids and their epochs.
|
|
*/
|
|
|
|
struct MIGRtpsAppAck {
|
|
RTIBool includesIntervals;
|
|
/* If the buffer is set, we will iterate over a serialized message */
|
|
struct RTICdrStream _buffer;
|
|
RTI_UINT32 _curVirtualWriter;
|
|
RTI_UINT32 _numVirtualWriters;
|
|
struct MIGRtpsAppAckPerVirtualWriter _tmpVirtualWriter;
|
|
/*
|
|
* If the list is set, we will iterate over a deserialized message.
|
|
* Both buffer and list cannot be set at the same time
|
|
*/
|
|
struct REDAInlineList *_list;
|
|
struct REDAInlineListNode *_curNode;
|
|
};
|
|
|
|
struct MIGRtpsKeyHash {
|
|
RTICdrOctet value[MIG_RTPS_KEY_HASH_MAX_LENGTH];
|
|
RTI_UINT32 length;
|
|
};
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Equivalent to PRESProductVersion.
|
|
* Needed for the deserialization of the GUID when the PID is
|
|
* PID_DIRECTED_WRITE.
|
|
* The product version (protocol version and vendor) is read from the
|
|
* write_params and how serialization is performed will depend on it.
|
|
*/
|
|
|
|
struct MIGRtpsProductVersion {
|
|
RTICdrChar major;
|
|
RTICdrChar minor;
|
|
RTICdrChar release;
|
|
RTICdrChar revision;
|
|
};
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief public member fields
|
|
*/
|
|
|
|
struct MIGRtpsVirtualWriterInfo {
|
|
/*i \brief */
|
|
struct REDAInlineListNode _node;
|
|
|
|
/*e \brief Virtual GUID */
|
|
struct MIGRtpsGuid guid;
|
|
|
|
/*e \brief This is the last virtual sequence number provided by the physical
|
|
writer to the virtual queue
|
|
*/
|
|
struct REDASequenceNumber firstAvailableVirtualSn;
|
|
|
|
/*e \brief This is the last virtual sequence number that the physical
|
|
writer has for this virtual queue
|
|
*/
|
|
struct REDASequenceNumber lastAvailableVirtualSn;
|
|
|
|
/*e \brief This is the last RTPS sequence number provided by the physical
|
|
writer to the virtual queue
|
|
*/
|
|
struct REDASequenceNumber firstAvailableRtpsSn;
|
|
|
|
/*e \brief This is the last RTPS sequence number that the physical
|
|
writer has for this virtual queue
|
|
*/
|
|
struct REDASequenceNumber lastAvailableRtpsSn;
|
|
|
|
void *userData;
|
|
};
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief List of Virtual Writer Info. This is stored in the Session.
|
|
*/
|
|
|
|
struct MIGRtpsWriterInfo {
|
|
struct REDAInlineListNode _node;
|
|
|
|
/** Public members **/
|
|
|
|
/*e \brief guid of the physical writer that has this list of virtual writers
|
|
*/
|
|
struct MIGRtpsGuid guid;
|
|
|
|
/** Private members **/
|
|
|
|
/*i \brief pointer back to the MIGRtpsWriterInfoList to which this belongs
|
|
*/
|
|
struct MIGRtpsWriterInfoList *_writerInfoList;
|
|
|
|
struct REDAInlineList *_virtualWriterInfoList;
|
|
|
|
/* Private state used to manage iteration */
|
|
struct MIGRtpsVirtualWriterInfo _dummyVirtualWriterInfo;
|
|
struct MIGRtpsVirtualWriterInfo *_currentNode;
|
|
RTI_UINT32 _numVirtualGuids;
|
|
};
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief List of Physical Writer Info. This is stored in the Writer History
|
|
Driver.
|
|
*/
|
|
|
|
struct MIGRtpsWriterInfoList {
|
|
struct REDAInlineList *_writerInfoList;
|
|
struct RTICdrStream _cdrStream;
|
|
struct MIGRtpsWriterInfo _dummyWriterInfo;
|
|
struct MIGRtpsWriterInfo *_currentNode;
|
|
|
|
/*i \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief FALSE if the CDR stream position is on the writer info list
|
|
boundary. TRUE otherwise.
|
|
*/
|
|
RTIBool _isIteratingOverWriterInfo;
|
|
|
|
/*i \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Which writer the CDR stream position is at. If you call
|
|
getNextWriterInfo, you will get the writerIndex-th writerInfo.
|
|
*/
|
|
RTI_UINT32 _writerIndex;
|
|
|
|
/*i \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief TRUE if the CDR stream position is on a virtual writer info
|
|
boundary. FALSE otherwise.
|
|
*/
|
|
RTIBool _isIteratingOverVirtualWriterInfo;
|
|
|
|
/*i \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Which virtual writer (within the writerIndex) the CDR stream
|
|
position is at. If you call getNextVirtualWriterInfo, you will get
|
|
the virtualWriterIndex-th virtualWriterInfo.
|
|
*/
|
|
RTI_UINT32 _virtualWriterIndex;
|
|
RTIBool _wFlag;
|
|
RTIBool _vFlag;
|
|
RTIBool _nFlag;
|
|
RTI_UINT32 _numWriters;
|
|
};
|
|
|
|
struct MIGRtpsWriterInfoListState {
|
|
struct MIGRtpsWriterInfoList _virtualWriterInfoList;
|
|
struct MIGRtpsWriterInfo *_currentWriterInfo;
|
|
struct MIGRtpsVirtualWriterInfo *_currentVirtualWriterInfo;
|
|
};
|
|
|
|
|
|
/* ============================ */
|
|
/* END OF STRUCTURE DEFINITIONS */
|
|
/* ============================ */
|
|
|
|
/* ================= */
|
|
/* END OF STRUCTURES */
|
|
/* ================= */
|
|
|
|
/* ===================== */
|
|
/* VARIABLE DECLARATIONS */
|
|
/* ===================== */
|
|
|
|
extern MIGDllVariable const struct MIGRtpsProductVersion
|
|
MIG_RTPS_PRODUCT_VERSION_DEFAULT;
|
|
|
|
|
|
extern MIGDllVariable const struct MIGRtpsProductVersion
|
|
MIG_RTPS_PRODUCT_VERSION_CURRENT;
|
|
|
|
|
|
extern MIGDllVariable const struct MIGRtpsProductVersion
|
|
MIG_RTPS_PRODUCT_VERSION_INVALID;
|
|
|
|
|
|
extern MIGDllVariable const struct MIGRtpsProductVersion
|
|
MIG_RTPS_PRODUCT_VERSION_SEVEN;
|
|
|
|
|
|
/* ============================ */
|
|
/* END OF VARIABLE DECLARATIONS */
|
|
/* ============================ */
|
|
|
|
|
|
/* ===================== */
|
|
/* FUNCTION DECLARATIONS */
|
|
/* ===================== */
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeUnsignedLong(
|
|
RTI_UINT32 *fourbytes,
|
|
const char **data,
|
|
RTIBool needByteSwap);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeUnsignedShort(
|
|
unsigned short *twobytes,
|
|
const char **data,
|
|
RTIBool needByteSwap);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeIpv4Address(
|
|
NDDS_Transport_Address_t *addr,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeIpv6Locator(
|
|
struct RTINetioLocator *loc,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeIpv6LocatorWithEncapsulations(
|
|
struct RTINetioLocator *loc,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeProtocolVersion(
|
|
RTICdrUnsignedShort *out,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool
|
|
MIGRtps_deserializeRtiBool(RTIBool *out, struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeDuration(
|
|
struct RTINtpTime *time,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool
|
|
MIGRtps_deserializeTime(struct RTINtpTime *time, struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport void MIGRtps_deserializeTimeFast(
|
|
struct RTINtpTime *time,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport void MIGRtps_deserializeDurationFast(
|
|
struct RTINtpTime *duration,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeSequenceNumber(
|
|
struct REDASequenceNumber *seq,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_deserializeVendorId(
|
|
RTICdrUnsignedShort *out,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getIpv4AddressMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getIpv6LocatorMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
extern MIGDllExport unsigned int
|
|
MIGRtps_getIpv6LocatorMaxSizeSerializedWithEncapsulations(unsigned int size);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getProtocolVersionMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getRtiBoolMaxSizeSerialized(void);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getRtiNtpTimeMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getSequenceNumberMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtps_getVendorIdMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* @bried Serializes the MIG_RTPS_PID_FILTER_SIGNATURE parameter prefix.
|
|
*
|
|
* The prefix includes:
|
|
*
|
|
* - Parameter header (4-bytes)
|
|
* - MIG_RTPS_PID_FILTER_SIGNATURE (2 bytes)
|
|
* - length (2 bytes)
|
|
* - Signature bitmap count (4-bytes): we only support one bitmap
|
|
* - Signature bitmap (4-bytes)
|
|
* - Number of signatures (4-bytes)
|
|
*
|
|
* The actual signatures have to be serialized separately.
|
|
*
|
|
* The function assumes that there is space in the stream to do the
|
|
* serialization.
|
|
*/
|
|
extern MIGDllExport void MIGRtps_serializeFilterSignatureParameterPrefixFast(
|
|
struct RTICdrStream *stream,
|
|
RTI_UINT32 bitmap,
|
|
RTI_UINT32 signatureCount);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeIpv4Address(
|
|
void *endpointData,
|
|
const NDDS_Transport_Address_t *addr,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeIpv6Locator(
|
|
void *endpointData,
|
|
const struct RTINetioLocator *loc,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeIpv6LocatorWithEncapsulations(
|
|
void *endpointData,
|
|
const struct RTINetioLocator *loc,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeLong(
|
|
void *endpointData,
|
|
const int *value,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* @bried Serializes the MIG_RTPS_PID_SENTINEL parameter.
|
|
*
|
|
* The function assumes that there is space in the stream to do the
|
|
* serialization.
|
|
*/
|
|
extern MIGDllExport void MIGRtps_serializeParameterSequenceSentinelFast(
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeProtocolVersion(
|
|
void *endpointData,
|
|
const RTICdrUnsignedShort *in,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeRtiBool(
|
|
void *endpointData,
|
|
const RTIBool *in,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport void MIGRtps_serializeTimeFast(
|
|
struct RTICdrStream *stream,
|
|
const struct RTINtpTime *time);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeDuration(
|
|
void *endpointData,
|
|
const struct RTINtpTime *time,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeSequenceNumber(
|
|
void *endopintData,
|
|
const struct REDASequenceNumber *seq,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtps_serializeVendorId(
|
|
void *endpointData,
|
|
const RTICdrUnsignedShort *in,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeData,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool
|
|
MIGRtps_skipIpv6Locator(struct RTICdrStream *stream);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* @brief Adds a virtual writer app ack to the list in
|
|
* this app ack state
|
|
*
|
|
* @pre self uses a deserialized (list) representation
|
|
*/
|
|
extern MIGDllExport void MIGRtpsAppAck_assertVirtualWriter(
|
|
struct MIGRtpsAppAck *self,
|
|
struct MIGRtpsAppAckPerVirtualWriter *vWrAppAck);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Gets the first virtual writer app-ack status from an AppAck message
|
|
*
|
|
*/
|
|
extern MIGDllExport struct MIGRtpsAppAckPerVirtualWriter *
|
|
MIGRtpsAppAck_getFirstVirtualWriter(struct MIGRtpsAppAck *self);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Allows iterating through virtual writers
|
|
*
|
|
*/
|
|
extern MIGDllExport struct MIGRtpsAppAckPerVirtualWriter *
|
|
MIGRtpsAppAck_getNextVirtualWriter(struct MIGRtpsAppAck *self);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Initializes an AppAck structure from a data stream representing
|
|
* the beginning of a serialized APP_ACK_CONF message.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsAppAck_setConfFromBuffer(
|
|
struct MIGRtpsAppAck *appAckConfOut,
|
|
const char **dataStream,
|
|
int dataLength,
|
|
MIGRtpsSubmessageFlag flags);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* @brief Initialize with buffer
|
|
*
|
|
* Initializes an AppAck structure from a data stream representing
|
|
* the beginning of a serialized APP_ACK message.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsAppAck_setFromBuffer(
|
|
struct MIGRtpsAppAck *appAckOut,
|
|
const char **dataStream,
|
|
int dataLength,
|
|
MIGRtpsSubmessageFlag flags);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* @brief Initialize with inlineList
|
|
*
|
|
* Initializes an AppAck structure from an inline list
|
|
* containing MIGRtpsAppAckPerVirtualWriter structures, each
|
|
* having a REDASequenceNumberIntervalList
|
|
*/
|
|
extern MIGDllExport void MIGRtpsAppAck_setFromList(
|
|
struct MIGRtpsAppAck *appAckConfOut,
|
|
struct REDAInlineList *virtualWriterList);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Ensures that this app-ack per virtual writer
|
|
* is included in the list of its parent (MIGRtpsAppAck)
|
|
*
|
|
* @pre MIGRtpsAppAck_assertVirtualWriter(parent, self)
|
|
* has been called at least once.
|
|
* @pre Only for deserialized representation
|
|
*
|
|
* @post MIGRtpsAppAck_get{First,Next}VirtualWriter(parent)
|
|
* will return self when called enough times
|
|
*
|
|
*/
|
|
extern MIGDllExport void MIGRtpsAppAckPerVirtualWriter_assertToParent(
|
|
struct MIGRtpsAppAckPerVirtualWriter *self);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Gets the first sn interval in the app-ack for a virtual writer
|
|
*
|
|
*/
|
|
extern MIGDllExport struct REDASequenceNumberInterval *
|
|
MIGRtpsAppAckPerVirtualWriter_getFirstInterval(
|
|
struct MIGRtpsAppAckPerVirtualWriter *self,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Allows iterating through intervals
|
|
*
|
|
*/
|
|
extern MIGDllExport struct REDASequenceNumberInterval *
|
|
MIGRtpsAppAckPerVirtualWriter_getNextInterval(
|
|
struct MIGRtpsAppAckPerVirtualWriter *self,
|
|
struct REDAWorker *worker);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsAppAckPerVirtualWriter_initialize(
|
|
struct MIGRtpsAppAckPerVirtualWriter *virtualWriterAppAckOut,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct REDASequenceNumberIntervalList *list,
|
|
struct REDASequenceNumberInterval *interval,
|
|
RTI_UINT32 initialEpoch);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Ensures that this app-ack per virtual writer
|
|
* is not included in the list of its parent.
|
|
*
|
|
* MIGRtpsAppAckPerVirtualWriter_assertToParent can be
|
|
* used later on to include it again.
|
|
*
|
|
* @pre MIGRtpsAppAck_assertVirtualWriter(parent, self)
|
|
* has been called at least once.
|
|
* @pre Only for deserialized representation
|
|
*
|
|
* @post MIGRtpsAppAck_get{First,Next}VirtualWriter(parent)
|
|
* will not return self
|
|
*
|
|
*/
|
|
extern MIGDllExport void MIGRtpsAppAckPerVirtualWriter_removeFromParent(
|
|
struct MIGRtpsAppAckPerVirtualWriter *self);
|
|
|
|
|
|
/*
|
|
* \ingroup MIGRtpsBitmapClass
|
|
*
|
|
* \brief Check if a sequence number falls in the valid range of the bitmap
|
|
*
|
|
* @pre valid args
|
|
*
|
|
* @param id \b In. The sequence number of interest.
|
|
*
|
|
* @return RTI_FALSE if the sequence number is not in the bitmap
|
|
* RTI_TRUE if it is in the bitmap.
|
|
*
|
|
* @mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_containsBit(
|
|
const struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *seqNum);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Compresses bitmap changing the number of bits to eliminate trailing "1"
|
|
bits.
|
|
|
|
This function only changes the bitCount of the bitmap. It does not
|
|
shift or change any bits. The purpose is to eliminate any trailing
|
|
"1" bits which provide no information for many types of bitmaps.
|
|
|
|
Simple implementation of RTPS protocol blindly acts on a bitmap in a
|
|
sequential manner without looking ahead at higher sequence bits. For
|
|
implementations whose behavior will be logically same for
|
|
0111...111 as for 0, other than shorter execution time, by not
|
|
processing the unnecessary 1's, this method cuts off the bitmap
|
|
ahead of time before acting on it.
|
|
|
|
As this functionality is provided only for optimization, i.e. an
|
|
implementation of RTPS should behave correctly without using this,
|
|
for efficiency the algorithm does not eliminate all trailing "1" bits
|
|
rather it removes them to the closest 8-bit boundary.
|
|
|
|
@post Bitmap is adjusted.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_compressTrailingOnes(
|
|
struct MIGRtpsBitmap *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Copies source bitmap into destination,
|
|
but only specified number of bits.
|
|
|
|
@pre valid args
|
|
@post Bitmap is adjusted.
|
|
|
|
@param source \b In. Source bitmap.
|
|
@param length \b In. Number of bits to copy. If length > bit count of
|
|
source bitmap, fill remainder with 0.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_copy(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct MIGRtpsBitmap *source,
|
|
unsigned int length);
|
|
|
|
|
|
/*e
|
|
* \ingroup MIGRtpsBitmapClass
|
|
* \brief Read bits into the bitmap.
|
|
*
|
|
* @post sequenceNumber is packed and stream pointer is moved forward.
|
|
*
|
|
* @param streamPtr \b InOut. Raw bytes containing the bitmap to be read.
|
|
* @param availableBufferSize \b In. Amount of bytes left to be
|
|
* parsed/deserialized from this RTPS submessage.
|
|
* @param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
|
|
* RTI_FALSE otherwise.
|
|
*
|
|
* @return RTI_TRUE on success, RTI_FALSE otherwise.
|
|
*
|
|
* @mtsafety Unsafe for read during modification. Unsafe for concurrent
|
|
* modification unless the args are unchanging.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_deserialize(
|
|
struct MIGRtpsBitmap *me,
|
|
const char **stream,
|
|
RTI_INT32 availableBufferSize,
|
|
RTIBool needByteSwap);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
@pre valid arg
|
|
@return RTI_TRUE if 2 bitmaps logically identical, RTI_FALSE otherwise
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_equals(
|
|
const struct MIGRtpsBitmap *l,
|
|
const struct MIGRtpsBitmap *r);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Fills the bitmap with the specified bit from [firstSeqNum, lastSeqNum].
|
|
|
|
@pre valid args.
|
|
@post Bitmap is adjusted.
|
|
|
|
@param firstSeqNum \b In. The sequence number from which to start the fill.
|
|
@param lastSeqNum \b In. The sequence number at which to end the fill.
|
|
@param bit \b In. RTI_TRUE if bits are to be turned on, RTI_FALSE otherwise.
|
|
|
|
@return RTI_TRUE on success, RTI_FALSE otherwise such as specifying a
|
|
last sequence number smaller than the first sequence number. However,
|
|
specifying sequence numbers outside the range of the bitmap is valid.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_fill(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *firstSeqNum,
|
|
const struct REDASequenceNumber *lastSeqNum,
|
|
RTIBool bit);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Get specified bit in bitmap.
|
|
|
|
@pre valid args
|
|
@post the bit out param is filled with logical value of bit of interest.
|
|
|
|
@param bit \b Out. Pointer to the answer, whose value will be RTI_TRUE
|
|
if bit is on and RTI_FALSE otherwise.
|
|
@param num \b In. The sequence number of interest.
|
|
|
|
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
|
|
RTI_TRUE on success.
|
|
|
|
@exception RTI_LOG_PRECONDITION_FAILURE
|
|
|
|
@mtsafety unsafe if modified concurrently.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_getBit(
|
|
const struct MIGRtpsBitmap *me,
|
|
RTIBool *bit,
|
|
const struct REDASequenceNumber *num);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
may be macroed for performance
|
|
@pre valid arg
|
|
@return Number of bits the bitmap is describing
|
|
@mtsafety unsafe if modified concurrently.
|
|
*/
|
|
RTI_INT32 MIGRtpsBitmap_getBitCount(const struct MIGRtpsBitmap *me);
|
|
|
|
|
|
/*e
|
|
* \ingroup MIGRtpsBitmapClass
|
|
* @brief Finds the first occurrence of the specified bit in a bitmap.
|
|
* @pre valid args
|
|
* @post the position out param is filled with the sequence number.
|
|
* @param position \b Out. The position where the searchBit was first found.
|
|
* This will be the last sequence number contained in the bitmap + 1 if the
|
|
* searchBit is not found.
|
|
* @param searchBit \b In. The bit to look for. It is a boolean. RTI_TRUE
|
|
* means look for a 1 and RTI_FALSE look for a 0.
|
|
* @return RTI_FALSE if the searchBit was not found, RTI_TRUE if found.
|
|
* @mtsafety unsafe if modified concurrently.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_getFirstBit(
|
|
const struct MIGRtpsBitmap *me,
|
|
struct REDASequenceNumber *position,
|
|
RTIBool searchBit);
|
|
|
|
|
|
/*e
|
|
* \ingroup MIGRtpsBitmapClass
|
|
* @brief Finds the last occurrence of the specified bit in a bitmap.
|
|
* @pre valid args
|
|
* @post the position out param is filled with the sequence number.
|
|
* @param position \b Out. The position where the searchBit was first found.
|
|
* This will be the bitmap lead if the searchBit is not found.
|
|
* @param searchBit \b In. The bit to look for. It is a boolean. RTI_TRUE
|
|
* means look for a 1 and RTI_FALSE look for a 0.
|
|
* @return RTI_FALSE if the searchBit was not found, RTI_TRUE if found.
|
|
* @mtsafety unsafe if modified concurrently.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_getLastBit(
|
|
const struct MIGRtpsBitmap *me,
|
|
struct REDASequenceNumber *position,
|
|
RTIBool searchBit);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
may be macroed for performance
|
|
@pre valid arg
|
|
@return Pointer to the lead sequence number.
|
|
@mtsafety The returned pointer itself is always valid and MT safe, but
|
|
the content may be unsafe if modified concurrently.
|
|
*/
|
|
const struct REDASequenceNumber *MIGRtpsBitmap_getLead(
|
|
const struct MIGRtpsBitmap *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
may be macroed for performance
|
|
@pre valid arg
|
|
@return Number of bytes if serialize were to be called
|
|
*/
|
|
int MIGRtpsBitmap_getSerializedSize(const struct MIGRtpsBitmap *me);
|
|
|
|
|
|
extern MIGDllExport RTI_INT32
|
|
MIGRtpsBitmap_getSetBitCount(struct MIGRtpsBitmap *me, RTIBool searchBit);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
\brief Get the number of zero bits.
|
|
|
|
@pre valid args. sn not larger than the last sn in bitmap.
|
|
|
|
@param sn \b In. Count zeros before and at this sequence number.
|
|
If the sn is less than the first sn in the bitmap, it will return 0.
|
|
If the sn is larger than the last sn in the bitmap, it will return -1.
|
|
|
|
@return Number of bits that are zero. -1 if failed.
|
|
@mtsafety unsafe if modified concurrently.
|
|
*/
|
|
extern MIGDllExport RTI_INT32 MIGRtpsBitmap_getZeroCount(
|
|
const struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *sn);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Inverts all bits of a bitmap.
|
|
|
|
@post Bitmap is inverted.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_invert(struct MIGRtpsBitmap *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
may be macroed for performance
|
|
@pre valid arg
|
|
@return True if the distance is representable by the bitmap (fits within the
|
|
limits imposed by the bitcount), false otherwise.
|
|
*/
|
|
RTIBool MIGRtpsBitmap_isDistanceValid(
|
|
const struct MIGRtpsBitmap *me,
|
|
RTI_INT32 distance);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
may be macroed for performance
|
|
@pre valid arg
|
|
@return True if the bitmap is malformed, false otherwise.
|
|
*/
|
|
RTIBool MIGRtpsBitmap_isMalformed(const struct MIGRtpsBitmap *me);
|
|
|
|
/**
|
|
* @ingroup MIGRtpsBitmapClass
|
|
*
|
|
* @brief Copies bits from the source bitmap (`src`) into the destination
|
|
* bitmap (`dest`), overwriting the corresponding bits in the destination.
|
|
*
|
|
* If the source range does not overlap with the destination range, no changes
|
|
* are made. If the ranges fully overlap, the destination is entirely replaced
|
|
* by the source. For partial overlaps, if the source extends beyond the
|
|
* destination, the destination's bit count is increased (if possible) to
|
|
* accommodate the source range. If the source starts before the destination,
|
|
* only the overlapping portion is copied.
|
|
*
|
|
* @note The range of a bitmap is determined by its lead sequence number and
|
|
* bit count.
|
|
* @note This function was specifically designed for merging bitmaps
|
|
* representing missing sample fragments when nack response delay is configured
|
|
* in a DataWriter.
|
|
*
|
|
* @param[inout] dest Pointer to the destination MIGRtpsBitmap structure.
|
|
* @param[in] src Pointer to the source MIGRtpsBitmap structure.
|
|
*
|
|
* Examples (assuming dest.bitCount = 10):
|
|
* dest[1-10], src[11-15] -- no change to dest.
|
|
* dest[1-10], src[1-10] -- dest is fully overwritten by src.
|
|
* dest[1-10], src[5-15] -- dest.bitCount is extended to 15; dest[1-4]
|
|
* remain, dest[5-15] are set from src[5-15].
|
|
* dest[0-256], src[250-260] -- dest[0-249] remain, dest[250-256] are set
|
|
* from src[250-256], src[257-260] ignored.
|
|
* dest[5-15], src[1-10] -- dest[5-10] are set from src[5-10], dest[11-15]
|
|
* remain unchanged.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_combineFragments(
|
|
struct MIGRtpsBitmap *dest,
|
|
const struct MIGRtpsBitmap *src);
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Merges source bitmap into destination.
|
|
|
|
@pre valid args
|
|
@post Bitmap is adjusted.
|
|
|
|
@param source \b In. Source bitmap.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_merge(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct MIGRtpsBitmap *source);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
may be macroed for performance
|
|
@pre valid args
|
|
@post All bits are reset to zero.
|
|
|
|
@param seqNum \b In. The new lead sequence number.
|
|
@param bitCount \b In. The number of valid bits.
|
|
Must be <= MIG_RTPS_BITMAP_SIZE_MAX.
|
|
|
|
@mtsafety unsafe if modified or read concurrently.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_reset(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *seqNum,
|
|
RTI_INT32 bitCount);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Set specified bit in bitmap.
|
|
|
|
@pre valid args
|
|
@post The bit corresponding to the input sequence number is set to either
|
|
0 or 1 as specified in input arg.
|
|
|
|
@param num \b In. The sequence number of interest.
|
|
@param bit \b In. RTI_TRUE if bit is to be turned on, RTI_FALSE otherwise.
|
|
|
|
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
|
|
RTI_TRUE on success.
|
|
|
|
@exception RTI_LOG_PRECONDITION_FAILURE
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_setBit(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *num,
|
|
RTIBool bit);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Shifts bitmap forward only to specified sequence number,
|
|
keeping bit count the same by filling in 0's as necessary.
|
|
|
|
@post Bitmap is adjusted. If seqNum == bitmap lead, noop. If seqNum >
|
|
any bit in bitmap, bitmap is 0 filled.
|
|
|
|
@param seqNum \b In. New lead sequence number.
|
|
|
|
@return RTI_TRUE on success, RTI_FALSE otherwise such as specifying a
|
|
sequence number smaller than the current lead of the bitmap.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsBitmap_shift(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *seqNum);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Truncates the bitmap at the specified sequence number.
|
|
|
|
@post Bitmap is adjusted.
|
|
|
|
@param seqNum \b In. Throw away any bits whose sequence is greater than
|
|
this. If seqNum < bitmap->_lead, bitmap's bitCount will be set to 0. If
|
|
seqNum >= bitmap->_lead + bitmap->_bitCount, bitmap will remain unchanged.
|
|
|
|
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
|
|
RTI_TRUE on success.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_truncate(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *seqNum);
|
|
|
|
|
|
/*e \ingroup MIGRtpsBitmapClass
|
|
|
|
\brief Truncates the bitmap so that the number of zero it contains
|
|
starting from startSn to the end (inclusive) equals zeroTotal.
|
|
|
|
If the startSn is less than bitmap's lead, it is as if the startSn is the same
|
|
as bitmaps's lead.
|
|
If the startSn is larger than the last sn in bitmap, bitmap will remain
|
|
unchanged.
|
|
If the original bitmap doesn't have zeroTotal number of zeros between startSn
|
|
and last sn, it will remain unchanged. Otherwise, it will be cut off just
|
|
after the last zero that reaches the zeroTotal. That said, if the zeroTotal is
|
|
zero, the bitmap will end at (startSn - 1), provided startSn is in bitmap
|
|
range.
|
|
|
|
@pre valid param. totalZeros not negative.
|
|
@post Bitmap is adjusted.
|
|
|
|
@param startSn \b In. The sn from which to start counting zeros.
|
|
@param totalZeros \b In. The total number of zeros that the truncated bitmap
|
|
should have, counting from the startSn.
|
|
|
|
@return RTI_FALSE on failure, which includes the sequence not in bitmap.
|
|
RTI_TRUE on success.
|
|
|
|
@mtsafety unsafe.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsBitmap_truncateToZeroCount(
|
|
struct MIGRtpsBitmap *me,
|
|
const struct REDASequenceNumber *startSn,
|
|
int totalZeros);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Compares two tags. For the comparison, a NULL tag is considered equivalent
|
|
* to passing an empty string "" tag.
|
|
*/
|
|
extern MIGDllExport int MIGRtpsDomainTag_compare(
|
|
MIGRtpsDomainTag tag1,
|
|
MIGRtpsDomainTag tag2);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* Checks if the passed tag is the default empty domain tag. A NULL tag is
|
|
* considered equivalent to passing an empty string "" tag.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsDomainTag_isDefault(MIGRtpsDomainTag self);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsEpoch_deserialize(
|
|
REDAEpoch *me,
|
|
const char **stream,
|
|
RTIBool needByteSwap);
|
|
|
|
|
|
/*e
|
|
* \ingroup MIGRtpsFragmentBitmapClass
|
|
* \brief Read bits into the bitmap.
|
|
*
|
|
* @post sequenceNumber is packed and stream pointer is moved forward.
|
|
*
|
|
* @param streamPtr \b InOut. Raw bytes containing the bitmap to be read.
|
|
* @param availableBufferSize \b In. Amount of bytes left to be
|
|
* parsed/deserialized from this RTPS submessage.
|
|
*
|
|
* @param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
|
|
* RTI_FALSE otherwise.
|
|
*
|
|
* @return RTI_TRUE on success, RTI_FALSE otherwise.
|
|
*
|
|
* @mtsafety Unsafe for read during modification. Unsafe for concurrent
|
|
* modification unless the args are unchanging.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsFragmentBitmap_deserialize(
|
|
struct MIGRtpsBitmap *me,
|
|
const char **stream,
|
|
RTI_INT32 availableBufferSize,
|
|
RTIBool needByteSwap);
|
|
|
|
|
|
extern MIGDllExport int MIGRtpsGuid_compare(
|
|
const struct MIGRtpsGuid *left,
|
|
const struct MIGRtpsGuid *right);
|
|
|
|
|
|
#define MIG_RTPS_GUID_PREFIX_ADJUSTED_SIZE (6)
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* @brief Return if the entity associated with the GUID is acting as a proxy.
|
|
* This function compares the first 6 bytes of the GUID prefix to determine if
|
|
* it matches the same bytes of the physical GUID prefix.
|
|
*
|
|
* Instead of comparing the full prefix with MIGRtpsGuidPrefix_equals,
|
|
* we only compare the 48 bits (6 bytes) when deciding if the GUID belongs to a
|
|
* proxy or not. This is because this GUID prefix is adjusted to depend on the
|
|
* DomainParticipant's Identity Certificate.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_isProxy(
|
|
const struct MIGRtpsGuid *me,
|
|
const struct MIGRtpsGuid *physical);
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*
|
|
* @brief Similar to MIGRtpsGuid_isProxy, but it doesn't check if the 'me'
|
|
* GUID is MIG_RTPS_GUID_AUTO GUID. Do not call on GUID prefixes that could
|
|
* be part of an auto GUID.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsGuidPrefix_isProxy(
|
|
const struct MIGRtpsGuidPrefix *me,
|
|
const struct MIGRtpsGuidPrefix *physical);
|
|
|
|
/*
|
|
* This function is needed because in some cases we need a pointer to the
|
|
* function. We cannot do this with MIGRtpsGuid_compare because that one will be
|
|
* redefined to MIGRtpsGuid_compareMacro in release libraries.
|
|
*/
|
|
extern MIGDllExport int MIGRtpsGuid_compareFunction(
|
|
const struct MIGRtpsGuid *left,
|
|
const struct MIGRtpsGuid *right);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport void MIGRtpsGuid_copy(
|
|
struct MIGRtpsGuid *me,
|
|
struct MIGRtpsGuid *src);
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* Swaps in-place the endianness of a MIGRtpsGuid.
|
|
*
|
|
* This function is involutory, meaning applying it twice will return the
|
|
* original guid (f(f(x)) == x).
|
|
*
|
|
* @param[in,out] guid The GUID whose endianness to swap.
|
|
*/
|
|
extern MIGDllExport
|
|
void MIGRtpsGuid_swapEndianness(struct MIGRtpsGuid *guid);
|
|
|
|
/*
|
|
* Deserilalize a GUID prefix
|
|
*
|
|
* @param guidPrefix Out. Populated with GUID prefix
|
|
* @param stream Stream to deserialize
|
|
*
|
|
* @return RTI_TRUE if success, RTI_FALSE if failure
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsGuidPrefix_deserialize(
|
|
struct MIGRtpsGuidPrefix *guidPrefix,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
/*
|
|
* Deserilalize a full GUID (prefix and object ID)
|
|
*
|
|
* @param guid Out. Populated with GUID
|
|
* @param stream Stream to deserialize
|
|
*
|
|
* @return RTI_TRUE if success, RTI_FALSE if failure
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsGuid_deserialize(struct MIGRtpsGuid *guid, struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_deserializeNativeEndianness(
|
|
struct MIGRtpsGuid *guid,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsGuid_equals(struct MIGRtpsGuid *a, struct MIGRtpsGuid *b);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsGuid_fromKeyHash(
|
|
struct MIGRtpsGuid *guid,
|
|
const struct MIGRtpsKeyHash *keyHash);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtpsGuid_getMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport MIGRtpsObjectSuffix
|
|
MIGRtpsGuid_getObjectSuffix(struct MIGRtpsGuid *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@brief Copies in network-byte order (big endian)
|
|
*/
|
|
extern MIGDllExport void MIGRtpsGuid_htoncopy(
|
|
struct MIGRtpsGuid *me,
|
|
const struct MIGRtpsGuid *src);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_isAuto(struct MIGRtpsGuid *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_isUnknown(struct MIGRtpsGuid *me);
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@brief Copies in host-byte order (big endian)
|
|
*/
|
|
extern MIGDllExport void MIGRtpsGuid_ntohcopy(
|
|
struct MIGRtpsGuid *me,
|
|
const struct MIGRtpsGuid *src);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_serialize(
|
|
void *endpointData,
|
|
const void *guid,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeSample,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_serializeNativeEndianness(
|
|
void *endpointData,
|
|
const struct MIGRtpsGuid *guid,
|
|
struct RTICdrStream *stream,
|
|
RTIBool serializeEncapsulation,
|
|
RTIEncapsulationId encapsulationId,
|
|
RTIBool serializeSample,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsGuid_skip(struct RTICdrStream *stream);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@brief Converts a Guid into a base-32 number
|
|
@param guid \st_in the GUID to be converted
|
|
@param str \st_out the output string (at least 28 bytes)
|
|
*/
|
|
extern MIGDllExport void MIGRtpsGuid_toBase32(
|
|
const struct MIGRtpsGuid *guid,
|
|
char *str);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* @brief Converts a null-terminated base-32 string to a GUID.
|
|
*
|
|
* This function takes a null-terminated string in the base-32 encoding and
|
|
* returns the corresponding GUID. The base-32 encoding uses the characters
|
|
* A-V and 0-9 to represent the numbers 0-31. The input string must be
|
|
* null-terminated.
|
|
*
|
|
* @param[out] guid A pointer to the GUID structure to fill in.
|
|
* @param[in] str The null-terminated base-32 string to convert.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsGuid_fromBase32(
|
|
struct MIGRtpsGuid *guid,
|
|
const char *str);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
@pre valid args
|
|
@see REDAToStringBufferFunction MIG_RTPS_GUID_STRING_LENGTH
|
|
*/
|
|
extern MIGDllExport const char *MIGRtpsGuid_toString(
|
|
const void *guid,
|
|
struct REDABuffer *str);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsGuid_print(
|
|
const struct MIGRtpsGuid *guid,
|
|
const char *desc,
|
|
unsigned int indent);
|
|
|
|
|
|
extern MIGDllExport int MIGRtpsGuidPrefix_compare(
|
|
const struct MIGRtpsGuidPrefix *left,
|
|
const struct MIGRtpsGuidPrefix *right);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* Copy the guid prefix.
|
|
*/
|
|
extern MIGDllExport void MIGRtpsGuidPrefix_copy(
|
|
struct MIGRtpsGuidPrefix *me,
|
|
const struct MIGRtpsGuidPrefix *src);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsGuidPrefix_equals(
|
|
const struct MIGRtpsGuidPrefix *a,
|
|
const struct MIGRtpsGuidPrefix *b);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsGuidPrefix_isUnknown(struct MIGRtpsGuidPrefix *me);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsHost_deserialize(
|
|
const MIGRtpsHostId *hostId,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsHostId_deserialize(
|
|
const MIGRtpsHostId *hostId,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport unsigned int MIGRtpsHostId_getMaxSizeSerialized(
|
|
unsigned int size);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsHostId_print(
|
|
const MIGRtpsHostId *hostId,
|
|
const char *desc,
|
|
unsigned int indent);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsHostId_serialize(
|
|
const MIGRtpsHostId *hostId,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport int MIGRtpsKeyHash_compare(
|
|
const struct MIGRtpsKeyHash *left,
|
|
const struct MIGRtpsKeyHash *right);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsKeyHash_copy(
|
|
struct MIGRtpsKeyHash *dest,
|
|
const struct MIGRtpsKeyHash *src);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsKeyHash_deserialize(
|
|
struct MIGRtpsKeyHash *keyHash,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport int MIGRtpsKeyHash_equals(
|
|
const struct MIGRtpsKeyHash *left,
|
|
const struct MIGRtpsKeyHash *rigth);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsKeyHash_fromGuid(
|
|
struct MIGRtpsKeyHash *keyHash,
|
|
const struct MIGRtpsGuid *guid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@brief Copies in network-byte order (big endian)
|
|
*/
|
|
extern MIGDllExport void MIGRtpsKeyHash_htoncopy(
|
|
struct MIGRtpsKeyHash *me,
|
|
const struct MIGRtpsKeyHash *src);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@brief Copies in host-byte order (big endian)
|
|
*/
|
|
extern MIGDllExport void MIGRtpsKeyHash_ntohcopy(
|
|
struct MIGRtpsKeyHash *me,
|
|
const struct MIGRtpsKeyHash *src);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsKeyHash_print(
|
|
const struct MIGRtpsKeyHash *keyHash,
|
|
const char *desc);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsKeyHash_set(
|
|
struct MIGRtpsKeyHash *keyHash,
|
|
char *value);
|
|
|
|
|
|
extern MIGDllExport void MIGRtpsKeyHash_setDefault(
|
|
struct MIGRtpsKeyHash *keyHash);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsKeyHash_serialize(
|
|
void *endpointData,
|
|
struct MIGRtpsKeyHash *keyHash,
|
|
struct RTICdrStream *stream,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
extern MIGDllExport const char *MIGRtpsKeyHash_toString(
|
|
const struct MIGRtpsKeyHash *keyHash,
|
|
struct REDABuffer *buffer);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport MIGRtpsObjectId
|
|
MIGRtpsObjectId_generate(MIGRtpsObjectKey oky, MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*/
|
|
extern MIGDllExport MIGRtpsObjectId
|
|
MIGRtpsObjectId_makeBuiltinSecure(MIGRtpsObjectId oid);
|
|
|
|
|
|
extern MIGDllExport RTI_UINT32 MIGRtpsObjectId_getMaxSampleLength(
|
|
MIGRtpsObjectId objectId,
|
|
RTI_UINT32 unprotectedChannelsMaxLength);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport MIGRtpsObjectKey
|
|
MIGRtpsObjectId_getObjectKey(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport MIGRtpsObjectSuffix
|
|
MIGRtpsObjectId_getObjectSuffix(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsObjectId_hasUserObject(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_isBootstrappingReader(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_isBootstrappingWriter(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
* @brief Check if a objectId belongs to an external builtin endpoint.
|
|
* A external built-in endpoints are built-in endpoints created by the
|
|
* application (e.g, Monitoting library)
|
|
* @param oid \b In. The objet Id.
|
|
* @return True if oid is a objectId belongs to an external builtin endpoint.
|
|
* False otherwise.
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_isExternalBuiltin(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_isNeverRtpsProtectedReader(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_isNeverRtpsProtectedWriter(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_supportsDirectedWrites(MIGRtpsObjectId oid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_supportsKeyExchange(MIGRtpsObjectId oid);
|
|
|
|
/**
|
|
* @brief Returns true if the objectId is a virtual writer, false otherwise.
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectId_isVirtualWriter(MIGRtpsObjectId oid);
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsObjectKey_isStateless(
|
|
MIGRtpsObjectKey oid,
|
|
RTIBool isMeta,
|
|
RTIBool isVendor);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport MIGRtpsRWType
|
|
MIGRtpsObjectSuffix_getRWType(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
*/
|
|
extern MIGDllExport const char *MIGRtpsRWType_toString(MIGRtpsRWType rwType);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport MIGRtpsRWType
|
|
MIGRtpsObjectSuffix_getSampleType(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isWriterGroup(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isReaderGroup(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isGroupReaderWriter(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isKeyed(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsObjectSuffix_isMeta(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
DO NOT USE! This macro is deprecated and should not be used anymore.
|
|
Use MIGRtpsObjectSuffix_isUser or MIGRtpsObjectSuffix_isVendorSpecific
|
|
below. See CORE-6948 for details.
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isReserved(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsObjectSuffix_isUser(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isUserCreated(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isUserCreatedKeyed(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsObjectSuffix_isVendorSpecific(MIGRtpsObjectSuffix osx);
|
|
|
|
|
|
/*e \ingroup MIGRtpsParameterSequenceClass
|
|
\brief skip until the end of parameter sequence
|
|
|
|
@pre valid args
|
|
@post stream is moved until the end of parameter sequence.
|
|
|
|
@param stream \b InOut. Raw bytes containing parameter sequence
|
|
to be read.
|
|
|
|
@param paramSeqLengthOut \b Out. If successful, the number of skipped bytes.
|
|
If the operation is not successful then this value is untouched.
|
|
|
|
@param parameterSequenceStartingPosition \b In. The starting position of the
|
|
parameter sequence. The caller should pass in a value derived from the
|
|
octetsToInlineQos submessage field. Passing this parameter is more
|
|
maintainable than forcing the caller to set *stream.
|
|
|
|
@param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
|
|
RTI_FALSE otherwise.
|
|
|
|
@return RTI_TRUE on success, RTI_FALSE otherwise.
|
|
|
|
@mtsafety Unsafe for read during modification. Unsafe for concurrent
|
|
modification unless the args are unchanging.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsParameterSequence_skip(
|
|
const char **stream,
|
|
int *paramSeqLengthOut,
|
|
const char *parameterSequenceStartingPosition,
|
|
RTIBool needByteSwap,
|
|
int maxParamLength);
|
|
|
|
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsProductVersion_isInvalid(const struct MIGRtpsProductVersion *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
@brief Checks if the product version is 0.0.0.0
|
|
|
|
@param me \b In. The product version to check.
|
|
|
|
@return RTI_TRUE if the product version is 0.0.0.0, RTI_FALSE otherwise.
|
|
*/
|
|
extern MIGDllExport RTIBool
|
|
MIGRtpsProductVersion_isZero(const struct MIGRtpsProductVersion *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
MIGRtpsProtocolVersion MIGRtpsProtocolVersion_getMajor(
|
|
MIGRtpsProtocolVersion *me);
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
MIGRtpsProtocolVersion MIGRtpsProtocolVersion_getMinor(
|
|
MIGRtpsProtocolVersion *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsSequenceNumberClass
|
|
\brief Read bits into the sequence number.
|
|
|
|
@pre valid args
|
|
@post sequenceNumber is packed and stream pointer is moved forward.
|
|
|
|
@param me \b out. "this". Read into here.
|
|
|
|
@param streamPtr \b InOut. Raw bytes containing the sequence number
|
|
to be read.
|
|
|
|
@param needBytesSwap \b In. RTI_TRUE if byte swapping is necessary,
|
|
RTI_FALSE otherwise.
|
|
|
|
@return RTI_TRUE on success, RTI_FALSE otherwise.
|
|
|
|
@mtsafety Unsafe for read during modification. Unsafe for concurrent
|
|
modification unless the args are unchanging.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsSequenceNumber_deserialize(
|
|
struct REDASequenceNumber *me,
|
|
const char **stream,
|
|
RTIBool needByteSwap);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsStatusInfo_deserialize(
|
|
MIGRtpsStatusInfo *statusInfo,
|
|
struct RTICdrStream *stream);
|
|
|
|
|
|
extern MIGDllExport RTIBool MIGRtpsStatusInfo_serialize(
|
|
void *endpointData,
|
|
MIGRtpsStatusInfo *statusInfo,
|
|
struct RTICdrStream *stream,
|
|
void *endpointPluginQos);
|
|
|
|
|
|
/*e
|
|
* \ingroup MIGRtpsSequenceNumberClass
|
|
*
|
|
* \brief Calculate the distance between 2 sequence numbers.
|
|
*
|
|
* @pre valid args
|
|
*
|
|
* @return The distance. -1 on failure.
|
|
*
|
|
* @mtsafety unsafe if either sequence number modified concurrently.
|
|
*/
|
|
extern MIGDllExport int MIGRtpsSequenceNumber_getDistance(
|
|
const struct REDASequenceNumber *s1,
|
|
const struct REDASequenceNumber *s2);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
MIGRtpsVendorId MIGRtpsVendorId_getMajor(MIGRtpsVendorId *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
may be macroed for performance
|
|
*/
|
|
MIGRtpsVendorId MIGRtpsVendorId_getMinor(MIGRtpsVendorId *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
Indicates if the vendor ID is RTI Connext Micro
|
|
*/
|
|
RTIBool MIGRtpsVendorId_isMicro(MIGRtpsVendorId *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
Indicates if the vendor ID is RTI Connext DDS (Pro).
|
|
*/
|
|
RTIBool MIGRtpsVendorId_isPro(MIGRtpsVendorId *me);
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
Indicates if the vendor ID is RTI (Pro or Micro)
|
|
*/
|
|
RTIBool MIGRtpsVendorId_isRTI(MIGRtpsVendorId *me);
|
|
|
|
/*e \ingroup MIGRtpsClass
|
|
Indicates if the submessage ID is vendor specific
|
|
*/
|
|
RTIBool MIGRtpsSubmessageId_isVendorSpecific(const MIGRtpsSubmessageId *id);
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Deserialized list: adds writerInfo to back of list, returns TRUE on
|
|
success Serialized list: returns RTI_FALSE (not supported)
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_addWriterInfo(
|
|
struct MIGRtpsWriterInfoList *writerInfoList,
|
|
struct MIGRtpsWriterInfo *writerInfo);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Returns first element
|
|
*/
|
|
extern MIGDllExport const struct MIGRtpsVirtualWriterInfo *
|
|
MIGRtpsWriterInfo_getFirstVirtualWriterInfo(
|
|
struct MIGRtpsWriterInfo *writerInfo);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Returns first element
|
|
*/
|
|
extern MIGDllExport const struct MIGRtpsWriterInfo *
|
|
MIGRtpsWriterInfoList_getFirstWriterInfo(
|
|
struct MIGRtpsWriterInfoList *writerInfoList);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterListClass
|
|
\brief Gets the last available virtual sn for the virtualGUID
|
|
provided as input. The result is stored in
|
|
lastGroupAvailableVirtualSn.
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_getLastAvailableVirtualSn(
|
|
struct MIGRtpsWriterInfoList *writerInfoList,
|
|
struct REDASequenceNumber *lastGroupAvailableVirtualSn,
|
|
const struct MIGRtpsGuid *virtualGuid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief
|
|
*/
|
|
extern MIGDllExport const struct MIGRtpsVirtualWriterInfo *
|
|
MIGRtpsWriterInfo_getNextVirtualWriterInfo(
|
|
struct MIGRtpsWriterInfo *writerInfo);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief
|
|
*/
|
|
extern MIGDllExport const struct MIGRtpsWriterInfo *
|
|
MIGRtpsWriterInfoList_getNextWriterInfo(
|
|
struct MIGRtpsWriterInfoList *writerInfoList);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Calculates the serialized size of the writerVirtualHB
|
|
*/
|
|
extern MIGDllExport RTI_INT32 MIGRtpsWriterInfoList_getSerializedSizeAndFlags(
|
|
struct MIGRtpsWriterInfoList *writerInfoList,
|
|
MIGRtpsSubmessageFlag *flags);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Deserialized list: returns number of elements.
|
|
Serialized list: returns -1 (not supported)
|
|
*/
|
|
extern MIGDllExport int MIGRtpsWriterInfo_getVirtualWriterInfoListSize(
|
|
struct MIGRtpsWriterInfo *writerInfo);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Deserialized list: returns number of elements
|
|
Serialized list: returns -1 (not supported)
|
|
*/
|
|
extern MIGDllExport int MIGRtpsWriterInfoList_getWriterInfoListSize(
|
|
struct MIGRtpsWriterInfoList *writerInfoList);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_initFromBuffer(
|
|
struct MIGRtpsWriterInfoList *writerInfoList,
|
|
char *dataStream,
|
|
unsigned int dataLength,
|
|
MIGRtpsSubmessageFlag flags,
|
|
const struct MIGRtpsGuid *guid);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_initFromInlineList(
|
|
struct MIGRtpsWriterInfoList *writerInfoList,
|
|
struct REDAInlineList *inlineList);
|
|
|
|
|
|
/*e \ingroup MIGRtpsVirtualWriterInfoClass
|
|
\brief Deserialized list: removes all writerInfo from list, returns TRUE on
|
|
success Serialized list: returns RTI_FALSE (not supported)
|
|
*/
|
|
extern MIGDllExport RTIBool MIGRtpsWriterInfoList_removeAllWriterInfo(
|
|
struct MIGRtpsWriterInfoList *writerInfoList);
|
|
|
|
|
|
/* ======= */
|
|
/* RENAMES */
|
|
/* ======= */
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsAppId_deserialize MIGRtpsHostId_deserialize
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsAppId_getMaxSizeSerialized MIGRtpsHostId_getMaxSizeSerialized
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsAppId_serialize MIGRtpsHostId_serialize
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsAppId_print MIGRtpsHostId_print
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsInstanceId_deserialize MIGRtpsHostId_deserialize
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsInstanceId_getMaxSizeSerialized \
|
|
MIGRtpsHostId_getMaxSizeSerialized
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsInstanceId_serialize MIGRtpsHostId_serialize
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsInstanceId_print MIGRtpsHostId_print
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsObjectId_deserialize MIGRtpsHostId_deserialize
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsObjectId_getMaxSizeSerialized MIGRtpsHostId_getMaxSizeSerialized
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsObjectId_serialize MIGRtpsHostId_serialize
|
|
|
|
|
|
/*e \ingroup MIGRtpsClass */
|
|
|
|
#define MIGRtpsObjectId_print MIGRtpsHostId_print
|
|
|
|
|
|
/* ============== */
|
|
/* END OF RENAMES */
|
|
/* ============== */
|
|
|
|
/* ============================ */
|
|
/* END OF FUNCTION DECLARATIONS */
|
|
/* ============================ */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#include "mig/mig_rtps_impl.h"
|
|
|
|
|
|
#endif /* mig_rtps_h */
|