RULES 8.4.2 =========== GENERAL ------- * All communications must take place using RTPS Messages * All implementations must implement the RTPS Message Receiver * The timing characteristics of all implementations must be tunable * Implementations must implement the Simple Participant and Endpoint Discovery Protocols WRITER ------ * Writers must not send data out-of-order * Writers must include in-line QoS values if requested by a Reader * Writers must send periodic HEARTBEAT Messages (reliable only) * Writers must eventually respond to a negative acknowledgment (reliable only) * Sending Heartbeats and Gaps with Writer Group Information (Writer belonging to a Group) READER ------ A best-effort Reader is completely passive as it only receives data and does not send messages itself. Therefore, the requirements below only apply to reliable Readers. * Readers must respond eventually after receiving a HEARTBEAT with final flag not set * Readers must respond eventually after receiving a HEARTBEAT that indicates a sample is missing * Once acknowledged, always acknowledged * Readers can only send an ACKNACK Message in response to a HEARTBEAT Message RELIABILITY =========== * Best Effort Writer can only be matched with Best Effort Reader * Stateless Reader can only be Best Effort (maintains absolutely no state, does not handle duplicate and out-of-order changes) STATELESS WRITER ================ Note that the processing of this message uses the reply locators in the RTPS Receiver. This is the only source of information for the StatelessWriter to determine where to send the reply to. Proper functioning of the protocol requires that the RTPS Reader inserts an InfoReply Submessage ahead of the AckNack such that these fields are properly set. Writer Liveness Protocol ======================== ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_WRITER ENTITYID_P2P_BUILTIN_PARTICIPANT_MESSAGE_READER OPTIONAL 8.4.14 =============== Optional features may not be supported by all RTPS implementations. * LARGE DATA (Fragmented Data) -------------------------------------------- ENTITYID_UKNOWN also for Built-In? Ignore Participant/Topic/Publication/Subscription (handle argument of Sampleinfo) ENDIANNESS ========== You have to see what datatypes PSM maps to each element. If the datatype is bigger than a byte, byte swaping has to occur. The elements of an array are in order (but the elements themselves may need to be swapped if bigger than a Byte) ENDPOINT FIFO PACKET FORMAT =========================== 0...2...........8...............16..............24..............32 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LENTGH | +---------------+---------------+---------------+---------------+ | OPCODE | FLAGS | UDP_PORT | +---------------+---------------+---------------+---------------+ | IPv4_ADDR | +---------------------------------------------------------------+ | ENTITYID | +---------------------------------------------------------------+ | | + Sequence Number [only for DATA Submessage] + | | +---------------------------------------------------------------+ | | ~ PAYLOAD (SUBMESSAGE CONTENT) ~ | | +---------------------------------------------------------------+ ENDPOINT_ID =========== MSB...........LSB READERS...WRITERS