SlideShare a Scribd company logo
Date: September 2017
DDS for eXtremely Resource
Constrained Environments
Revised Submission
Real-Time Innovations, Inc.
Twin Oaks Computing, Inc.
eProsima, Inc.
__________________________________________________
OMG Document Number: mars/2017-09-18
Associated Files (Normative):
dds_xrce_types.idl (mars/2017-09-20)
dds_xrce_model.xmi (mars/2017-09-19)
_________________________________________________
IPR mode: Non-Assert
__________________________________________________
Submission Contacts:
Gerardo Pardo-Castellote, Ph.D. (lead) CTO,
Real-Time Innovations, Inc. gerardo@rti.com
Clark Tucker,
CEO, TwinOaks Computing, Inc. ctucker@prismtech.com
Jaime Martin-Losa
CTO, eProsima. JaimeMartin@eprosima.com
Copyright © 2017, Real-Time Innovations, Inc.
Copyright © 2017, Twin Oaks Computing, Inc.
Copyright © 2017, eProsima, Inc.
Copyright © 2017, Object Management Group, Inc.
USE OF SPECIFICATION - TERMS, CONDITIONS & NOTICES
The material in this document details an Object Management Group specification in accordance with the terms,
conditions and notices set forth below. This document does not represent a commitment to implement any
portion of this specification in any company's products. The information contained in this document is subject to
change without notice.
LICENSES
The companies listed above have granted to the Object Management Group, Inc. (OMG) a nonexclusive,
royalty-free, paid up, worldwide license to copy and distribute this document and to modify this document and
distribute copies of the modified version. Each of the copyright holders listed above has agreed that no person
shall be deemed to have infringed the copyright in the included material of any such copyright holder by reason
of having used the specification set forth herein or having conformed any computer software to the
specification.
Subject to all of the terms and conditions below, the owners of the copyright in this specification hereby grant
you a fully-paid up, non-exclusive, nontransferable, perpetual, worldwide license (without the right to
sublicense), to use this specification to create and distribute software and special purpose specifications that are
based upon this specification, and to use, copy, and distribute this specification as provided under the Copyright
Act; provided that: (1) both the copyright notice identified above and this permission notice appear on any
copies of this specification; (2) the use of the specifications is for informational purposes and will not be copied
or posted on any network computer or broadcast in any media and will not be otherwise resold or transferred for
commercial purposes; and (3) no modifications are made to this specification. This limited permission
automatically terminates without notice if you breach any of these terms or conditions. Upon termination, you
will destroy immediately any copies of the specifications in your possession or control.
PATENTS
The attention of adopters is directed to the possibility that compliance with or adoption of OMG specifications
may require use of an invention covered by patent rights. OMG shall not be responsible for identifying patents
for which a license may be required by any OMG specification, or for conducting legal inquiries into the legal
validity or scope of those patents that are brought to its attention. OMG specifications are prospective and
advisory only. Prospective users are responsible for protecting themselves against liability for infringement of
patents.
GENERAL USE RESTRICTIONS
Any unauthorized use of this specification may violate copyright laws, trademark laws, and communications
regulations and statutes. This document contains information which is protected by copyright. All Rights
Reserved. No part of this work covered by copyright herein may be reproduced or used in any form or by any
means--graphic, electronic, or mechanical, including photocopying, recording, taping, or information storage
and retrieval systems--without permission of the copyright owner.
DISCLAIMER OF WARRANTY
WHILE THIS PUBLICATION IS BELIEVED TO BE ACCURATE, IT IS PROVIDED "AS IS" AND MAY
CONTAIN ERRORS OR MISPRINTS. THE OBJECT MANAGEMENT GROUP AND THE COMPANIES
LISTED ABOVE MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO
THIS PUBLICATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR
OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR A
PARTICULAR PURPOSE OR USE. IN NO EVENT SHALL THE OBJECT MANAGEMENT GROUP OR
ANY OF THE COMPANIES LISTED ABOVE BE LIABLE FOR ERRORS CONTAINED HEREIN OR FOR
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, RELIANCE OR COVER DAMAGES,
INCLUDING LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY ANY USER OR ANY
THIRD PARTY IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS
MATERIAL, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
The entire risk as to the quality and performance of software developed using this specification is borne by you.
This disclaimer of warranty constitutes an essential part of the license granted to you to use this specification.
RESTRICTED RIGHTS LEGEND
Use, duplication or disclosure by the U.S. Government is subject to the restrictions set forth in subparagraph (c)
(1) (ii) of The Rights in Technical Data and Computer Software Clause at DFARS 252.227-7013 or in
subparagraph (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clauses at 48 C.F.R.
52.227-19 or as specified in 48 C.F.R. 227-7202-2 of the DoD F.A.R. Supplement and its successors, or as
specified in 48 C.F.R. 12.212 of the Federal Acquisition Regulations and its successors, as applicable. The
specification copyright owners are as indicated above and may be contacted through the Object Management
Group, 109 Highland Avenue, Needham, MA 02494, U.S.A.
TRADEMARKS
IMM®, MDA®, Model Driven Architecture®, UML®, UML Cube logo®, OMG Logo®, CORBA® and
XMI® are registered trademarks of the Object Management Group, Inc., and Object Management Group™,
OMG™ , Unified Modeling Language™, Model Driven Architecture Logo™, Model Driven Architecture
Diagram™, CORBA logos™, XMI Logo™, CWM™, CWM Logo™, IIOP™ , MOF™ , OMG Interface
Definition Language (IDL)™ , and OMG SysML™ are trademarks of the Object Management Group. All other
products or company names mentioned are used for identification purposes only, and may be trademarks of their
respective owners.
COMPLIANCE
The copyright holders listed above acknowledge that the Object Management Group (acting itself or through its
designees) is and shall at all times be the sole entity that may authorize developers, suppliers and sellers of
computer software to use certification marks, trademarks or other special designations to indicate compliance
with these materials.
Software developed under the terms of this license may claim compliance or conformance with this
specification if and only if the software compliance is of a nature fully matching the applicable compliance
points as stated in the specification. Software developed only partially matching the applicable compliance
points may claim only that the software was based on this specification, but may not claim compliance or
conformance with this specification. In the event that testing suites are implemented or approved by Object
Management Group, Inc., software developed using this specification may claim compliance or conformance
with the specification only if the software satisfactorily completes the testing suites.
OMG’s Issue Reporting Procedure
All OMG specifications are subject to continuous review and improvement. As part of this process we
encourage readers to report any ambiguities, inconsistencies, or inaccuracies they may find by completing the
Issue Reporting Form listed on the main web page http://www.omg.org, under Documents, Report a Bug/Issue
(http://www.omg.org/report_issue.)
Table of Contents
1 Scope........................................................................................................................................................ 3
1.1 General.......................................................................................................................................... 3
2 Overview.................................................................................................................................................. 5
2.1.1 DDS-XRCE Client.......................................................................................................... 5
2.1.2 XRCEAgent 6
3 Conformance ............................................................................................................................................ 7
4 References................................................................................................................................................ 8
4.1 Normative References.................................................................................................................... 8
4.2 Non-normative References............................................................................................................. 8
5 Terms and Definitions............................................................................................................................... 9
6 Symbols.................................................................................................................................................. 10
7 Additional Information............................................................................................................................ 11
7.1 Changes to Adopted OMG Specifications..................................................................................... 11
7.2 Acknowledgements...................................................................................................................... 11
8 DDS-XRCE Object Model ...................................................................................................................... 12
8.1 General........................................................................................................................................ 12
8.2 Model Overview.......................................................................................................................... 14
8.3 XRCE DDS Proxy Objects........................................................................................................... 15
8.4 XRCE Object Identification ......................................................................................................... 15
8.5 Data types used to model operations on XRCE Objects................................................................. 16
8.5.1 Data and Samples ......................................................................................................... 16
8.5.2 DataRepresentation....................................................................................................... 16
8.5.3 ObjectVariant 17
8.6 XRCE Object operations.............................................................................................................. 21
8.6.1 Use of the ClientKey..................................................................................................... 21
8.6.2 DDSXRCE::Root.......................................................................................................... 21
8.6.3 DDSXRCE::ProxyClient............................................................................................... 23
8.6.4 DDSXRCE::DataWriter................................................................................................ 29
8.6.5 DDSXRCE::DataReader ............................................................................................... 30
9 The DDS-XRCE Protocol ....................................................................................................................... 32
9.1 General........................................................................................................................................ 32
9.2 The DDS-XRCE Protocol Transport Model.................................................................................. 32
9.3 Overview..................................................................................................................................... 32
9.3.1 Message 32
9.3.2 Session 33
9.3.3 Stream 33
9.3.4 Client 33
9.3.5 Agent 33
9.4 Message Structure........................................................................................................................ 33
9.4.1 General 33
9.4.2 Header Structure........................................................................................................... 33
9.4.3 Submessage Structure................................................................................................... 35
9.4.4 Submessage Header ...................................................................................................... 35
9.4.5 Submessages 36
9.4.6 RESET 43
9.4.7 FRAGMENT 43
9.5 Interaction Model......................................................................................................................... 44
9.5.1 General 44
9.5.2 Sending data using a pre-configured DataWriter............................................................ 44
9.5.3 Receiving data using a pre-configured DataReader........................................................ 44
9.5.4 Creating a DataWriter ................................................................................................... 45
9.5.5 Getting Information on a Resource................................................................................ 46
9.5.6 Updating a Resource..................................................................................................... 47
9.5.7 Reliable Communication............................................................................................... 47
Annex A. IDL Types ................................................................................................................................. 55
Annex B. EXAMPLES .............................................................................................................................. 68
CREATE_CLIENT message example ................................................................................................... 68
READ_DATA message examples ......................................................................................................... 70
Reading a single data sample..................................................................................................... 70
Reading a sequence of data samples .......................................................................................... 71
DATA message examples...................................................................................................................... 74
Receiving a single data sample.................................................................................................. 74
Receiving a sequence of samples without SampleInfo................................................................ 75
Receiving a sequence of samples that includes SampleInfo........................................................ 77
Receiving a sequence of packed samples ................................................................................... 79
DDS-XRCE, Revised Submission 1
Preface
OMG
Founded in 1989, the Object Management Group, Inc. (OMG) is an open membership, not-for-profit computer industry
standards consortium that produces and maintains computer industry specifications for interoperable, portable, and
reusable enterprise applications in distributed, heterogeneous environments. Membership includes Information
Technology vendors, end users, government agencies, and academia.
OMG member companies write, adopt, and maintain its specifications following a mature, open process. OMG’s
specifications implement the Model Driven Architecture® (MDA®), maximizing ROI through a full-lifecycle approach
to enterprise integration that covers multiple operating systems, programming languages, middleware and networking
infrastructures, and software development environments. OMG’s specifications include: UML® (Unified Modeling
Language™); CORBA® (Common Object Request Broker Architecture); CWM™ (Common Warehouse Metamodel);
and industry-specific standards for dozens of vertical markets.
More information on the OMG is available at http://www.omg.org/.
OMG Specifications
As noted, OMG specifications address middleware, modeling and vertical domain frameworks. All OMG Specifications
are available from the OMG website at:
http://www.omg.org/spec
Specifications are organized by the following categories:
Business Modeling Specifications
Middleware Specifications
• CORBA/IIOP
• Data Distribution Services
• Specialized CORBA
IDL/Language Mapping Specifications
Modeling and Metadata Specifications
• UML, MOF, CWM, XMI
• UML Profile
Modernization Specifications
Platform Independent Model (PIM), Platform Specific Model (PSM), Interface Specifications
• CORBAServices
• CORBAFacilities
CORBA Embedded Intelligence Specifications
CORBA Security Specifications
OMG Domain Specifications
2 DDS XRCE Revised Submission
Signal and Image Processing Specifications
All of OMG’s formal specifications may be downloaded without charge from our website. (Products implementing
OMG specifications are available from individual suppliers.) Copies of specifications, available in PostScript and PDF
format, may be obtained from the Specifications Catalog cited above or by contacting the Object Management Group,
Inc. at:
OMG Headquarters
109 Highland Avenue
Needham, MA 02494
USA
Tel: +1-781-444-0404
Fax: +1-781-444-0320
Email: pubs@omg.org
Certain OMG specifications are also available as ISO standards. Please consult http://www.iso.org
Typographical Conventions
The type styles shown below are used in this document to distinguish programming statements from ordinary English.
However, these conventions are not used in tables or section headings where no distinction is necessary.
Times/Times New Roman - 10 pt.: Standard body text
Helvetica/Arial - 10 pt. Bold: OMG Interface Definition Language (OMG IDL) and syntax elements.
Courier - 10 pt. Bold: Programming language elements.
Helvetica/Arial - 10 pt: Exceptions
NOTE: Terms that appear in italics are defined in the glossary. Italic text also represents the name of a document,
specification, or other publication.
Issues
The reader is encouraged to report any technical or editing issues/problems with this specification to
http://www.omg.org/report_issue.htm.
DDS-XRCE, Revised Submission 3
1 Scope
This specification is a response to the OMG RFP « eXtremely Resource Constrained Environments DDS (DDS-
XRCE) » (mars/16-03-21). It defines a DDS-XRCE Service based on a client-server protocol between a resource
constrained, low-powered device (client) and an Agent (the server) that enables the device to communicate with a DDS
network and publish and subscribe to topics in a DDS domain. The specifications purpose and scope is to ensure that
applications based on different vendor’ implementations of the DDS-XRCE Service are compatible and interoperable.
Figure 1— Scope of DDS-XRCE Protocol
The DDS-XRCE protocol is a client-server protocol between resource constrained devices (clients) and an XRCE
Agent (server) allowing the resource contrained devices with sleep/wake cycles to have access to the DDS Global
Data Space over limited-bandwith networks.
1.1 General
DDS offers a rich set of API and QoS policies to develop distributed applications for highly complex, mission critical
systems. However, these features come at relatively high cost in terms of memory, CPU and bandwidth usage. A large
number of devices on the edge of the network, such as actuators and sensors, do not need these types of features. Instead,
being at the edge of the network, it is sufficient to be able to publish and subscribe to data while at the same time appear
as a first-class participant in the DDS Global Data Space.
While the DDS programming API can be avoided by an application, it is still necessary to implement the DDS-RTPS
wire protocol to be able to participate in DDS communication. However, the RTPS protocol, whilst featuring a wire
efficiency comparable to that of MQTT and other IoT standards, is designed for situations where:
- The underlying network transport has reasonably large MTUs exceeding those available in LowPANs, such as
802.15.4 and ZigBee.
- The protocol endpoints are assumed to have continuous and simultaneous presence on the network rather than
operating on independent sleep/wake cycles.
This peer-to-peer and broker-less nature of DDS has significant advantages in many situations but it also has drawbacks
in extremely resource-constrained environments (XRCEs). Specifically, the complexity of a DDS peer and the discovery
and presence traffic is in general higher than that of a client in broker-based technologies, thus making it harder for DDS
implementations to be extremely small.
4 DDS XRCE Revised Submission
In order to enable resource-constrained devices to participate in DDS communication and allow devices to be
disconnected for long periods of time, but still be discoverable by other DDS applications, there is a need for a client-
agent architecture where the agent acts on behalf of the device and makes the device discoverable in the larger DDS
network while isolating the device from the complexity of DDS itself.
The goal of this specification is to define a service, the XRCEAgent, which enables resource-constrained devices, a
DDS-XRCE Client, to participate as a first-class DDS publisher and subscriber in the DDS Global Data Space. This
Service is described in terms of a DDS-XRCE Object Model and a set of operations to manipulate the object model in
the XRCEAgent for the DDS Global Data Space.
DDS-XRCE, Revised Submission 5
2 Overview
DDS-XRCE defines an object model that acts as a façade to the Standard DDS Object model. The purpose of this
simplified object model is to expose to the client a simpler interaction model with the DDS data-space, when compared
to the Standard DDS and RTPS protocols, but still enable a DDS-XRCE client to participate in the DDS data-space as a
first class principal.
Because the target environment is a resource-constrained device, the goal with the DDS-XRCE object model is not to
expose the complete Standard DDS object model. It is understood that much of the configuration can be performed
directly on the Agent and therefore does not require explicit interaction from the client. Instead, the focus is on the core
set of features required to enable DDS-XRCE clients to participate in a meaningful way in the DDS data-space. In
addition to the exposed object from the Standard DDS Object model, the DDS-XRCE object model defines new objects
needed to manage disconnected clients, as well as enable access control and access rights.
2.1.1 DDS-XRCE Client
The DDS-XRCE Client (XRCEClient) is exposed to the DDS-XRCE Object Model and the façade object. Logically one
can think of this as logical equivalent to the “DDS Object Model”. However, a client never interacts directly with objects
in the Standard Object Model, and there is not a one-to-one mapping between the operations on the DDS-XRCE Object
Model and the “DDS Object Model”. This specification does not simply reuse the standard “DDS Object Model” and
operations for three reasons:
1. The DDS Object Model is intended for use with a local programming API. For this reason, the DDS Object
Model contains many objects and methods with strongly typed parameters, as well as a direct callback interface
by means of listener objects that the application registers with the middleware. Such an API is not suitable for
resource constrained, low-power clients that typically prefer more “resource-oriented interfaces” and also
expect a simplified interface with no callbacks and where all parameters are encoded in text.
2. The XRCEClient connectivity is assumed to be inherently intermittent due to potentially aggressive use of low-
power mode and deep sleep to conserve battery or loss of radio connectivity. Therefore, the DDS-XRCE DDS
Object Model must overcome this by introducing a “session,” which can exist across repeated sleep-wakeup
cycles by a device.
3. The XRCEClient can access a DDS Service from any location, and therefore it is desirable to have an access
control model that authenticates each client application/principal, controls whether the principal can access the
DDS Global Data Space, and controls which operations each principal can perform (e.g., which DDS Topics it
can publish and subscribe).
This specification recognizes that XRCEClient entities may have very different needs, and supports clients with a wide
range of requirements:
 Simple devices may not need to perform any discovery interaction with the XRCEAgent other then having their
presence detected by the agent, and hence establish a presence in the DDS data-space, and be able to publish
data of a well-known DDS Topic, using a DDS QoS policy. Such a client does not need any of the QoS
configuration and dynamic entity creation capabilities of DDS.
 More capable devices may need to publish and subscribe to well-known Topics, however a XRCEClient may
not want the data to be pushed by the XRCEAgent at an arbitrary time, for example due to network constraints.
Thus, the DDS model of “pushing” data from Writers to Readers may not work well. This specification
addresses this by enabling a device to activate/deactivate “data push” from the Agent.
 Advanced clients may choose to utilize DDS concepts, and create their own XRCEAgent resources that map to
DDS Objects with client-controlled QoS. This specification enables these types of Clients by exposing a set of
operations to dynamically create/update/delete Agent objects. This is as opposed to the first two cases, where all
resources are known in advance and pre-configured on the Agent.
 Finally, complex clients may need to be aware of advanced concepts, such as sequence-numbers (or sample
IDs), timestamp, DDS sources etc.
6 DDS XRCE Revised Submission
As shown by this list, this specification enables simple devices with little to no configuration ability to fully capable
DDS devices.
2.1.2 XRCEAgent
The purpose of the DDS-XRCE Agent (XRCEAgent) is to establish and maintain the presence of the XRCEClient in the
DDS data-space. This specification does not dictate any particular implementation; instead the required behavior is
described as a set of logical operations on the DDS-XRCE Object Model.
An important feature of this specification is the simplified interaction with the XRCEAgent. The agent presents an
Object Model that describes resources. At a high-level, a resource is an object that can be accessed with a name and has
properties and behavior. Resources may be preconfigured with well-known names, or dynamically created by a
XRCEClient.
Examples of named resources in the XRCEAgent are:
 DDS-XRCE Type
 DDS-XRCE DataWriter
 DDS-XRCE DataReader
Any XRCEClient that is allowed to communicate with the XRCEAgent and has the required access rights can refer to
these resources by name. Thus, if an XRCEAgent is preconfigured with a name “FooPublisher::FooWriter” resource that
can publish a type “Foo”, a Client that has access to this resource and write data using this resource simply by referring
to the existing “FooPublisher::FooWriter”. It does not have to create a resource.
The implementation of a resource is outside the scope of this specification. For example, a resource
“FooPublisher::FooWriter” may be associated with a DDS DataWriter shared by many DDS-XRCE clients, or an
XRCEClient may have its own dedicated “FooWriter”, as long as the DDS DataWriter supports the client’s required QoS
policies.
An important feature of the DDS-XRCE Object Model is the ability for a Client to query it, as opposed to the typical
behavior in the Standard DDS Object Model where changes are updated and pushed in real-time. This model is vey
likely not suitable for the target environment where disconnected devices is expected to be the normal behavior. This
specification enables Clients to be in charge of when data is received, and can ask the XRCEAgent to return data that
matches a set of constraints. Thus, a XRCEClient that is disconnected will not be woken up by an XRCEAgent (it may
not be possible), instead a XRCEClient queries the XRCEAgent when it wakes up.
It is important to distinguish between the operations on the DDS-XRCE Object Model and the Standard DDS Object
Model. There is not a 1-to-1 mapping between the operations. Specifically, any reference to the Standard DDS Object
Model refers to the behavior and semantics defined in the DDS specification. The DDS operations on the Standard DDS
Object Model are not necessarily exposed or have an equivalent in the DDS-XRCE Object Model. The XRCEAgent is
not required to expose any programming APIs; the only standard interactions occur with the XRCEClient using the
DDS-XRCE protocol and with other DDS domain participants using the DDS-RTPS protocol.
DDS-XRCE, Revised Submission 7
3 Conformance
This specification defines five profiles. Each constitutes a separate conformance point:
 Read Access profile. Provides the clients the ability to read data on pre-configured Topics with pre-configured
QoS policies. Requires implementation of all sub-message types except for CREATE, INFO, WRITE_DATA,
and DELETE, including the associated behaviors.
 Write Access profile. Provides the clients the ability to write data on pre-configured Topics with pre-
configured QoS policies. Requires implementation of all sub-message types except for CREATE, INFO,
READ_DATA, DATA, and DELETE, including the associated behaviors.
 Define Entities profile. Provides the clients the ability define DomainParticipant, Topic, Publisher, Subscriber,
DataWriter, and DataReader entities using pre-configured QoS policies and data-types. Requires
implementation of the DELETE submessage and the associated behaviors.
 Define QoS profile. Provides client the ability to define QoS profiles to be used by DDS entities. Requires
implementation of the CREATE submessage and the associated behaviors for object kind
OBJK_QOSPROFILE.
 Define types profile. Provides client the ability to explicitly define data types to be used for DDS Topics.
Requires implementation of the CREATE submessage and the associated behaviors for object kind
OBJK_TYPE.
 Discovery access profile. Provides the clients the ability to discover the Topics and Types available on the
DDS Global Data Space. Requires implementation of the INFO submessage and the associated behaviors.
 Complete profile. Requires implementation of the complete specification.
8 DDS XRCE Revised Submission
4 References
4.1 Normative References
The following normative documents contain provisions that, through reference in this text, constitute provisions of this
specification. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply.
 [IETF RFC-1982] Serial Number Arithmetic. https://tools.ietf.org/html/rfc1982
 [IDL] Interface Definition Language (IDL), version 4.1, http://www.omg.org/spec/IDL/4.1/
 [DDS] Data Distribution Service for Real-Time Systems Specification, version 1.2
http://www.omg.org/spec/DDS/1.2
 [DDS-XML] DDS Consolidated XML Syntax, version 1.0, http://www.omg.org/spec/DDS-XML/1.0/
 [DDS-XTYPES] Extensible And Dynamic Topic Types for DDS, version 1.2, http://www.omg.org/spec/DDS-
XTypes/1.2/
 [UML] Unified Modeling Language, version 2.5, http://www.omg.org/spec/UML/2.5
4.2 Non-normative References
DDS-XRCE, Revised Submission 9
5 Terms and Definitions
For the purposes of this specification, the following terms and definitions apply.
Data Distribution Service (DDS)
An OMG distributed data communications specification that allows Quality of Service policies to be specified for data
timeliness and reliability. It is independent of implementation languages.
DDS data-space
A “DDS data-space” consists of a collection of peers communicating over the Data Distribution Service and the
collection of data observable by those peers.
GUID
Globally Unique Identifier
10 DDS XRCE Revised Submission
6 Symbols
XRCE Extremely Resource Constrained
Environments
DDS-XRCE, Revised Submission 11
7 Additional Information
7.1 Changes to Adopted OMG Specifications
This specification does not change any adopted OMG specification.
7.2 Acknowledgements
The following companies submitted this specification:
 Real-Time Innovations, Inc.
 eProsima
 TwinOaks Computing
12 DDS XRCE Revised Submission
8 DDS-XRCE Object Model
8.1 General
This specification defines a wire protocol, the DDS-XRCE protocol, to be used between an XRCE Client and an XRCE
Agent. The XRCE Agent is a DDS Participant in the DDS Global Data Space. The DDS-XRCE protocol allows the
client to use the XRCE Agent as a proxy in order to produce and consume data in the DDS Global Data Space.
To model the interaction between the XRCE Client and the XRCEAgent this specification defines a UML model for the
XRCEAgent. This model, called the DDS-XRCE Object Model, defines the objects, interfaces, and operations to be
implemented by the agent and how they relate to operations on the Standard DDS Object Model as defined in the OMG
Data-Distribution Service Specification [DDS].
The DDS-XRCE protocol is defined as a set of logical messages exchanged between the XRCE Client and the DDS-
XRCEAgent. These messages perform logical actions on the DDS-XRCE Object Model that result in corresponding
actions on the Standard DDS Object Model. The specification of these logical actions fully describes the observable
behavior of the XRCE Agent and its interactions both with the Client and the DDS Global Data Space.
The DDS-XRCE Object Model both extends and simplifies the Standard DDS Object Model. It extends it to provide an
access control model and application management model that support disconnected clients. It simplifies it to reduce the
number of objects and operations and make it more suitable for resource constrained, low-power clients. Despite this
DDS-XRCE offers complete access to the DDS Global Data space. Any DDS Topic may be published or subscribed on
any DDS with any QoS. This is illustrated in Figure 2.
Figure 2— DDS-XRCE Object Model Overview
pkg PIM Overview
XRCEClient
DDSXRCE
+AccessController
+Application
+DataReader
+DataWriter
+DomainParticipant
+EntityName
+ProxyClient
+Publisher
+Qos
+QosLibrary
+QosProfile
+RegisteredType
+ReturnStatus
+Root
+SessionId
+Status
+Submessage
+Subscriber
+Topic
+Type
+Entity
+Submessages
DDS
+Condition
+ContentFilteredTopic
+DataReader
+DataReaderListener
+DataWriter
+DataWriterListener
+DomainEntity
+DomainParticipant
+DomainParticipantFactory
+DomainParticipantListener
+Entity
+GuardCondition
+Listener
+Publisher
+PublisherListener
+QosPolicy
+QueryCondition
+ReadCondition
+SampleInfo
+Status
+StatusCondition
+Subscriber
+SubscriberListener
+Topic
+TopicDescription
+TopicListener
+TypeSupport
+WaitSet
+Qos
Qos
+DataReaderQos
+DataWriterQos
+DomainParticipantQos
+PublisherQos
+SubscriberQos
+TopicQos
(from DDS)
«use»
«use»
«use»
DDS-XRCE, Revised Submission 13
The DDS-XRCE Object Model is contained in the package DDS-XRCE and acts as a façade to the Standard DDS
Object Model (from the DDS specification, contained in the DDS package).
All the operations described in the DDS-XRCE PIM pertain to the interaction of a client application with a single DDS-
XRCE agent. The scope of all the operations is therefore limited to the interactions with that one DDS-XRCE agent.
Notwithstanding that, client applications may interact with each other despite connecting to different DDS-XRCE agents.
These interactions would happen as a consequence of the DDS-XRCE agents creating and performing operations on
DDS DomainParticipant entities, which exchange information in accordance to the DDS specification.
The specification does not preclude DDS-XRCE agents from proxying for other DDS-XRCE agents and therefore create
a network of DDS-XRCE agents supporting store-and-forward deployment scenarios. This is transparent to the DDS-
XRCE client applications. This is illustrated in Figure 3.
Figure 3— DDS-XRCE Agents operating in relay mode
The XRCEAgents can communicate with each other using the same DDS-XRCE protocol. These enables store-and-
forward dataflows. This type of deployment is transparent to the XRCEClient applications and the DDS applications.
14 DDS XRCE Revised Submission
8.2 Model Overview
At the highest-level DDS-XRCE Object Model consists of 5 classes: The Root singleton, ProxyClient,
Application, AccessController, and DomainParticipant.
Figure 4 — DDS-XRCE Object Model Overview
The Root singleton is the entry point for the service and functions as a factory for all the Objects managed by the
XRCEAgent.
The ProxyClient class models the client application that interacts with the Agent using the XRCE protocol. Each
Application object is associated with a single Client and gets its access rights from those assigned to the Client.
The Application class models a software application that connects with the DDS-XRCE Client and manages the
DDS objects needed to publish and subscribe data on one or more DDS Domains. An Application can be associated
with zero of more DomainParticipant objects.
The AccessController is responsible for making decisions regarding the resources and operations a particular
Client is allowed to perform. It contains rules that associate a Client with privileges which determine which DDS domain
an application executing on behalf of a client may join, the DDS Topics it can read and write, etc.
The DDS-XRCE DomainParticipant is a proxy for a DDS DomainParticipant and models the association
with a DDS domain and the capability of the Application to publish and subscribe to Topics on that domain.
classOverview
DDSXRCE::Application
DDSXRCE::ProxyClient «singleton»
DDSXRCE::Root
DDSXRCE::
DomainParticipant
DDSXRCE::AccessController
DDSXRCE::QosLibrary
- name: string
«value»
DDSXRCE::Type
- name: string
«use»
0..*
1
0..*
0..*
«use»
DDS-XRCE, Revised Submission 15
8.3 XRCE DDS Proxy Objects
Several of the DDS-XRCE objects act as proxy to corresponding DDS objects. These proxy objects allow the client
application to participate as first-class citizens on the DDS network by delegating the actual DDS behavior and DDS-
RTPS protocol implementation to the proxy DDS objects.
This relationship is shown in Figure 5.
Figure 5 -- DDSXRCE objects that proxy DDS Entities
8.4 XRCE Object Identification
Each XRCE Object managed by the XRCEAgent on behalf of a specific XRCEClient is identified by means of an
ObjectId. This implies that the ObjectId shall be unique within the scope of an Agent and a ClientKey. The
value of the ObjectId for a particular object be configured on the XRCEAgent or specified by the XRCEClient at the
time the object is created.
classDDS-Mapping
DDSXRCE::
DomainParticipant
DDSXRCE::Publisher
DDSXRCE::Subscriber
DDSXRCE::
DataWriter
DDSXRCE::DataReader
DDSXRCE::Topic
DDS::DomainParticipantFactory
DDS::DomainParticipant
DDS::Publisher
DDS::Subscriber
DDS::TopicDescription
DDS::Topic
DDS::ContentFilteredTopic
DDS::DataReader
DDS::DataWriter
«value»
DDSXRCE::Qos
«value»
DDSXRCE::
QosProfile
Qos
+DataReaderQos
+DataWriterQos
+DomainParticipantQos
+PublisherQos
+SubscriberQos
+TopicQos
(from DDS)
DDSXRCE::Application
«use»
«use»
«use»
«use»
«use»
«use»
0..*
«use»
«use»
«use»
«use»
«use»
16 DDS XRCE Revised Submission
There are two reserved values for ObjectId. The value {0x00, 0x00} is referred as OBJECTID_INVALID and
represents an invalid object. The value {0xFF, 0xFF} is referred as OBJECTID_CLIENT and represents the
DDSXRCE::ProxyClient object.
Alternatively, objects may also be identified by a string resourceName. The format of this name depends on the resource
and provides a way to refer to a resource configured on the agent using a configuration file or similar means.
8.5 Data types used to model operations on XRCE Objects
The operations on the XRCE objects accept parameters. The format of these parameters is described as a set of IDL data
types. These IDL descriptions are used both in the description of the XRCE Object operations as well as to define the
wire representation of the messages exchanged between the Client and the Agent.
The IDL definitions for the data types shall be as specified in Annex A IDL Types.
The following sub clauses provide explanations for some of the key data types specified in Annex A IDL Types.
8.5.1 Data and Samples
When the XRCEAgent sends data to the XRCEClient it may use one of four possible formats. The difference is whether
the data is sent by itself, or accompanied with meta-data such as timestamp and sequence numbers. Another difference is
whether the message contains a single sample or a sequence of those.
While it would be possible to combine all these representations into a single type (e.g. a union) this would introduce
additional bytes in the serialization which is undesirable in extremely resource-constrained environments.
The five possible representation are: SampleData, Sample, SampleDataSeq, SampleSeq, and
SamplePackedData. They respectively correspond to the DataFormat values FORMAT_DATA,
FORMAT_DATA_SEQ, FORMAT_SAMPLE, FORMAT_SAMPLE_SEQ, and FORMAT_PACKED. Their IDL
definition shall be as specified in Annex A IDL Types.
All these representations serialize the data XCDR representation defined in [DDS-XTYPES]. For example, the definition
of the SampleData is given by the IDL:
@extensibility(FINAL)
struct SampleData {
XCDRSerializedBuffer serialized_data;
};
In this structure the XCDRSerializedBuffer represents the bytes resulting from serializing the specific application
data type being sent using the XCDR rules defined in clause 7.4 of [DDS-XTYPES].
Other representations end up including a SampleData to hold the serialized application data. For example Sample is
defined as:
@extensibility(FINAL)
struct Sample {
SampleInfo info;
SampleData data;
};
8.5.2 DataRepresentation
The DataRepresentation type is used to hold values of data samples as well as additional sample information such
DDS-XRCE, Revised Submission 17
as sequence number or timestamps. It is used by the DDSXRCE::ProxyClient write operation.
The DataRepresentation is defined as a union discriminated by a DataFormat. Depending on the discriminator
it selects one of the formats defined in clause 8.5.1.
The possible values for the DataFormat and the resulting representation are described in Table 1 below.
Table 1 Interpretation of the DataFormat
DataFormat Selected DataRepresentation union member
FORMAT_DATA The selected member shall be data of type SampleData.
This member contains a single sample, not a sequence and shall contain
only the data without additional sample information.
FORMAT_DATA_SEQ The selected member shall be data_seq of type SampleDataSeq.
This member contains a sequence of samples. Each sample shall
contain only the data without additional sample information.
FORMAT_SAMPLE The selected member shall be sample of type Sample.
This member contains a single sample, not a sequence and shall contain
both the data and the additional sample information.
FORMAT_SAMPLE_SEQ The selected member shall be sample_seq of type SampleSeq.
This member contains a sequence of samples, each containing both the
data and the additional sample information.
FORMAT_PACKED The selected member shall be packed_samples of type
SamplePackedSeq.
This member contains a sequence of samples, each containing both the
data and the additional sample information but using a more compact
representation than for FORMAT_SAMPLE_SEQ.
8.5.3 ObjectVariant
The ObjectVariant type is used to hold the representation of a DDSXRCE Object. It is used by the
DDSXRCE::ProxyClient create, update, and get_info operations.
The ObjectVariant is defined as a union discriminated by ObjectKind, each value of the discriminator selects an
appropriate object representation for that specific object kind.
Objects may have multiple representations each using a different RepresentationFormat. The reason is that some formats
are optimized for expressiveness and ease of configuration whereas others minimize the size used to transmit the
representation.
18 DDS XRCE Revised Submission
There are three supported RepresentationFormat values: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
 The REPRESENTATION_BY_REFERENCE uses a string_reference. This string refers by name to a
description already known to the XRCEAgent. This can be used to represent any object in an extremely
compact manner. But requires pre-configuration of the XRCEAgent. The rules for referring to objects
preconfigured in the XRCEAgent follow the for object references in the [DDS-XML] specification.
 The REPRESENTATION_AS_XML_STRING represents the object using XML. This can be used to
dynamically represent any object at the expense of the verbosity introduced by the XML format. The XML
format follows the standard defined in [DDS-XML].
 The REPRESENTATION_IN_BINARY represents objects using a binary representation obtained by serializing
using XCDR an IDL-defined data-structure that depends on the kind of object. This representation is very
compact but it can only be used to represent a subset of the objects. For example not all DDS QoS can be
expressed using the binary representation.
The following subsections provide details of the ObjectVariant representation for each kind of object.
8.5.3.1 DDSXRCE::QosProfile
The OBJK_QOSPROFILE_Representation supports only the REPRESENTATION_BY_REFERENCE and
REPRESENTATION_AS_XML_STRING.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
QosProfile known to the XRCEAgent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a QosProfile as defined in [DDS-XML].
The REPRESENTATION_BY_REFERENCE XML representation may reference other QoS profiles already known to
the Agent. This includes profiles were pre-configured or pre-loaded to the Agent. This feature allows a compact
representation of a QosProfile that simply references an existing one as in:
<qos_profile base_name=”MyQosLib:MyQosProfile”/>
This feature also allows a compact way to represent a QosProfile that differs slightly from an existing one:
<qos_profile base_name=”MyQosLib:MyQosProfile”>
<data_reader_qos>
<reliability><kind>RELIABLE_RELIABILITY_QOS</kind><reliability>
<data_reader_qos>
</qos_profile>
8.5.3.2 DDSXRCE::Type
The OBJK_TYPE_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE::Type known to the XRCEAgent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of the DDS Type as defined in [DDS-XML] and [DDS-XTYPES].
DDS-XRCE, Revised Submission 19
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Type_Binary defined in Annex A IDL Types. This representation uses the TypeIdentifier defined in
and [DDS-XTYPES] to uniquely identify the type. However it does not describe the structure of the type.
Independent of the representation format, the additional members in OBJK_TYPE_Representation shall be interpreted as
specified below.
The participant_id contains the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS
DomainParticipant used to register the DDS data-type with DDS.
The registered_type_name contains the name passed to the DDS TypeSupport register_type operation.
8.5.3.3 DDSXRCE::Application
The OBJK_APPLICATION_Representation supports only the REPRESENTATION_BY_REFERENCE and
REPRESENTATION_AS_XML_STRING.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Application definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation shall contain the XML
representation of an Application as defined in [DDS-XML].
8.5.3.4 DDSXRCE::DomainParticipant
The OBJK_PARTICIPANT_Representation supports only the REPRESENTATION_BY_REFERENCE and
REPRESENTATION_AS_XML_STRING.
The OBJK_PARTICIPANT_Representation contains s string field named as_string.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE DomainParticipant definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a DomainParticipant as defined by [DDS-XML].
8.5.3.5 DDSXRCE::Topic
The OBJK_TOPIC_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Topic definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a Topic as defined by [DDS-XML]
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Topic_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_TYPE_Representation shall be interpreted as
specified below.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant used to create the DDS Topic.
8.5.3.6 DDSXRCE::Publisher
The OBJK_PUB_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
20 DDS XRCE Revised Submission
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Publisher definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a Publisher as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Publisher_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_PUB_Representation shall be interpreted as
specified below.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant used to create the DDS Publisher.
8.5.3.7 DDSXRCE::Subscriber
The OBJK_SUB_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Subscriber definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a Subscriber as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Subscriber_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_SUB_Representation shall be interpreted as
specified below.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant used to create the DDS Subscriber.
8.5.3.8 DDSXRCE::DataWriter
The OBJK_DW_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE DataWriter definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a DataWriter as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_DataWriter_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_DW_Representation shall be interpreted as
specified below.
The publisher_id shall contain the ObjectId of a DDSXRCE Publisher object that proxies for the DDS
Publisher used to create the DDS DataWriter.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant to whom the aforementioned DDS Publisher belongs.
DDS-XRCE, Revised Submission 21
8.5.3.9 DDSXRCE::DataReader
The OBJK_DR_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE DataReader definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a DataReader as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_DataReader_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_DR_Representation shall be interpreted as
specified below.
The subscriber_id shall contain the ObjectId of a DDSXRCE Subscriber object that proxies for the DDS
Subscriber used to create the DDS DataReader.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant to whom the aforementioned DDS Subscriber belongs.
8.6 XRCE Object operations
8.6.1 Use of the ClientKey
All operations are performed within the context of a ClientKey with is used both to authenticate and identify the
client:
 The ClientKey is assigned to each client. The ClientKey uniquely identifies the client to a particular
agent. The ClientKey is associated with a set of permissions for the client within the agent.
 The ClientKey shall be considered secret. It needs to be configured both on the Client and in the Agent. The
creation and configuration is outside the scope of this specification.
 The ClientKey shall not be interpreted.
With the exception of the operation DDSXRCE::Root create_client all other operations expect that the ClientKey
references an already exiting DDSXRCE::ProxyClient. If this is not the case the operation shall fail.
To avoid information leakage that could compromise security, the failure to locate a ClientKey may in some cases
result in a returnValue having STATUS_ERR_NOCLIENT while in others it may silently drop the connection to the
client.
The Agent shall maintain a counter on the number of times the STATUS_ERR_NOCLIENT was sent on an established
connection and once a certain threshold is crossed it shall close the connection. The agent may subsequently refuse or
throttle new connections originating from the same client transport endpoint that was previously closed. The specific
details of this behavior are implementation specific and left outside the scope of this specification.
8.6.2 DDSXRCE::Root
The DDSXRCE::Root object represents the Agent. An DDSXRCE::Agent is a singleton object that all agents shall have.
The DDSXRCE::Root is responsible for authenticating client applications and creating the DDSXRCE::ProxyClient
object associated with each client.
The logical operations on the DDSXRCE::Root are shown in Table 2.
22 DDS XRCE Revised Submission
Table 2-- DDSXRCE::Root operations
create_client ResultStatus
object_representation OBJK_CLIENT_Representation
delete_client ResultStatus
8.6.2.1 Operation create_client
Inputs
 object_representation (OBJK_CLIENT_Representation) a representation of the Client.
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
The object_representation shall contain an OBJK_CLIENT_Representation which is used to initialize the
DDSXRCE::ProxyClient. The XRCEAgent shall perform the following checks and actions based on the information
found within the The object_representation:
 Check the xrce_cookie to ensure it matches the predefined XRCE_COOKIE constant. If it does not match the
creation shall fail and set the returnValue to{STATUS_LAST_OP_CREATE,
STATUS_ERR_INVALID_DATA}.
 Check that the major version (xrce_version[0]) matches the XRCE_VERSION_MAJOR. If it does not match,
the creation shall fail and set the returnValue to {STATUS_LAST_OP_CREATE,
STATUS_ERR_INCOMPATIBLE}.
 Check the client_key is authorized to connect to the XRCEAgent. If this check fails the operation shall fail and
set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_DENIED}.
 Check if there is an existing DDSXRCE::ProxyClient object associated with the same ClientKey and if
so compare the session_id of the existing ProxyClient with the one in the object_representation:
o If a ProxyClient exists and has the same session_id then the operation shall not perform any action
and shall set the returnValue to {STATUS_LAST_OP_CREATE,STATUS_OK}.
o If a ProxyClient exist and has a different session_id then the operation shall delete the existing
DDSXRCE::ProxyClient object and shall proceed as if the ProxyClient did not exist.
 Check there are sufficient internal resources to complete the create operation. If there are not, then the operation
shall fail and set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_RESOURCES}.
All communication state between a client and an Agent is managed by the associated ProxyClient. Therefore
deletion of an existing ProxyClient resets any prior communication state between the client and the agent. Any
messages that were cached pending acknowledgments shall be discarded.
The Agent shall create a ProxyClient object and shall:
 Initialize its state to have the specified session_id.
 Initialize the builtin streams with sequence number 0.
 Set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_OK}.
The Agent may use the client’s_timestamp to detect time-synchronization differences between the XRCEClient and the
XRCEAgent. The use of this information is left outside the scope of this specification.
DDS-XRCE, Revised Submission 23
8.6.2.2 Operation delete_client
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
The Agent shall check the ClientKey to locate an existing DDSXRCE:ProxyClient. If the object is not found the
operation shall fail and returnValue shall be set to {STATUS_LAST_OP_DELETE, STATUS_ERR_INVALID}. If the
object is found it shall be delete and returnValue shall be set to {STATUS_LAST_OP_DELETE, STATUS_OK}.
8.6.3 DDSXRCE::ProxyClient
The DDSXRCE::ProxyClient object represents a specific XRCEClient inside a concrete XRCEAgent. The
ProxyClient object is identified by the clientKey.
The logical operations on the ProxyClient are shown in Table 3.
Table 3 DDSXRCE::ProxyClient operations
create ResultStatus
creation_mode CreationMode
objectid_prefix ObjectIdPrefix
object_representation ObjectVariant
update ResultStatus
objectid_prefix ObjectIdPrefix
object_representation ObjectVariant
get_info ResultStatus
out: info ActivityInfoVariant
out: config ObjectVariant
info_mask InfoMask
objectid_prefix ObjectIdPrefix
delete ResultStatus
objectid_prefix ObjectIdPrefix
24 DDS XRCE Revised Submission
8.6.3.1 Operation create
Inputs
 creation_mode (CreationMode) controls the behavior of the operation when there is an existing object that
partially matches the description of the object that the client wants to create.
 objectid_prefix (ObjectIdPrefix) the desired ObjectId for the created object.
 object_representation (ObjectVariant) a representation of the object that the client wants to create.
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation attempts to create a DDSXRCE object according to the specification provided in the
object_representation parameter. The ObjectVariant is a union discriminated by the ObjectKind that is used to
define the kind of DDSXRCE object being created. We will refer to this ObjectKind as the “input_objectkind”.
The object_prefix parameter contains the desired ObjectId for the object.
The combination of the objectid_prefix and the ObjectKind contained in the object_representation discriminator
shall be used to construct the “input” ObjectId. We shall refer to this ObjectId as the “input_objectid”.
The selected member of the ObjectVariant contains the information required to construct an object of
ObjectKind input_objectkind.
The creation_mode affects the behavior of the create operation as specified in Table 4.
DDS-XRCE, Revised Submission 25
Table 4 -- CreationMode influence on create operation
creation
mode
reuse
creation
mode
replace
input
objectid
exists
Result
* * NO Create object according to Table 5.
FALSE FALSE YES No action taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE,
STATUS_ERR_ALREADY_EXISTS }
FALSE TRUE YES Delete existing object as specified by the delete operation.
Create object according to Table 5.
TRUE FALSE YES Check if object_representation matches the existing Object:
If it matches no action is taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE , STATUS_OK_MATCHES }
If it does not match no action is taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE , STATUS_ERR_MISMATCH }
TRUE TRUE YES Check if object_representation matches the existing Object:
If it matches no action is taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE , STATUS_OK_MATCHES }
If it does not match delete existing object as specified by the delete
operation and then create a new object according to Table 5.
All DDS-XRCE object representations that derive from OBJK_CommonString_Representation use a string field
as_string to describe the DDS-XRCE object being created. This version of the speciation supports two formats for the
string:
 Strings that start with the prefix “ref:”
 Strings that start with the prefix “xml:”
26 DDS XRCE Revised Submission
If the string starts with the prefix “ref:” then OBJK_CommonString_Representation references a DDSXRCE
definition that must already be known to the Agent. In this case the agent shall locate that definition and use that to
construct the object. If the definition is not found the create operation shall fail and set returnStatus
{STATUS_LAST_OP_CREATE,STATUS_ERR_DDS_ERROR }
If the string starts with the prefix “xml:” then the Agent shall use that definition to create the DDSXRCE object of the
type selected by the ObjectVariant.
In either situation the creation of the DDSXRCE object may create additional DDSXRCE objects nested within, for
example the description of a DDSXRCE DomainParticipant may contain Topics, Publishers, Subscribers, DataWriters,
DataReaders, etc. In this case the failure to create any nested entity shall be considered a failure to create the contained
entity as well.
Some of the DDSXRCE objects may be defined by this specification as proxies for DDS Entities. In this case the
creation of the DDSXRCE Object will automatically trigger the creation of the proxy DDS Entity. Failure to create a
DDS Entity shall be considered a failure to create the proxy DDSXRCE object as well.
If the creation of the DDSXRCE object fails then there should be no associated DDS-RTPS discovery traffic generated
by the Agent. This means that all DDS entities shall be created disabled, such that the creation does not result on DDS-
RTPS discovery traffic and enabled (if so configured by their QoS) only after it has been determined that the creation has
succeeded.
If the creation succeeds the Agent shall set returnStatus {STATUS_LAST_OP_CREATE, STATUS_OK} .
The creation of DDSXRCE Objects is done in accordance to the object_representation parameter. The specific behavior
depends on the ObjectKind. See Table 5.
DDS-XRCE, Revised Submission 27
Table 5 Behavior of the create operation according to the ObjectKind
ObjectKind Create behavior
OBJK_QOSPROFILE The ObjectVariant is a OBJK_QOSPROFILE_Representation which references or contains
a QosProfile definition.
The agent shall use that definition to create a DDSXRCE QosProfile and an associated the
QoS Profile definitions interpreted in accordance to the representation defined in 8.5.3.1.
OBJK_PARTICIPANT The ObjectVariant is a OBJK_PARTICIPANT_Representation which references or
contains a DomainParticipant definition.
The agent shall use that definition to create a DDSXRCE DomainParticipant and an
associated DDS DomainParticipant with all the contained entities found within the
definition in accordance to the representation defined in 8.5.3.4.
OBJK_TYPE The ObjectVariant is a OBJK_TYPE_Representation which references or contains a Type
definition.
The agent shall use that definition to create a DDSXRCE Type in accordance to the
representation defined in 8.5.3.2.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{ STATUS_LAST_OP_CREATE , STATUS_ ERR_UNKNOWN_REFERENCE }
OBJK_TOPIC The ObjectVariant is a OBJK_TOPIC_Representation which references or contains a Topic
definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE Topic in accordance with the
representation defined in 8.5.3.5. The DDS Topic shall be created using the
DomainParticipant identified by the participant_id.
OBJK_PUBLISHER The ObjectVariant is a OBJK_PUBLISHER_Representation which references or contains a
Publisher definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE Publisher in accordance with the
representation defined in 8.5.3.6. The DDS Publisher shall be created using the
DomainParticipant identified by the participant_id.
OBJK_SUBSCRIBER The ObjectVariant is a OBJK_SUBSCRIBER_Representation which references or contains
a Subscriber definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE Subscriber in accordance with the
representation defined in 8.5.3.7. The DDS Subscriber shall be created using the
DomainParticipant identified by the participant_id.
OBJK_DATAWRITER The ObjectVariant is a OBJK_DW_Representation which references or contains a
DataWriter definition.
28 DDS XRCE Revised Submission
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall locate the DDSXRCE Publisher identified by the publisher_id. If this
object is not found or if it does not belong to the previously-located DomainParticipant the
operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE DataWriter in accordance with the
representation defined in 8.5.3.8. The DDS DataWriter shall be created using the Publisher
identified by the publisher_id.
OBJK_DATEREADER The ObjectVariant is a OBJK_DW_Representation which references or contains a
DataReader definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall locate the DDSXRCE Subscriber identified by the subscriber_id. If this
object is not found or if it does not belong to the previously-located DomainParticipant the
operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE DataReader in accordance with the
representation defined in 8.5.3.9. The DDS DataReader shall be created using the
Subscriber identified by the subscriber_id.
8.6.3.2 Operation update
Inputs
 objectid_prefix (ObjectIdPrefix) the object being updated.
 object_representation (ObjectVariant) of the updated object.
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation attempts to update an existing object in the Agent. If the object exists and the update is successful
STATUS_OK is returned, otherwise a status indicating an error is returned:
 If the object does not already exist STATUS_ERR_UNKNOWN_REFERENCE is returned.
 If the update was unsuccessful due to invalid parameters, STATUS_ERR_INVALID_DATA is returned. If an
update is unsuccessful the referenced object shall returns to its previous configuration.
 If the object cannot be updated due to permission restrictions, STATUS_ERR_DENIED is returned.
8.6.3.3 Operation get_info
Inputs
 objectid_prefix (ObjectIdPrefix) the object queried.
 info_mask (InfoMask) selects the kind of information to retrieve.
DDS-XRCE, Revised Submission 29
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded. The object_id in the returnValue shall
be set to match the object_id input parameter.
 activity (ActivityInfo): Contains the current activity of the specified object.
 config (ObjectVariant): Contains the current configuration of the specified object.
This operation returns the configuration and activity data for an existing object.
 If the object does not already exist STATUS_ERR_UNKNOWN_REFERENCE is returned.
 If the object cannot be accessed due to permission restrictions STATUS_ERR_DENIED is returned.
8.6.3.4 Operation delete
Inputs
 objectid_prefix (ObjectIdPrefix) the object being deleted.
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation deletes an existing object. If the object is successfully deleted STATUS_OK is returned.
 If the object does not exist STATUS_ERR_UNKNOWN_REFERENCE is returned.
 If the object cannot be deleted due to permission restrictions, STATUS_ERR_DENIED is returned.
8.6.4 DDSXRCE::DataWriter
The operations are defined in Table 6.
Table 6 DDSXRCE::DataWriter operations
write ResultStatus
object_id ObjectId
data DataRepresentation
8.6.4.1 Operation write
Inputs
 object_id (ObjectId) the object that shall publish the data.
 data (SampleDataRepresentation) data to be written.
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation writes one or more samples using the DDSXRCE::DataWriter identified by the object_id.
 If the data is successfully written STATUS_OK shall be returned.
 If the DDSXRCE::DataWriter object identified by the object_id does not exist, the ResultStatus
STATUS_ERR_UNKNOWN_REFERENCE shall be returned.
30 DDS XRCE Revised Submission
 If the client is not allowed to write data using the referenced object_id due to permission restrictions, the
ResultStatus STATUS_ERR_DENIED shall be returned.
 If the data could not be written successfully due, for example invalid data format, the ResultStatus
STATUS_ERR_INVALID_DATA shall be returned.
8.6.5 DDSXRCE::DataReader
The operations are defined in Table 7 .
Table 7 DDSXRCE::DataReader operations
read ResultStatus
out: read_data DataRepresentation
object_id ObjectId
read_spec ReadSpecification
8.6.5.1 Operation read
Inputs
 object_id (ObjectId) the object to read data from.
 read_spec (ReadSpecification) Read specification. The operation will only return data that matches the
constraint.
Outputs
 returnValue (ResultStatus): Indicates whether the operation succeeded.
 data_read (SampleDataRepresentation): Data matching the read_spec or nil if there was an error.
This operation reads one or more samples from the DDSXRCE::DataReader identified by the object_id. If the data is
successfully read STATUS_OK shall be returned.
 If the object does not exist STATUS_ERR_UNKNOWN_REFERENCE shall be returned.
 If the client is not allowed to read data using the referenced object_id due to permission restrictions,
STATUS_ERR_DENIED shall be returned.
The read_spec parameter controls the data returned by this operation. The fields of this structure shall be interpreted as
described in Table 8.
Table 8 Interpretation of the ReadSpecification
field type interpretation
data_format DataFormat Selects one the data formats. See 8.5.1
max_samples unsigned
short
Maximum number of samples to return as a result of the
read.
max_elapsed_time long Maximum amount of time in seconds that may be spent
delivering the samples from the read operation.
DDS-XRCE, Revised Submission 31
max_rate long Maximum rate in bytes per second at which the data may
be returned to the read operation.
content_filter_expression string A content filter expression selecting which data to read.
The syntax shall be as specified in Annex B (Syntax for
Queries and Filters) of the DDS specification [DDS].
32 DDS XRCE Revised Submission
9 The DDS-XRCE Protocol
9.1 General
The XRCEAgent implements the operations specified in the DDS-XRCE Object Model as a messaging protocol between
the XRCEClient and XRCEAgent. The DDS-XRCE protocol is designed specifically to address the limited CPU, power
and network bandwidth found in many types of low-powered devices and enable the device to be discoverable in the
larger DDS network. Specifically, it is designed to meet the unique challenges posed by these types of devices and the
main features include:
 Operate over networks with bandwidth limited to 40-100Kbps.
 Work with devices that may be active only every few minutes, days, months or even years.
 Programming API independence, supporting devices that are programmed in a highly specialized language or
framework.
 Minimal discovery protocol.
 A message protocol that can send updates to multiple DDS Topics efficiently.
 Supports secure communication at the transport level.
 Full read/write access to any data in the DDS Global Data Space (subject to access control limits).
 A full implementation requiring less than 100KB of code.
In contrasts to applications that use the DDS API directly, DDX-XRCE clients:
 Do not have a standard API, so they are not portable across vendor implementations.
 Cannot operate without infrastructure support. They need a DDS-XRCE Agent to be reachable to them.
 Cannot communicate directly peer-to-peer. All communications are brokered (relayed) by one or more DDS-
XRCE Agents.
9.2 The DDS-XRCE Protocol Transport Model
DDS-XRCE is not limited to a particular transport. However, as a minimum it is expected that the transport support the
following functionality:
(1) It can deliver messages of at least 64 bytes.
(2) It handles the integrity of messages dropping any ones that are corrupted.
(3) It provides the size of the received message as well as the source address.
(4) It supports bi-directional communication.
(5) It provides transport-level security. Specifically the means for Client to authenticate the Agent and for secure
(encrypted and authenticated) message exchange.
The following functionality is explicitly not required from the transport:
(1) It does not need to provide reliability. Messages may be dropped.
(2) It does not need to provide ordering. Messages may arrive out of order.
(3) It does not need to provide notification of dropped messages.
9.3 Overview
XRCEClients and XRCEAgents exchange messages to execute operations and return results. The DDS-XRCE Protocol
defines a client, agent, session, and message. A client communicates with an agent using the DDS-XRCE protocol,
exchanging messages on a stream belonging to a session.
9.3.1 Message
A message is the unit of information sent via the transport and is a structured sequence of bytes sent on a DDS-XRCE
transport. A message has a sequence number that is used for ordering of messages, or to identify messages that have been
dropped by the transport.
DDS-XRCE, Revised Submission 33
The underlying XRCE Transport shall transfer messages as a unit. A single XRCE Transport may transport one or more
XRCE messages streams.
9.3.2 Session
A session defines a bi-directional connection between a client and an agent that has been established with a handshake.
The session is needed to exchange messages with the XRCEAgent. An XRCEClient may send messages over multiple
sessions, for example if it communicates with multiple XRCEAgents.
A session can contain, independent reliable and best-effort message streams.
9.3.3 Stream
A stream represents an independent ordered flow of messages within a session. Messages are ordered within a stream by
means of a sequence number. The sequence numbers used by different streams are independent from each other.
Streams can be reliable or best efforts. Each stream uses a constant endianess to encode the data in the
message/submessage headers and payload.
9.3.4 Client
A XRCEClient initiates the establishment of a session with an XRCEAgent. A XRCEClient may send and receive
messages to the agent on streams belonging to an established session.
9.3.5 Agent
An XRCEAgent listens to and accepts requests to establish sessions from XRCEClients. An XRCEAgent may send and
receive messages to a XRCEClient on streams belonging to an established session.
9.4 Message Structure
9.4.1 General
A message is composed of a message header followed by one or more Submessages and is transferred as a unit by the
underlying XRCE Transport.
Figure 6 — Message structure
9.4.2 Header Structure
The header is structured as follows:
34 DDS XRCE Revised Submission
0 8 16 24 31
+----------------+--------+-------+----------------+----------------+
| sessionId | streamId | sequenceNr |
+----------------+----------------+----------------+----------------+
| clientKey (if sessionId >= 128) |
+----------------+--------+-------+----------------+----------------+
9.4.2.1 Sessions and the sessionId
A session is established between the XRCEClient and XRCEAgent to establish an initial context for the
communications. This includes the exchange of protocol versions, vendor identification, and other information needed to
correctly process messages.
A sessionId is scoped by the clientKey and is unique to an XRCEAgent for a given XRCEClient. Its value also
determines whether the Header includes a clientKey or not.
 If the sessionId is between 0 and 127, both included, then the Header shall include the clientKey and the
sessionId is scoped by the clientKey.
 If the sessionId is between 128 and 255, both included, then the Header shall not include the clientKey and the
sessionId is scoped by the source address of the message.
If the clientKey does not appear explicitly in the message header, the XRCEAgent must be able to locate it from the
source address of the message (see clause 9.2 and 9.4.2.4).
Three values of the sessionId are reserved:
 The value 0 used to indicate the lack of a session within a Header containing a clientKey. This referred to as
SESSION_ID_NONE_WITH_CLIENT_KEY.
 The value 128 (0x80) used to indicate the lack of a session within a Header that does not contain a clientKey.
This referred to as SESSION_ID_NONE_WITHOUT_CLIENT_KEY.
9.4.2.2 Streams and the streamId
A stream represents an independent flow of information between a XRCEClient and a XRCEAgent. Each message
belongs to a single stream. Messages belonging to the same stream must be delivered in the order they are sent.
Messages belonging to different streams are ordered relative to each other.
Streams are scoped by the session they belong to.
The streamId with value 0 is referred as STREAMID_NONE. This stream is used for messages exclusively containing
sub-messages that do not belong to any stream, such as HEARTBEAT and ACKNAK sub-messages. This messages still
contain a sequenceNr that can be ignored. Implementations may take advantage of the sequenceNr to discard duplicate
messages arriving within a short time window.
The streams with streamId between 1 and 127 (both included) are best-effort streams. The stream with streamId
between 128 and 255 are reliable streams. In other words if the streamId is not STREAMID_NONE, then the leading bit
of the streamId can be interpreted as a flag that indicates the reliability of the stream.
There are two built-in streams that are created whenever a session is created:
 A built-in best-effort stream identified by a streamId with value 1. This is referred as
STREAMID_BUILTIN_BEST_EFFORTS.
 A built-in reliable stream identified by a streamId with value 128. This is referred as
STREAMID_BUILTIN_RELIABLE.
DDS-XRCE, Revised Submission 35
9.4.2.3 sequenceNr
The sequenceNr is used to order messages within a stream and it is scoped by the stream. Messages belonging to
different streams are unordered relative to each other:
 For the stream with streamId STREAMID_NONE value of the sequenceNr does not impose any order,
however it still may be used to discard duplicate messages.
 For the stream with streamId different from STREAMID_NONE, the sequenceNr imposes an order. Messages
within a stream shall not be delivered out of order. In addition duplicate messages shall also be discarded.
Addition and comparison of sequence numbers shall use Serial Number Arithmetic as defined by [IETF RFC-1982] with
SERIAL_BITS set to 16. This implies that the maximum number of outstanding messages for a specific client session
stream is limited to 2^15, that is 32768.
The sequenceNr shall be encoded using little endian format.
9.4.2.4 clientKey
The clientKey uniquely identifies and authenticates an XRCEClient to the XRCEAgent.
The clientKey shall be present on the Header if the sessionId is between 0 and 127. See clause 9.4.2.1:
 If the clientKey is present, it shall contain the ClientKey associated with the XRCEClient.
 If the clientKey is not present, the XRCEAgent shall be able to derive the ClientKey associated with the
XRCEClient from the source address of the message (see clause 9.2). This means that the ClientKey has
either been pre-configured on the XRCEAgent for that particular source address, or else it has been exchanged
as part of the session establishment, see clause 8.6.2.1.
Any exchange if the clientKey is protected by the security mechanisms provided by the XRCE transport. These security
mechanisms are transport specific and may involve a pairing of each device with the agent or some initial handshake
used to establish a secure transport connection. The specific transport security mechanisms are outside the scope of this
specification.
9.4.3 Submessage Structure
Following the message header there shall be one or more Submessages. A Submessage shall be composed of a
submessage header and a payload.
0 4 8 16 24 31
+-------+-------+----------------+----------------+----------------+
| submessageHeader (4 Bytes) |
+---------------+----------------+----------------+----------------+
~ payload (up to to 32KB) ~
+---------------+----------------+----------------+----------------+
The ability to place multiple of Submessages within a single message reduces bandwidth by enabling multiple resources
to be operated on with a single message.
Submessages shall start at an offset that is a multiple of 4 relative to the beginning of the Message. This means that
additional padding may be added between the end of a submessage and the beginning of the next submessage.
9.4.4 Submessage Header
Every Submessage shall start with a Submessage header. The Submessage Header shall be structured as follows:
36 DDS XRCE Revised Submission
0 4 8 16 24 31
+-------+-------+----------------+----------------+----------------+
| submessageId | flags | submessageLength |
+-------+-------+----------------+----------------+----------------+
9.4.4.1 submessageId
The submessageId identifies the kind of Submessage. The kinds of sub-messages are defined in 9.4.5.
9.4.4.2 flags
The flags field contains information about the content of the Submessage.
Bit 0, the ‘Endianness’ bit, indicates the endianness used to encode the submessage header and payload. If the Endianess
bit is set to 0 the encoding shall be big endian and otherwise little endian.
The flags field for all submessage kinds shall have the Endianness bit. Specific submessage kinds may define additional
flag bits.
9.4.4.3 submessageLength
The submessageLength indicates the length of the Submessage (excluding the Submessage header).
The submessageLength shall be encoded using little endian format, independent of value of the flags.
9.4.4.4 payload
The payload contains information specific to the submessage whose format depends on the kind of submessage
identified by the submessageId.
The definition of the payload shall use the data types defined in clause 8.5. See clause 9.4.5 and its subclauses.
9.4.5 Submessages
DDS-XRCE defines the 13 kinds of Submessages shown in the figure below:
Figure 7 — DDS-XRCE submessages
classSubmessages
DDSXRCE::Submessage
DDSXRCE::
Submessage::
CREATE
DDSXRCE::
Submessage::
GET_INFO
DDSXRCE::
Submessage::
DELETE
DDSXRCE::
Submessage::INFO
DDSXRCE::
Submessage::
STATUS
DDSXRCE::
Submessage::
ACKNACK
DDSXRCE::
Submessage::
HEARTBEAT
DDSXRCE::Submessage::
SubmessageHeader
- submessageId: byte
- flags: byte
- submessageLength: short
DDSXRCE::
Submessage::
DATA
DDSXRCE::
Submessage::
FRAGMENT
DDSXRCE::
Submessage::
READ_DATA
DDSXRCE::
Submessage::
WRITE_DATA
DDSXRCE::
Submessage::
RESET
DDSXRCE::
Submessage::
CREATE_CLIENT
1
DDS-XRCE, Revised Submission 37
Each submessage is identified by the submessageId. Some submessages may only be sent in one direction (e.g. only
XRCEClient to XRCEAgent or only XRCEAgent to XRCEClient) whereas others are bi-directional.
Table 9 -- SubmesageId values
SubmessageId Value Note
CREATE_CLIENT 0 Client to Agent.
CREATE 1 Client to Agent.
GET_INFO 2 Client to Agent.
DELETE 3 Client to Agent.
STATUS 4 Agent to Client; typically in response to CREATE, UPDATE or DELETE. Contains
information about the status of an Xrce object.
INFO 5 Agent to Client. Typically sent in response to a GET_INFO. Contains detailed
information about an Xrce: Object.
WRITE_DATA 6 Client to Agent. Used to write data using a Xrce::DataWriter.
READ_DATA 7 Client to Agent. Used to read data using a Xrce::DataReader.
DATA 8 Agent to Client in response to a READ_DATA provides data received by a
Xrce::DataReader.
ACKNACK 9 Bi-directional.
HEARTBEAT 10 Bi-directional.
RESET 11 Bi-directional.
FRAGMENT 12 Bi-directional
FRAGMENT_END 13 Bi-directional
9.4.5.1 CREATE_CLIENT
The CREATE_CLIENT submessage is sent by the XRCEClient to create a DDSXRCE::ProxyClient.
Reception of this sub-message shall result in the XRCEAgent calling the create_client operation on the
DDSXRCE::Root object, see 8.6.2.1. The parameters to this operation are obtained from the sub-message header flags
and payload.
The XRCEAgent shall send a STATUS message in response to this message, see 9.4.5.4.
9.4.5.1.1 payload
The payload shall contain the XCDR representation of the CREATE_Payload object below:
38 DDS XRCE Revised Submission
@extensibility(FINAL)
struct CREATE_Payload : BaseObjectRequest {
OBJK_CLIENT_Representation object_representation;
};
9.4.5.2 CREATE
The CREATE submessage is sent by the XRCEClient to create a DDSXRCE Object. An example is creating an
DDSXRCE:DataWriter with a QoS profile.
Reception of this sub-message shall result in the XRCEAgent calling the create operation on the
DDSXRCE::ProxyClient object, see 8.6.3.1. The parameters to this operation are obtained from the sub-message header
flags and payload.
The XRCEAgent shall send a STATUS sub-message in response to this message, see 9.4.5.4.
9.4.5.2.1 flags
The create submessage defines two additional flag bits:
Bit 1, the ‘Reuse’ bit, encodes the value of the CreationMode reuse field.
Bit 2, the ‘Replace’ bit, encodes the value of the CreationMode replace field.
These flag bits modify the behavior of the Agent receiving the CREATE message. See clause 8.6.3.1.
9.4.5.2.2 payload
The payload shall contain the XCDR representation of the CREATE_Payload object below.
@extensibility(FINAL)
struct CREATE_Payload : BaseObjectRequest {
ObjectVariant object_representation;
};
9.4.5.3 DELETE
This submessage is sent by the XRCEClient to delete either a DDSXRCE Object. An example is deleting a
DDSXRCE:ProxyClient or a DDSXRCE:DataWriter.
Reception of this sub-message shall result in the XRCEAgent calling either the delete_client operation on the
DDSXRCE::Root (see 8.6.2.2), or else the delete operation on the DDSXRCE::ProxyClient object (see 8.6.3.4).
If the ObjectVariant contained within the payload has ObjectKind set to OBJK_CLIENT, then the XRCEAgent
shall call the delete_client operation. Otherwise it shall call the delete operation.
The parameters to the delete_client or the delete operation are obtained from the payload.
The XRCEAgent shall send a STATUS sub-message in response to this message, see 9.4.5.4.
9.4.5.3.1 payload
The payload shall contain the XCDR representation of the DELETE_RESOURCE_Payload object below.
@extensibility(FINAL)
struct DELETE_RESOURCE_Payload : BaseObjectRequest {
DDS-XRCE, Revised Submission 39
};
9.4.5.4 STATUS
The STATUS submessage is sent by the XRCEAgent in response to a CREATE_CLIENT, CREATE or DELETE
submessage.
The submessage contains the returnStatus to the operation that was triggered by the corresponding request message. For
example if the request message was a CREATE_CLIENT, the STATUS payload shall contain the returnStatus to the
create_client operation.
9.4.5.4.1 payload
The payload shall contain the XCDR representation of the RESOURCE_STATUS_Payload object below.
The request_id and object_id within the RESOURCE_STATUS_Payload shall match the identically named fields in the
corresponding request message.
@extensibility(FINAL)
struct RESOURCE_STATUS_Payload : BaseObjectReply {
};
9.4.5.5 GET_INFO
This submessage is sent by the XRCEClient to get information about a resource.
Reception of this sub-message shall result in the XRCEAgent calling the get_info operation on the
DDSXRCE::ProxyClient object (see 8.6.3.3). The parameters to this operation are obtained from the payload.
The XRCEAgent shall send a INFO sub-message in response to this message, see 9.4.5.4.
9.4.5.5.1 payload
The payload shall contain the XCDR representation of the GET_INFO_Payload object below.
@extensibility(FINAL)
struct GET_INFO_Payload : BaseObjectRequest {
InfoMask info_mask;
};
9.4.5.6 INFO
This submessage is sent by the XRCEAgent to the XRCEClient in response to a GET_INFO message.
The submessage contains the returnStatus and output parameters of the get_info operation that was triggered by the
corresponding request message.
9.4.5.6.1 payload
The payload shall contain the XCDR representation of the INFO_Payload object below.
The request_id and object_id within the RESOURCE_STATUS_Payload shall match the identically named fields in the
corresponding GET_INFO message.
@extensibility(FINAL)
struct INFO_Payload : BaseObjectReply {
40 DDS XRCE Revised Submission
ActivityInfo activity;
ObjectVariant config;
};
9.4.5.7 READ_DATA
This submessage is used by the XRCEClient to initiate a reception (read) of cached data from a DDSXRCE::DataReader
object within the XRCEAgent.
Reception of this sub-message shall result in the XRCEAgent calling the read operation on a DDSXRCE::DataReader
object (see 8.6.5.1). The parameters to this operation are obtained from the payload.
The XRCEAgent shall one or more DATA sub-messages in response to this message, see 9.4.5.8.
The related Xrce::DataReader is identified by the object_id field in the payload.
After reception of this message the XRCEAgent will “stream” the data to the client until either the “end criteria”
specified in the payload read_specification is attained or else an explicit CANCEL_READ message is received from the
client.
The READ_DATA operation allows a XRCEClient to control when data can be sent by the XRCEAgent so that the
Agent does not unnecessarily wake up the client during its sleep cycle.
9.4.5.7.1 payload
The payload shall contain the XCDR representation of the READ_DATA_Payload object below.
@extensibility(FINAL)
struct READ_DATA_Payload : BaseObjectRequest {
ReadSpecification read_specification;
};
9.4.5.8 DATA
This submessage is sent by the XRCEAgent to the XRCEClient in response to a READ_DATA message.
The submessage contains the returnStatus and output parameters of the read operation on the DDSXRCE::DataReader
that was triggered by the READ_DATA message.
A single READ_DATA message can result on multiple, possible an open-ended sequence, of DATA submessages sent
as a response by the XRCEAgent. The DATA messages will continue to be sent until the terminating conditions on the
CONFIG_READ operation are reached, or until it is explicitly cancelled.
The request_id and object_id within the DATA payload shall match the identically named fields in the corresponding
READ_DATA message.
9.4.5.8.1 payload
The format the payload depends on the DataFormat of the ReadSpecification for the READ_DATA request. There are
four possible formats:
 DATA_Payload_Data. This format shall be used when the corresponding ReadSpecification had DataFormat
set to the value FORMAT_DATA.
 DATA_Payload_Sample This format shall be used when the corresponding ReadSpecification had DataFormat
set to the value FORMAT_SAMPLE.
DDS-XRCE, Revised Submission 41
 DATA_Payload_DataSeq. This format shall be used when the corresponding ReadSpecification had
DataFormat set to the value FORMAT_DATA_SEQ.
 DATA_Payload_SampleSeq. This format shall be used when the corresponding ReadSpecification had
DataFormat set to the value FORMAT_SAMPLE_SEQ.
 DATA_Payload_PackedSamples. This format shall be used when the corresponding ReadSpecification had
DataFormat set to the value FORMAT_PACKED_SAMPLES.

For each of these formats the payload shall contain the XCDR representation of the equally named structure defined in
the IDL below.
@extensibility(FINAL)
struct DATA_Payload_Data : BaseObjectReply {
SampleData data;
};
@extensibility(FINAL)
struct DATA_Payload_Sample : BaseObjectReply {
Sample sample;
@extensibility(FINAL)
struct DATA_Payload_DataSeq : BaseObjectReply {
sequence<SampleData> data_seq;
};
@extensibility(FINAL)
struct DATA_Payload_SampleSeq : BaseObjectReply {
sequence<Sample> sample_seq;
};
@extensibility(FINAL)
struct DATA_Payload_PackedSamples : BaseObjectReply {
PackedSamples packed_samples;
};
42 DDS XRCE Revised Submission
All the DATA payload representation derive from BaseObjectReply. The XRCEClient may use the request_id and
object_id of in the BaseObjectReply to locate the corresponding READ_DATA message and determine the DataFormat
of the ReadSpecification specified in the request.
As specified in
9.4.5.9 WRITE_DATA
This submessage is used by the XRCEClient to write data using a DDSXRCE::DataWriter inside the XRCEAgent.
Reception of this sub-message shall result in the XRCEAgent calling the write operation on a DDSXRCE::DataWriter
object (see 8.6.4.1). The parameters to this operation are obtained from the payload.
The related DDSXRCE::DataWriter is identified by the object_id field in the payload.
9.4.5.9.1 payload
The payload shall contain the XCDR representation of the WRITE_DATA_Payload object below.
struct WRITE_DATA_Payload {
DataRepresentation data_to_write;
};
9.4.5.10 ACKNACK
This Submessage is used to enable a transport independent reliability protocol to be implemented.
This specification does not limit a session to use a particular type of transport. If a session transport is able to reliably
send messages in case of disconnection or a wakeup/sleep cycle then these messages may not be required.
If these Submessages are used, this specification does not dictate how reliable a session shall be. However, in general it
is expected that it is the Client that initiates any synchronization. This is because a Client may not be continually
available as it goes on sleep cycles.
The ACKNACK message is directed to the same session and stream indicated in the Message header. For this reason it
does not have a objectId.
9.4.5.10.1 payload
The ACKNACK submessage payload contains a information about the state of the session and stream.
struct ACKNACK_Payload {
short firstUnackedSeqNr;
octet[2] nackBitmap;
};
The firstUnackedSeqNr indicates that all sequence numbers up to but not including it has been received.
The nackBitmap indicates missing sequence numbers, starting from firstUnackedSequenceNr.
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments

More Related Content

What's hot

DDS Security Specification (Adopted Beta1 June 2014)
DDS Security Specification (Adopted Beta1 June 2014)DDS Security Specification (Adopted Beta1 June 2014)
DDS Security Specification (Adopted Beta1 June 2014)
Gerardo Pardo-Castellote
 
DDS Security Specification version 1.0
DDS Security Specification version 1.0DDS Security Specification version 1.0
DDS Security Specification version 1.0
Gerardo Pardo-Castellote
 
RPC over DDS Beta 1
RPC over DDS Beta 1RPC over DDS Beta 1
RPC over DDS Beta 1
Sumant Tambe
 
08-01-09
08-01-0908-01-09
08-01-09
twells555
 
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT
 
Robotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRobotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) Specification
Rick Warren
 
Uml2 super.book.040324
 Uml2 super.book.040324 Uml2 super.book.040324
Uml2 super.book.040324
Sidi yazid
 
What's new 2015 hf1
What's new   2015 hf1What's new   2015 hf1
What's new 2015 hf1
brujula27
 
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Remedy IT
 
Pc 901 performance_tuningguide_en
Pc 901 performance_tuningguide_enPc 901 performance_tuningguide_en
Pc 901 performance_tuningguide_en
Hassan Talbi
 
Cad worx plant user guide
Cad worx plant user guideCad worx plant user guide
Cad worx plant user guide
anrome92
 
Multisim User Manual
Multisim User ManualMultisim User Manual
Multisim User Manual
guestfc76b6
 
Ftk ug
Ftk ugFtk ug
Ftk ug
Dinesh Gaur
 
Jaxrs 1.0-final-spec
Jaxrs 1.0-final-specJaxrs 1.0-final-spec
Jaxrs 1.0-final-spec
Aravindharamanan S
 
PCF 2.3: A First Look
PCF 2.3: A First LookPCF 2.3: A First Look
PCF 2.3: A First Look
VMware Tanzu
 

What's hot (15)

DDS Security Specification (Adopted Beta1 June 2014)
DDS Security Specification (Adopted Beta1 June 2014)DDS Security Specification (Adopted Beta1 June 2014)
DDS Security Specification (Adopted Beta1 June 2014)
 
DDS Security Specification version 1.0
DDS Security Specification version 1.0DDS Security Specification version 1.0
DDS Security Specification version 1.0
 
RPC over DDS Beta 1
RPC over DDS Beta 1RPC over DDS Beta 1
RPC over DDS Beta 1
 
08-01-09
08-01-0908-01-09
08-01-09
 
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
 
Robotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRobotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) Specification
 
Uml2 super.book.040324
 Uml2 super.book.040324 Uml2 super.book.040324
Uml2 super.book.040324
 
What's new 2015 hf1
What's new   2015 hf1What's new   2015 hf1
What's new 2015 hf1
 
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
 
Pc 901 performance_tuningguide_en
Pc 901 performance_tuningguide_enPc 901 performance_tuningguide_en
Pc 901 performance_tuningguide_en
 
Cad worx plant user guide
Cad worx plant user guideCad worx plant user guide
Cad worx plant user guide
 
Multisim User Manual
Multisim User ManualMultisim User Manual
Multisim User Manual
 
Ftk ug
Ftk ugFtk ug
Ftk ug
 
Jaxrs 1.0-final-spec
Jaxrs 1.0-final-specJaxrs 1.0-final-spec
Jaxrs 1.0-final-spec
 
PCF 2.3: A First Look
PCF 2.3: A First LookPCF 2.3: A First Look
PCF 2.3: A First Look
 

Similar to DDS for eXtremely Resource Constrained Environments

DDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 BetaDDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 Beta
Gerardo Pardo-Castellote
 
OPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 BetaOPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 Beta
Gerardo Pardo-Castellote
 
Bpmn
BpmnBpmn
Bpmn
minasmir
 
Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1
Rick Warren
 
Business Process Model and Notation,BPMN2.0(Beta1)
Business Process Model and Notation,BPMN2.0(Beta1)Business Process Model and Notation,BPMN2.0(Beta1)
Business Process Model and Notation,BPMN2.0(Beta1)
BPC流程社区
 
02-11-05
02-11-0502-11-05
02-11-05
webuploader
 
6757i
6757i6757i
Micrso Strategy Advanced Guide
Micrso Strategy Advanced GuideMicrso Strategy Advanced Guide
Micrso Strategy Advanced Guide
divjeev
 
Pm api ref
Pm api refPm api ref
Pm api ref
kristtyna Robayo
 
Websvcs 1 0 Fr Spec
Websvcs 1 0 Fr SpecWebsvcs 1 0 Fr Spec
Websvcs 1 0 Fr Spec
guest021f78
 
U06 stn mst-pm
U06 stn mst-pmU06 stn mst-pm
U06 stn mst-pm
Le Thi
 
U05 sss sccp-pm
U05 sss sccp-pmU05 sss sccp-pm
U05 sss sccp-pm
Le Thi
 
Multisim Instruction Manual - Electric circuits
Multisim Instruction Manual - Electric circuitsMultisim Instruction Manual - Electric circuits
Multisim Instruction Manual - Electric circuits
vimala elumalai
 
Core Setup Guide_7S_j.pdf
Core Setup Guide_7S_j.pdfCore Setup Guide_7S_j.pdf
Core Setup Guide_7S_j.pdf
HarishKumar325035
 
Pm ref man
Pm ref manPm ref man
Pm ref man
Aslam Yaseen
 
premavera p6
premavera p6 premavera p6
premavera p6
Anis Souissi
 
Primavera
PrimaveraPrimavera
Primavera
hlksd
 
Primavera manual
Primavera manual Primavera manual
Ic 3116 w-user_manual_v2.0_english_en
Ic 3116 w-user_manual_v2.0_english_enIc 3116 w-user_manual_v2.0_english_en
Ic 3116 w-user_manual_v2.0_english_en
Tableta Unica
 
Logical systems-configuration-guide
Logical systems-configuration-guideLogical systems-configuration-guide
Logical systems-configuration-guide
Raja Azeem
 

Similar to DDS for eXtremely Resource Constrained Environments (20)

DDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 BetaDDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 Beta
 
OPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 BetaOPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 Beta
 
Bpmn
BpmnBpmn
Bpmn
 
Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1
 
Business Process Model and Notation,BPMN2.0(Beta1)
Business Process Model and Notation,BPMN2.0(Beta1)Business Process Model and Notation,BPMN2.0(Beta1)
Business Process Model and Notation,BPMN2.0(Beta1)
 
02-11-05
02-11-0502-11-05
02-11-05
 
6757i
6757i6757i
6757i
 
Micrso Strategy Advanced Guide
Micrso Strategy Advanced GuideMicrso Strategy Advanced Guide
Micrso Strategy Advanced Guide
 
Pm api ref
Pm api refPm api ref
Pm api ref
 
Websvcs 1 0 Fr Spec
Websvcs 1 0 Fr SpecWebsvcs 1 0 Fr Spec
Websvcs 1 0 Fr Spec
 
U06 stn mst-pm
U06 stn mst-pmU06 stn mst-pm
U06 stn mst-pm
 
U05 sss sccp-pm
U05 sss sccp-pmU05 sss sccp-pm
U05 sss sccp-pm
 
Multisim Instruction Manual - Electric circuits
Multisim Instruction Manual - Electric circuitsMultisim Instruction Manual - Electric circuits
Multisim Instruction Manual - Electric circuits
 
Core Setup Guide_7S_j.pdf
Core Setup Guide_7S_j.pdfCore Setup Guide_7S_j.pdf
Core Setup Guide_7S_j.pdf
 
Pm ref man
Pm ref manPm ref man
Pm ref man
 
premavera p6
premavera p6 premavera p6
premavera p6
 
Primavera
PrimaveraPrimavera
Primavera
 
Primavera manual
Primavera manual Primavera manual
Primavera manual
 
Ic 3116 w-user_manual_v2.0_english_en
Ic 3116 w-user_manual_v2.0_english_enIc 3116 w-user_manual_v2.0_english_en
Ic 3116 w-user_manual_v2.0_english_en
 
Logical systems-configuration-guide
Logical systems-configuration-guideLogical systems-configuration-guide
Logical systems-configuration-guide
 

More from Gerardo Pardo-Castellote

DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
DDS, the US Navy, and the Need for Distributed Software
DDS, the US Navy,  and the Need for Distributed SoftwareDDS, the US Navy,  and the Need for Distributed Software
DDS, the US Navy, and the Need for Distributed Software
Gerardo Pardo-Castellote
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
Gerardo Pardo-Castellote
 
DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)
Gerardo Pardo-Castellote
 
A Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial AutomationA Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial Automation
Gerardo Pardo-Castellote
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
Gerardo Pardo-Castellote
 
DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018
Gerardo Pardo-Castellote
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Gerardo Pardo-Castellote
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
Gerardo Pardo-Castellote
 
DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017
Gerardo Pardo-Castellote
 
DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017
Gerardo Pardo-Castellote
 
DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)
Gerardo Pardo-Castellote
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
Gerardo Pardo-Castellote
 
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
Gerardo Pardo-Castellote
 
Industrial IOT Data Connectivity Standard
Industrial IOT Data Connectivity StandardIndustrial IOT Data Connectivity Standard
Industrial IOT Data Connectivity Standard
Gerardo Pardo-Castellote
 
Using DDS to Secure the Industrial Internet of Things (IIoT)
Using DDS to Secure the Industrial Internet of Things (IIoT)Using DDS to Secure the Industrial Internet of Things (IIoT)
Using DDS to Secure the Industrial Internet of Things (IIoT)
Gerardo Pardo-Castellote
 
The Platform for the Industrial Internet of Things (IIoT)
The Platform for the Industrial Internet of Things (IIoT)The Platform for the Industrial Internet of Things (IIoT)
The Platform for the Industrial Internet of Things (IIoT)
Gerardo Pardo-Castellote
 
Web Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS ConferenceWeb Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS Conference
Gerardo Pardo-Castellote
 
Remote Procedure Call over DDS - London Connext DDS Conference
Remote Procedure Call over DDS - London Connext DDS Conference Remote Procedure Call over DDS - London Connext DDS Conference
Remote Procedure Call over DDS - London Connext DDS Conference
Gerardo Pardo-Castellote
 
DDS Security for the Industrial Internet - London Connext DDS Conference
DDS Security for the Industrial Internet - London Connext DDS ConferenceDDS Security for the Industrial Internet - London Connext DDS Conference
DDS Security for the Industrial Internet - London Connext DDS Conference
Gerardo Pardo-Castellote
 

More from Gerardo Pardo-Castellote (20)

DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
DDS, the US Navy, and the Need for Distributed Software
DDS, the US Navy,  and the Need for Distributed SoftwareDDS, the US Navy,  and the Need for Distributed Software
DDS, the US Navy, and the Need for Distributed Software
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
 
DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)
 
A Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial AutomationA Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial Automation
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
 
DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
 
DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017
 
DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017
 
DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
 
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
 
Industrial IOT Data Connectivity Standard
Industrial IOT Data Connectivity StandardIndustrial IOT Data Connectivity Standard
Industrial IOT Data Connectivity Standard
 
Using DDS to Secure the Industrial Internet of Things (IIoT)
Using DDS to Secure the Industrial Internet of Things (IIoT)Using DDS to Secure the Industrial Internet of Things (IIoT)
Using DDS to Secure the Industrial Internet of Things (IIoT)
 
The Platform for the Industrial Internet of Things (IIoT)
The Platform for the Industrial Internet of Things (IIoT)The Platform for the Industrial Internet of Things (IIoT)
The Platform for the Industrial Internet of Things (IIoT)
 
Web Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS ConferenceWeb Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS Conference
 
Remote Procedure Call over DDS - London Connext DDS Conference
Remote Procedure Call over DDS - London Connext DDS Conference Remote Procedure Call over DDS - London Connext DDS Conference
Remote Procedure Call over DDS - London Connext DDS Conference
 
DDS Security for the Industrial Internet - London Connext DDS Conference
DDS Security for the Industrial Internet - London Connext DDS ConferenceDDS Security for the Industrial Internet - London Connext DDS Conference
DDS Security for the Industrial Internet - London Connext DDS Conference
 

Recently uploaded

Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 

Recently uploaded (20)

Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 

DDS for eXtremely Resource Constrained Environments

  • 1. Date: September 2017 DDS for eXtremely Resource Constrained Environments Revised Submission Real-Time Innovations, Inc. Twin Oaks Computing, Inc. eProsima, Inc. __________________________________________________ OMG Document Number: mars/2017-09-18 Associated Files (Normative): dds_xrce_types.idl (mars/2017-09-20) dds_xrce_model.xmi (mars/2017-09-19) _________________________________________________ IPR mode: Non-Assert __________________________________________________ Submission Contacts: Gerardo Pardo-Castellote, Ph.D. (lead) CTO, Real-Time Innovations, Inc. gerardo@rti.com Clark Tucker, CEO, TwinOaks Computing, Inc. ctucker@prismtech.com Jaime Martin-Losa CTO, eProsima. JaimeMartin@eprosima.com
  • 2. Copyright © 2017, Real-Time Innovations, Inc. Copyright © 2017, Twin Oaks Computing, Inc. Copyright © 2017, eProsima, Inc. Copyright © 2017, Object Management Group, Inc. USE OF SPECIFICATION - TERMS, CONDITIONS & NOTICES The material in this document details an Object Management Group specification in accordance with the terms, conditions and notices set forth below. This document does not represent a commitment to implement any portion of this specification in any company's products. The information contained in this document is subject to change without notice. LICENSES The companies listed above have granted to the Object Management Group, Inc. (OMG) a nonexclusive, royalty-free, paid up, worldwide license to copy and distribute this document and to modify this document and distribute copies of the modified version. Each of the copyright holders listed above has agreed that no person shall be deemed to have infringed the copyright in the included material of any such copyright holder by reason of having used the specification set forth herein or having conformed any computer software to the specification. Subject to all of the terms and conditions below, the owners of the copyright in this specification hereby grant you a fully-paid up, non-exclusive, nontransferable, perpetual, worldwide license (without the right to sublicense), to use this specification to create and distribute software and special purpose specifications that are based upon this specification, and to use, copy, and distribute this specification as provided under the Copyright Act; provided that: (1) both the copyright notice identified above and this permission notice appear on any copies of this specification; (2) the use of the specifications is for informational purposes and will not be copied or posted on any network computer or broadcast in any media and will not be otherwise resold or transferred for commercial purposes; and (3) no modifications are made to this specification. This limited permission automatically terminates without notice if you breach any of these terms or conditions. Upon termination, you will destroy immediately any copies of the specifications in your possession or control. PATENTS The attention of adopters is directed to the possibility that compliance with or adoption of OMG specifications may require use of an invention covered by patent rights. OMG shall not be responsible for identifying patents for which a license may be required by any OMG specification, or for conducting legal inquiries into the legal validity or scope of those patents that are brought to its attention. OMG specifications are prospective and advisory only. Prospective users are responsible for protecting themselves against liability for infringement of patents. GENERAL USE RESTRICTIONS Any unauthorized use of this specification may violate copyright laws, trademark laws, and communications regulations and statutes. This document contains information which is protected by copyright. All Rights Reserved. No part of this work covered by copyright herein may be reproduced or used in any form or by any means--graphic, electronic, or mechanical, including photocopying, recording, taping, or information storage and retrieval systems--without permission of the copyright owner.
  • 3. DISCLAIMER OF WARRANTY WHILE THIS PUBLICATION IS BELIEVED TO BE ACCURATE, IT IS PROVIDED "AS IS" AND MAY CONTAIN ERRORS OR MISPRINTS. THE OBJECT MANAGEMENT GROUP AND THE COMPANIES LISTED ABOVE MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS PUBLICATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE. IN NO EVENT SHALL THE OBJECT MANAGEMENT GROUP OR ANY OF THE COMPANIES LISTED ABOVE BE LIABLE FOR ERRORS CONTAINED HEREIN OR FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, RELIANCE OR COVER DAMAGES, INCLUDING LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY ANY USER OR ANY THIRD PARTY IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS MATERIAL, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. The entire risk as to the quality and performance of software developed using this specification is borne by you. This disclaimer of warranty constitutes an essential part of the license granted to you to use this specification. RESTRICTED RIGHTS LEGEND Use, duplication or disclosure by the U.S. Government is subject to the restrictions set forth in subparagraph (c) (1) (ii) of The Rights in Technical Data and Computer Software Clause at DFARS 252.227-7013 or in subparagraph (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clauses at 48 C.F.R. 52.227-19 or as specified in 48 C.F.R. 227-7202-2 of the DoD F.A.R. Supplement and its successors, or as specified in 48 C.F.R. 12.212 of the Federal Acquisition Regulations and its successors, as applicable. The specification copyright owners are as indicated above and may be contacted through the Object Management Group, 109 Highland Avenue, Needham, MA 02494, U.S.A. TRADEMARKS IMM®, MDA®, Model Driven Architecture®, UML®, UML Cube logo®, OMG Logo®, CORBA® and XMI® are registered trademarks of the Object Management Group, Inc., and Object Management Group™, OMG™ , Unified Modeling Language™, Model Driven Architecture Logo™, Model Driven Architecture Diagram™, CORBA logos™, XMI Logo™, CWM™, CWM Logo™, IIOP™ , MOF™ , OMG Interface Definition Language (IDL)™ , and OMG SysML™ are trademarks of the Object Management Group. All other products or company names mentioned are used for identification purposes only, and may be trademarks of their respective owners. COMPLIANCE The copyright holders listed above acknowledge that the Object Management Group (acting itself or through its designees) is and shall at all times be the sole entity that may authorize developers, suppliers and sellers of computer software to use certification marks, trademarks or other special designations to indicate compliance with these materials. Software developed under the terms of this license may claim compliance or conformance with this specification if and only if the software compliance is of a nature fully matching the applicable compliance points as stated in the specification. Software developed only partially matching the applicable compliance points may claim only that the software was based on this specification, but may not claim compliance or conformance with this specification. In the event that testing suites are implemented or approved by Object Management Group, Inc., software developed using this specification may claim compliance or conformance with the specification only if the software satisfactorily completes the testing suites.
  • 4. OMG’s Issue Reporting Procedure All OMG specifications are subject to continuous review and improvement. As part of this process we encourage readers to report any ambiguities, inconsistencies, or inaccuracies they may find by completing the Issue Reporting Form listed on the main web page http://www.omg.org, under Documents, Report a Bug/Issue (http://www.omg.org/report_issue.)
  • 5. Table of Contents 1 Scope........................................................................................................................................................ 3 1.1 General.......................................................................................................................................... 3 2 Overview.................................................................................................................................................. 5 2.1.1 DDS-XRCE Client.......................................................................................................... 5 2.1.2 XRCEAgent 6 3 Conformance ............................................................................................................................................ 7 4 References................................................................................................................................................ 8 4.1 Normative References.................................................................................................................... 8 4.2 Non-normative References............................................................................................................. 8 5 Terms and Definitions............................................................................................................................... 9 6 Symbols.................................................................................................................................................. 10 7 Additional Information............................................................................................................................ 11 7.1 Changes to Adopted OMG Specifications..................................................................................... 11 7.2 Acknowledgements...................................................................................................................... 11 8 DDS-XRCE Object Model ...................................................................................................................... 12 8.1 General........................................................................................................................................ 12 8.2 Model Overview.......................................................................................................................... 14 8.3 XRCE DDS Proxy Objects........................................................................................................... 15 8.4 XRCE Object Identification ......................................................................................................... 15 8.5 Data types used to model operations on XRCE Objects................................................................. 16 8.5.1 Data and Samples ......................................................................................................... 16 8.5.2 DataRepresentation....................................................................................................... 16 8.5.3 ObjectVariant 17 8.6 XRCE Object operations.............................................................................................................. 21 8.6.1 Use of the ClientKey..................................................................................................... 21 8.6.2 DDSXRCE::Root.......................................................................................................... 21 8.6.3 DDSXRCE::ProxyClient............................................................................................... 23 8.6.4 DDSXRCE::DataWriter................................................................................................ 29 8.6.5 DDSXRCE::DataReader ............................................................................................... 30 9 The DDS-XRCE Protocol ....................................................................................................................... 32 9.1 General........................................................................................................................................ 32 9.2 The DDS-XRCE Protocol Transport Model.................................................................................. 32 9.3 Overview..................................................................................................................................... 32
  • 6. 9.3.1 Message 32 9.3.2 Session 33 9.3.3 Stream 33 9.3.4 Client 33 9.3.5 Agent 33 9.4 Message Structure........................................................................................................................ 33 9.4.1 General 33 9.4.2 Header Structure........................................................................................................... 33 9.4.3 Submessage Structure................................................................................................... 35 9.4.4 Submessage Header ...................................................................................................... 35 9.4.5 Submessages 36 9.4.6 RESET 43 9.4.7 FRAGMENT 43 9.5 Interaction Model......................................................................................................................... 44 9.5.1 General 44 9.5.2 Sending data using a pre-configured DataWriter............................................................ 44 9.5.3 Receiving data using a pre-configured DataReader........................................................ 44 9.5.4 Creating a DataWriter ................................................................................................... 45 9.5.5 Getting Information on a Resource................................................................................ 46 9.5.6 Updating a Resource..................................................................................................... 47 9.5.7 Reliable Communication............................................................................................... 47 Annex A. IDL Types ................................................................................................................................. 55 Annex B. EXAMPLES .............................................................................................................................. 68 CREATE_CLIENT message example ................................................................................................... 68 READ_DATA message examples ......................................................................................................... 70 Reading a single data sample..................................................................................................... 70 Reading a sequence of data samples .......................................................................................... 71 DATA message examples...................................................................................................................... 74 Receiving a single data sample.................................................................................................. 74 Receiving a sequence of samples without SampleInfo................................................................ 75 Receiving a sequence of samples that includes SampleInfo........................................................ 77 Receiving a sequence of packed samples ................................................................................... 79
  • 7. DDS-XRCE, Revised Submission 1 Preface OMG Founded in 1989, the Object Management Group, Inc. (OMG) is an open membership, not-for-profit computer industry standards consortium that produces and maintains computer industry specifications for interoperable, portable, and reusable enterprise applications in distributed, heterogeneous environments. Membership includes Information Technology vendors, end users, government agencies, and academia. OMG member companies write, adopt, and maintain its specifications following a mature, open process. OMG’s specifications implement the Model Driven Architecture® (MDA®), maximizing ROI through a full-lifecycle approach to enterprise integration that covers multiple operating systems, programming languages, middleware and networking infrastructures, and software development environments. OMG’s specifications include: UML® (Unified Modeling Language™); CORBA® (Common Object Request Broker Architecture); CWM™ (Common Warehouse Metamodel); and industry-specific standards for dozens of vertical markets. More information on the OMG is available at http://www.omg.org/. OMG Specifications As noted, OMG specifications address middleware, modeling and vertical domain frameworks. All OMG Specifications are available from the OMG website at: http://www.omg.org/spec Specifications are organized by the following categories: Business Modeling Specifications Middleware Specifications • CORBA/IIOP • Data Distribution Services • Specialized CORBA IDL/Language Mapping Specifications Modeling and Metadata Specifications • UML, MOF, CWM, XMI • UML Profile Modernization Specifications Platform Independent Model (PIM), Platform Specific Model (PSM), Interface Specifications • CORBAServices • CORBAFacilities CORBA Embedded Intelligence Specifications CORBA Security Specifications OMG Domain Specifications
  • 8. 2 DDS XRCE Revised Submission Signal and Image Processing Specifications All of OMG’s formal specifications may be downloaded without charge from our website. (Products implementing OMG specifications are available from individual suppliers.) Copies of specifications, available in PostScript and PDF format, may be obtained from the Specifications Catalog cited above or by contacting the Object Management Group, Inc. at: OMG Headquarters 109 Highland Avenue Needham, MA 02494 USA Tel: +1-781-444-0404 Fax: +1-781-444-0320 Email: pubs@omg.org Certain OMG specifications are also available as ISO standards. Please consult http://www.iso.org Typographical Conventions The type styles shown below are used in this document to distinguish programming statements from ordinary English. However, these conventions are not used in tables or section headings where no distinction is necessary. Times/Times New Roman - 10 pt.: Standard body text Helvetica/Arial - 10 pt. Bold: OMG Interface Definition Language (OMG IDL) and syntax elements. Courier - 10 pt. Bold: Programming language elements. Helvetica/Arial - 10 pt: Exceptions NOTE: Terms that appear in italics are defined in the glossary. Italic text also represents the name of a document, specification, or other publication. Issues The reader is encouraged to report any technical or editing issues/problems with this specification to http://www.omg.org/report_issue.htm.
  • 9. DDS-XRCE, Revised Submission 3 1 Scope This specification is a response to the OMG RFP « eXtremely Resource Constrained Environments DDS (DDS- XRCE) » (mars/16-03-21). It defines a DDS-XRCE Service based on a client-server protocol between a resource constrained, low-powered device (client) and an Agent (the server) that enables the device to communicate with a DDS network and publish and subscribe to topics in a DDS domain. The specifications purpose and scope is to ensure that applications based on different vendor’ implementations of the DDS-XRCE Service are compatible and interoperable. Figure 1— Scope of DDS-XRCE Protocol The DDS-XRCE protocol is a client-server protocol between resource constrained devices (clients) and an XRCE Agent (server) allowing the resource contrained devices with sleep/wake cycles to have access to the DDS Global Data Space over limited-bandwith networks. 1.1 General DDS offers a rich set of API and QoS policies to develop distributed applications for highly complex, mission critical systems. However, these features come at relatively high cost in terms of memory, CPU and bandwidth usage. A large number of devices on the edge of the network, such as actuators and sensors, do not need these types of features. Instead, being at the edge of the network, it is sufficient to be able to publish and subscribe to data while at the same time appear as a first-class participant in the DDS Global Data Space. While the DDS programming API can be avoided by an application, it is still necessary to implement the DDS-RTPS wire protocol to be able to participate in DDS communication. However, the RTPS protocol, whilst featuring a wire efficiency comparable to that of MQTT and other IoT standards, is designed for situations where: - The underlying network transport has reasonably large MTUs exceeding those available in LowPANs, such as 802.15.4 and ZigBee. - The protocol endpoints are assumed to have continuous and simultaneous presence on the network rather than operating on independent sleep/wake cycles. This peer-to-peer and broker-less nature of DDS has significant advantages in many situations but it also has drawbacks in extremely resource-constrained environments (XRCEs). Specifically, the complexity of a DDS peer and the discovery and presence traffic is in general higher than that of a client in broker-based technologies, thus making it harder for DDS implementations to be extremely small.
  • 10. 4 DDS XRCE Revised Submission In order to enable resource-constrained devices to participate in DDS communication and allow devices to be disconnected for long periods of time, but still be discoverable by other DDS applications, there is a need for a client- agent architecture where the agent acts on behalf of the device and makes the device discoverable in the larger DDS network while isolating the device from the complexity of DDS itself. The goal of this specification is to define a service, the XRCEAgent, which enables resource-constrained devices, a DDS-XRCE Client, to participate as a first-class DDS publisher and subscriber in the DDS Global Data Space. This Service is described in terms of a DDS-XRCE Object Model and a set of operations to manipulate the object model in the XRCEAgent for the DDS Global Data Space.
  • 11. DDS-XRCE, Revised Submission 5 2 Overview DDS-XRCE defines an object model that acts as a façade to the Standard DDS Object model. The purpose of this simplified object model is to expose to the client a simpler interaction model with the DDS data-space, when compared to the Standard DDS and RTPS protocols, but still enable a DDS-XRCE client to participate in the DDS data-space as a first class principal. Because the target environment is a resource-constrained device, the goal with the DDS-XRCE object model is not to expose the complete Standard DDS object model. It is understood that much of the configuration can be performed directly on the Agent and therefore does not require explicit interaction from the client. Instead, the focus is on the core set of features required to enable DDS-XRCE clients to participate in a meaningful way in the DDS data-space. In addition to the exposed object from the Standard DDS Object model, the DDS-XRCE object model defines new objects needed to manage disconnected clients, as well as enable access control and access rights. 2.1.1 DDS-XRCE Client The DDS-XRCE Client (XRCEClient) is exposed to the DDS-XRCE Object Model and the façade object. Logically one can think of this as logical equivalent to the “DDS Object Model”. However, a client never interacts directly with objects in the Standard Object Model, and there is not a one-to-one mapping between the operations on the DDS-XRCE Object Model and the “DDS Object Model”. This specification does not simply reuse the standard “DDS Object Model” and operations for three reasons: 1. The DDS Object Model is intended for use with a local programming API. For this reason, the DDS Object Model contains many objects and methods with strongly typed parameters, as well as a direct callback interface by means of listener objects that the application registers with the middleware. Such an API is not suitable for resource constrained, low-power clients that typically prefer more “resource-oriented interfaces” and also expect a simplified interface with no callbacks and where all parameters are encoded in text. 2. The XRCEClient connectivity is assumed to be inherently intermittent due to potentially aggressive use of low- power mode and deep sleep to conserve battery or loss of radio connectivity. Therefore, the DDS-XRCE DDS Object Model must overcome this by introducing a “session,” which can exist across repeated sleep-wakeup cycles by a device. 3. The XRCEClient can access a DDS Service from any location, and therefore it is desirable to have an access control model that authenticates each client application/principal, controls whether the principal can access the DDS Global Data Space, and controls which operations each principal can perform (e.g., which DDS Topics it can publish and subscribe). This specification recognizes that XRCEClient entities may have very different needs, and supports clients with a wide range of requirements:  Simple devices may not need to perform any discovery interaction with the XRCEAgent other then having their presence detected by the agent, and hence establish a presence in the DDS data-space, and be able to publish data of a well-known DDS Topic, using a DDS QoS policy. Such a client does not need any of the QoS configuration and dynamic entity creation capabilities of DDS.  More capable devices may need to publish and subscribe to well-known Topics, however a XRCEClient may not want the data to be pushed by the XRCEAgent at an arbitrary time, for example due to network constraints. Thus, the DDS model of “pushing” data from Writers to Readers may not work well. This specification addresses this by enabling a device to activate/deactivate “data push” from the Agent.  Advanced clients may choose to utilize DDS concepts, and create their own XRCEAgent resources that map to DDS Objects with client-controlled QoS. This specification enables these types of Clients by exposing a set of operations to dynamically create/update/delete Agent objects. This is as opposed to the first two cases, where all resources are known in advance and pre-configured on the Agent.  Finally, complex clients may need to be aware of advanced concepts, such as sequence-numbers (or sample IDs), timestamp, DDS sources etc.
  • 12. 6 DDS XRCE Revised Submission As shown by this list, this specification enables simple devices with little to no configuration ability to fully capable DDS devices. 2.1.2 XRCEAgent The purpose of the DDS-XRCE Agent (XRCEAgent) is to establish and maintain the presence of the XRCEClient in the DDS data-space. This specification does not dictate any particular implementation; instead the required behavior is described as a set of logical operations on the DDS-XRCE Object Model. An important feature of this specification is the simplified interaction with the XRCEAgent. The agent presents an Object Model that describes resources. At a high-level, a resource is an object that can be accessed with a name and has properties and behavior. Resources may be preconfigured with well-known names, or dynamically created by a XRCEClient. Examples of named resources in the XRCEAgent are:  DDS-XRCE Type  DDS-XRCE DataWriter  DDS-XRCE DataReader Any XRCEClient that is allowed to communicate with the XRCEAgent and has the required access rights can refer to these resources by name. Thus, if an XRCEAgent is preconfigured with a name “FooPublisher::FooWriter” resource that can publish a type “Foo”, a Client that has access to this resource and write data using this resource simply by referring to the existing “FooPublisher::FooWriter”. It does not have to create a resource. The implementation of a resource is outside the scope of this specification. For example, a resource “FooPublisher::FooWriter” may be associated with a DDS DataWriter shared by many DDS-XRCE clients, or an XRCEClient may have its own dedicated “FooWriter”, as long as the DDS DataWriter supports the client’s required QoS policies. An important feature of the DDS-XRCE Object Model is the ability for a Client to query it, as opposed to the typical behavior in the Standard DDS Object Model where changes are updated and pushed in real-time. This model is vey likely not suitable for the target environment where disconnected devices is expected to be the normal behavior. This specification enables Clients to be in charge of when data is received, and can ask the XRCEAgent to return data that matches a set of constraints. Thus, a XRCEClient that is disconnected will not be woken up by an XRCEAgent (it may not be possible), instead a XRCEClient queries the XRCEAgent when it wakes up. It is important to distinguish between the operations on the DDS-XRCE Object Model and the Standard DDS Object Model. There is not a 1-to-1 mapping between the operations. Specifically, any reference to the Standard DDS Object Model refers to the behavior and semantics defined in the DDS specification. The DDS operations on the Standard DDS Object Model are not necessarily exposed or have an equivalent in the DDS-XRCE Object Model. The XRCEAgent is not required to expose any programming APIs; the only standard interactions occur with the XRCEClient using the DDS-XRCE protocol and with other DDS domain participants using the DDS-RTPS protocol.
  • 13. DDS-XRCE, Revised Submission 7 3 Conformance This specification defines five profiles. Each constitutes a separate conformance point:  Read Access profile. Provides the clients the ability to read data on pre-configured Topics with pre-configured QoS policies. Requires implementation of all sub-message types except for CREATE, INFO, WRITE_DATA, and DELETE, including the associated behaviors.  Write Access profile. Provides the clients the ability to write data on pre-configured Topics with pre- configured QoS policies. Requires implementation of all sub-message types except for CREATE, INFO, READ_DATA, DATA, and DELETE, including the associated behaviors.  Define Entities profile. Provides the clients the ability define DomainParticipant, Topic, Publisher, Subscriber, DataWriter, and DataReader entities using pre-configured QoS policies and data-types. Requires implementation of the DELETE submessage and the associated behaviors.  Define QoS profile. Provides client the ability to define QoS profiles to be used by DDS entities. Requires implementation of the CREATE submessage and the associated behaviors for object kind OBJK_QOSPROFILE.  Define types profile. Provides client the ability to explicitly define data types to be used for DDS Topics. Requires implementation of the CREATE submessage and the associated behaviors for object kind OBJK_TYPE.  Discovery access profile. Provides the clients the ability to discover the Topics and Types available on the DDS Global Data Space. Requires implementation of the INFO submessage and the associated behaviors.  Complete profile. Requires implementation of the complete specification.
  • 14. 8 DDS XRCE Revised Submission 4 References 4.1 Normative References The following normative documents contain provisions that, through reference in this text, constitute provisions of this specification. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply.  [IETF RFC-1982] Serial Number Arithmetic. https://tools.ietf.org/html/rfc1982  [IDL] Interface Definition Language (IDL), version 4.1, http://www.omg.org/spec/IDL/4.1/  [DDS] Data Distribution Service for Real-Time Systems Specification, version 1.2 http://www.omg.org/spec/DDS/1.2  [DDS-XML] DDS Consolidated XML Syntax, version 1.0, http://www.omg.org/spec/DDS-XML/1.0/  [DDS-XTYPES] Extensible And Dynamic Topic Types for DDS, version 1.2, http://www.omg.org/spec/DDS- XTypes/1.2/  [UML] Unified Modeling Language, version 2.5, http://www.omg.org/spec/UML/2.5 4.2 Non-normative References
  • 15. DDS-XRCE, Revised Submission 9 5 Terms and Definitions For the purposes of this specification, the following terms and definitions apply. Data Distribution Service (DDS) An OMG distributed data communications specification that allows Quality of Service policies to be specified for data timeliness and reliability. It is independent of implementation languages. DDS data-space A “DDS data-space” consists of a collection of peers communicating over the Data Distribution Service and the collection of data observable by those peers. GUID Globally Unique Identifier
  • 16. 10 DDS XRCE Revised Submission 6 Symbols XRCE Extremely Resource Constrained Environments
  • 17. DDS-XRCE, Revised Submission 11 7 Additional Information 7.1 Changes to Adopted OMG Specifications This specification does not change any adopted OMG specification. 7.2 Acknowledgements The following companies submitted this specification:  Real-Time Innovations, Inc.  eProsima  TwinOaks Computing
  • 18. 12 DDS XRCE Revised Submission 8 DDS-XRCE Object Model 8.1 General This specification defines a wire protocol, the DDS-XRCE protocol, to be used between an XRCE Client and an XRCE Agent. The XRCE Agent is a DDS Participant in the DDS Global Data Space. The DDS-XRCE protocol allows the client to use the XRCE Agent as a proxy in order to produce and consume data in the DDS Global Data Space. To model the interaction between the XRCE Client and the XRCEAgent this specification defines a UML model for the XRCEAgent. This model, called the DDS-XRCE Object Model, defines the objects, interfaces, and operations to be implemented by the agent and how they relate to operations on the Standard DDS Object Model as defined in the OMG Data-Distribution Service Specification [DDS]. The DDS-XRCE protocol is defined as a set of logical messages exchanged between the XRCE Client and the DDS- XRCEAgent. These messages perform logical actions on the DDS-XRCE Object Model that result in corresponding actions on the Standard DDS Object Model. The specification of these logical actions fully describes the observable behavior of the XRCE Agent and its interactions both with the Client and the DDS Global Data Space. The DDS-XRCE Object Model both extends and simplifies the Standard DDS Object Model. It extends it to provide an access control model and application management model that support disconnected clients. It simplifies it to reduce the number of objects and operations and make it more suitable for resource constrained, low-power clients. Despite this DDS-XRCE offers complete access to the DDS Global Data space. Any DDS Topic may be published or subscribed on any DDS with any QoS. This is illustrated in Figure 2. Figure 2— DDS-XRCE Object Model Overview pkg PIM Overview XRCEClient DDSXRCE +AccessController +Application +DataReader +DataWriter +DomainParticipant +EntityName +ProxyClient +Publisher +Qos +QosLibrary +QosProfile +RegisteredType +ReturnStatus +Root +SessionId +Status +Submessage +Subscriber +Topic +Type +Entity +Submessages DDS +Condition +ContentFilteredTopic +DataReader +DataReaderListener +DataWriter +DataWriterListener +DomainEntity +DomainParticipant +DomainParticipantFactory +DomainParticipantListener +Entity +GuardCondition +Listener +Publisher +PublisherListener +QosPolicy +QueryCondition +ReadCondition +SampleInfo +Status +StatusCondition +Subscriber +SubscriberListener +Topic +TopicDescription +TopicListener +TypeSupport +WaitSet +Qos Qos +DataReaderQos +DataWriterQos +DomainParticipantQos +PublisherQos +SubscriberQos +TopicQos (from DDS) «use» «use» «use»
  • 19. DDS-XRCE, Revised Submission 13 The DDS-XRCE Object Model is contained in the package DDS-XRCE and acts as a façade to the Standard DDS Object Model (from the DDS specification, contained in the DDS package). All the operations described in the DDS-XRCE PIM pertain to the interaction of a client application with a single DDS- XRCE agent. The scope of all the operations is therefore limited to the interactions with that one DDS-XRCE agent. Notwithstanding that, client applications may interact with each other despite connecting to different DDS-XRCE agents. These interactions would happen as a consequence of the DDS-XRCE agents creating and performing operations on DDS DomainParticipant entities, which exchange information in accordance to the DDS specification. The specification does not preclude DDS-XRCE agents from proxying for other DDS-XRCE agents and therefore create a network of DDS-XRCE agents supporting store-and-forward deployment scenarios. This is transparent to the DDS- XRCE client applications. This is illustrated in Figure 3. Figure 3— DDS-XRCE Agents operating in relay mode The XRCEAgents can communicate with each other using the same DDS-XRCE protocol. These enables store-and- forward dataflows. This type of deployment is transparent to the XRCEClient applications and the DDS applications.
  • 20. 14 DDS XRCE Revised Submission 8.2 Model Overview At the highest-level DDS-XRCE Object Model consists of 5 classes: The Root singleton, ProxyClient, Application, AccessController, and DomainParticipant. Figure 4 — DDS-XRCE Object Model Overview The Root singleton is the entry point for the service and functions as a factory for all the Objects managed by the XRCEAgent. The ProxyClient class models the client application that interacts with the Agent using the XRCE protocol. Each Application object is associated with a single Client and gets its access rights from those assigned to the Client. The Application class models a software application that connects with the DDS-XRCE Client and manages the DDS objects needed to publish and subscribe data on one or more DDS Domains. An Application can be associated with zero of more DomainParticipant objects. The AccessController is responsible for making decisions regarding the resources and operations a particular Client is allowed to perform. It contains rules that associate a Client with privileges which determine which DDS domain an application executing on behalf of a client may join, the DDS Topics it can read and write, etc. The DDS-XRCE DomainParticipant is a proxy for a DDS DomainParticipant and models the association with a DDS domain and the capability of the Application to publish and subscribe to Topics on that domain. classOverview DDSXRCE::Application DDSXRCE::ProxyClient «singleton» DDSXRCE::Root DDSXRCE:: DomainParticipant DDSXRCE::AccessController DDSXRCE::QosLibrary - name: string «value» DDSXRCE::Type - name: string «use» 0..* 1 0..* 0..* «use»
  • 21. DDS-XRCE, Revised Submission 15 8.3 XRCE DDS Proxy Objects Several of the DDS-XRCE objects act as proxy to corresponding DDS objects. These proxy objects allow the client application to participate as first-class citizens on the DDS network by delegating the actual DDS behavior and DDS- RTPS protocol implementation to the proxy DDS objects. This relationship is shown in Figure 5. Figure 5 -- DDSXRCE objects that proxy DDS Entities 8.4 XRCE Object Identification Each XRCE Object managed by the XRCEAgent on behalf of a specific XRCEClient is identified by means of an ObjectId. This implies that the ObjectId shall be unique within the scope of an Agent and a ClientKey. The value of the ObjectId for a particular object be configured on the XRCEAgent or specified by the XRCEClient at the time the object is created. classDDS-Mapping DDSXRCE:: DomainParticipant DDSXRCE::Publisher DDSXRCE::Subscriber DDSXRCE:: DataWriter DDSXRCE::DataReader DDSXRCE::Topic DDS::DomainParticipantFactory DDS::DomainParticipant DDS::Publisher DDS::Subscriber DDS::TopicDescription DDS::Topic DDS::ContentFilteredTopic DDS::DataReader DDS::DataWriter «value» DDSXRCE::Qos «value» DDSXRCE:: QosProfile Qos +DataReaderQos +DataWriterQos +DomainParticipantQos +PublisherQos +SubscriberQos +TopicQos (from DDS) DDSXRCE::Application «use» «use» «use» «use» «use» «use» 0..* «use» «use» «use» «use» «use»
  • 22. 16 DDS XRCE Revised Submission There are two reserved values for ObjectId. The value {0x00, 0x00} is referred as OBJECTID_INVALID and represents an invalid object. The value {0xFF, 0xFF} is referred as OBJECTID_CLIENT and represents the DDSXRCE::ProxyClient object. Alternatively, objects may also be identified by a string resourceName. The format of this name depends on the resource and provides a way to refer to a resource configured on the agent using a configuration file or similar means. 8.5 Data types used to model operations on XRCE Objects The operations on the XRCE objects accept parameters. The format of these parameters is described as a set of IDL data types. These IDL descriptions are used both in the description of the XRCE Object operations as well as to define the wire representation of the messages exchanged between the Client and the Agent. The IDL definitions for the data types shall be as specified in Annex A IDL Types. The following sub clauses provide explanations for some of the key data types specified in Annex A IDL Types. 8.5.1 Data and Samples When the XRCEAgent sends data to the XRCEClient it may use one of four possible formats. The difference is whether the data is sent by itself, or accompanied with meta-data such as timestamp and sequence numbers. Another difference is whether the message contains a single sample or a sequence of those. While it would be possible to combine all these representations into a single type (e.g. a union) this would introduce additional bytes in the serialization which is undesirable in extremely resource-constrained environments. The five possible representation are: SampleData, Sample, SampleDataSeq, SampleSeq, and SamplePackedData. They respectively correspond to the DataFormat values FORMAT_DATA, FORMAT_DATA_SEQ, FORMAT_SAMPLE, FORMAT_SAMPLE_SEQ, and FORMAT_PACKED. Their IDL definition shall be as specified in Annex A IDL Types. All these representations serialize the data XCDR representation defined in [DDS-XTYPES]. For example, the definition of the SampleData is given by the IDL: @extensibility(FINAL) struct SampleData { XCDRSerializedBuffer serialized_data; }; In this structure the XCDRSerializedBuffer represents the bytes resulting from serializing the specific application data type being sent using the XCDR rules defined in clause 7.4 of [DDS-XTYPES]. Other representations end up including a SampleData to hold the serialized application data. For example Sample is defined as: @extensibility(FINAL) struct Sample { SampleInfo info; SampleData data; }; 8.5.2 DataRepresentation The DataRepresentation type is used to hold values of data samples as well as additional sample information such
  • 23. DDS-XRCE, Revised Submission 17 as sequence number or timestamps. It is used by the DDSXRCE::ProxyClient write operation. The DataRepresentation is defined as a union discriminated by a DataFormat. Depending on the discriminator it selects one of the formats defined in clause 8.5.1. The possible values for the DataFormat and the resulting representation are described in Table 1 below. Table 1 Interpretation of the DataFormat DataFormat Selected DataRepresentation union member FORMAT_DATA The selected member shall be data of type SampleData. This member contains a single sample, not a sequence and shall contain only the data without additional sample information. FORMAT_DATA_SEQ The selected member shall be data_seq of type SampleDataSeq. This member contains a sequence of samples. Each sample shall contain only the data without additional sample information. FORMAT_SAMPLE The selected member shall be sample of type Sample. This member contains a single sample, not a sequence and shall contain both the data and the additional sample information. FORMAT_SAMPLE_SEQ The selected member shall be sample_seq of type SampleSeq. This member contains a sequence of samples, each containing both the data and the additional sample information. FORMAT_PACKED The selected member shall be packed_samples of type SamplePackedSeq. This member contains a sequence of samples, each containing both the data and the additional sample information but using a more compact representation than for FORMAT_SAMPLE_SEQ. 8.5.3 ObjectVariant The ObjectVariant type is used to hold the representation of a DDSXRCE Object. It is used by the DDSXRCE::ProxyClient create, update, and get_info operations. The ObjectVariant is defined as a union discriminated by ObjectKind, each value of the discriminator selects an appropriate object representation for that specific object kind. Objects may have multiple representations each using a different RepresentationFormat. The reason is that some formats are optimized for expressiveness and ease of configuration whereas others minimize the size used to transmit the representation.
  • 24. 18 DDS XRCE Revised Submission There are three supported RepresentationFormat values: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.  The REPRESENTATION_BY_REFERENCE uses a string_reference. This string refers by name to a description already known to the XRCEAgent. This can be used to represent any object in an extremely compact manner. But requires pre-configuration of the XRCEAgent. The rules for referring to objects preconfigured in the XRCEAgent follow the for object references in the [DDS-XML] specification.  The REPRESENTATION_AS_XML_STRING represents the object using XML. This can be used to dynamically represent any object at the expense of the verbosity introduced by the XML format. The XML format follows the standard defined in [DDS-XML].  The REPRESENTATION_IN_BINARY represents objects using a binary representation obtained by serializing using XCDR an IDL-defined data-structure that depends on the kind of object. This representation is very compact but it can only be used to represent a subset of the objects. For example not all DDS QoS can be expressed using the binary representation. The following subsections provide details of the ObjectVariant representation for each kind of object. 8.5.3.1 DDSXRCE::QosProfile The OBJK_QOSPROFILE_Representation supports only the REPRESENTATION_BY_REFERENCE and REPRESENTATION_AS_XML_STRING. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a QosProfile known to the XRCEAgent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a QosProfile as defined in [DDS-XML]. The REPRESENTATION_BY_REFERENCE XML representation may reference other QoS profiles already known to the Agent. This includes profiles were pre-configured or pre-loaded to the Agent. This feature allows a compact representation of a QosProfile that simply references an existing one as in: <qos_profile base_name=”MyQosLib:MyQosProfile”/> This feature also allows a compact way to represent a QosProfile that differs slightly from an existing one: <qos_profile base_name=”MyQosLib:MyQosProfile”> <data_reader_qos> <reliability><kind>RELIABLE_RELIABILITY_QOS</kind><reliability> <data_reader_qos> </qos_profile> 8.5.3.2 DDSXRCE::Type The OBJK_TYPE_Representation supports the three representations: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE::Type known to the XRCEAgent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of the DDS Type as defined in [DDS-XML] and [DDS-XTYPES].
  • 25. DDS-XRCE, Revised Submission 19 When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of the structure OBJK_Type_Binary defined in Annex A IDL Types. This representation uses the TypeIdentifier defined in and [DDS-XTYPES] to uniquely identify the type. However it does not describe the structure of the type. Independent of the representation format, the additional members in OBJK_TYPE_Representation shall be interpreted as specified below. The participant_id contains the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS DomainParticipant used to register the DDS data-type with DDS. The registered_type_name contains the name passed to the DDS TypeSupport register_type operation. 8.5.3.3 DDSXRCE::Application The OBJK_APPLICATION_Representation supports only the REPRESENTATION_BY_REFERENCE and REPRESENTATION_AS_XML_STRING. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE Application definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation shall contain the XML representation of an Application as defined in [DDS-XML]. 8.5.3.4 DDSXRCE::DomainParticipant The OBJK_PARTICIPANT_Representation supports only the REPRESENTATION_BY_REFERENCE and REPRESENTATION_AS_XML_STRING. The OBJK_PARTICIPANT_Representation contains s string field named as_string. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE DomainParticipant definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a DomainParticipant as defined by [DDS-XML]. 8.5.3.5 DDSXRCE::Topic The OBJK_TOPIC_Representation supports the three representations: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE Topic definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a Topic as defined by [DDS-XML] When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of the structure OBJK_Topic_Binary defined in Annex A IDL Types. Independent of the representation format, the additional members in OBJK_TYPE_Representation shall be interpreted as specified below. The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS DomainParticipant used to create the DDS Topic. 8.5.3.6 DDSXRCE::Publisher The OBJK_PUB_Representation supports the three representations: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
  • 26. 20 DDS XRCE Revised Submission When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE Publisher definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a Publisher as defined by [DDS-XML]. When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of the structure OBJK_Publisher_Binary defined in Annex A IDL Types. Independent of the representation format, the additional members in OBJK_PUB_Representation shall be interpreted as specified below. The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS DomainParticipant used to create the DDS Publisher. 8.5.3.7 DDSXRCE::Subscriber The OBJK_SUB_Representation supports the three representations: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE Subscriber definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a Subscriber as defined by [DDS-XML]. When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of the structure OBJK_Subscriber_Binary defined in Annex A IDL Types. Independent of the representation format, the additional members in OBJK_SUB_Representation shall be interpreted as specified below. The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS DomainParticipant used to create the DDS Subscriber. 8.5.3.8 DDSXRCE::DataWriter The OBJK_DW_Representation supports the three representations: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE DataWriter definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a DataWriter as defined by [DDS-XML]. When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of the structure OBJK_DataWriter_Binary defined in Annex A IDL Types. Independent of the representation format, the additional members in OBJK_DW_Representation shall be interpreted as specified below. The publisher_id shall contain the ObjectId of a DDSXRCE Publisher object that proxies for the DDS Publisher used to create the DDS DataWriter. The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS DomainParticipant to whom the aforementioned DDS Publisher belongs.
  • 27. DDS-XRCE, Revised Submission 21 8.5.3.9 DDSXRCE::DataReader The OBJK_DR_Representation supports the three representations: REPRESENTATION_BY_REFERENCE, REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY. When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a DDSXRCE DataReader definition known to the Agent. When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML representation of a DataReader as defined by [DDS-XML]. When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of the structure OBJK_DataReader_Binary defined in Annex A IDL Types. Independent of the representation format, the additional members in OBJK_DR_Representation shall be interpreted as specified below. The subscriber_id shall contain the ObjectId of a DDSXRCE Subscriber object that proxies for the DDS Subscriber used to create the DDS DataReader. The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS DomainParticipant to whom the aforementioned DDS Subscriber belongs. 8.6 XRCE Object operations 8.6.1 Use of the ClientKey All operations are performed within the context of a ClientKey with is used both to authenticate and identify the client:  The ClientKey is assigned to each client. The ClientKey uniquely identifies the client to a particular agent. The ClientKey is associated with a set of permissions for the client within the agent.  The ClientKey shall be considered secret. It needs to be configured both on the Client and in the Agent. The creation and configuration is outside the scope of this specification.  The ClientKey shall not be interpreted. With the exception of the operation DDSXRCE::Root create_client all other operations expect that the ClientKey references an already exiting DDSXRCE::ProxyClient. If this is not the case the operation shall fail. To avoid information leakage that could compromise security, the failure to locate a ClientKey may in some cases result in a returnValue having STATUS_ERR_NOCLIENT while in others it may silently drop the connection to the client. The Agent shall maintain a counter on the number of times the STATUS_ERR_NOCLIENT was sent on an established connection and once a certain threshold is crossed it shall close the connection. The agent may subsequently refuse or throttle new connections originating from the same client transport endpoint that was previously closed. The specific details of this behavior are implementation specific and left outside the scope of this specification. 8.6.2 DDSXRCE::Root The DDSXRCE::Root object represents the Agent. An DDSXRCE::Agent is a singleton object that all agents shall have. The DDSXRCE::Root is responsible for authenticating client applications and creating the DDSXRCE::ProxyClient object associated with each client. The logical operations on the DDSXRCE::Root are shown in Table 2.
  • 28. 22 DDS XRCE Revised Submission Table 2-- DDSXRCE::Root operations create_client ResultStatus object_representation OBJK_CLIENT_Representation delete_client ResultStatus 8.6.2.1 Operation create_client Inputs  object_representation (OBJK_CLIENT_Representation) a representation of the Client. Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The object_id in the returnValue shall be set to match the object_id input parameter. The object_representation shall contain an OBJK_CLIENT_Representation which is used to initialize the DDSXRCE::ProxyClient. The XRCEAgent shall perform the following checks and actions based on the information found within the The object_representation:  Check the xrce_cookie to ensure it matches the predefined XRCE_COOKIE constant. If it does not match the creation shall fail and set the returnValue to{STATUS_LAST_OP_CREATE, STATUS_ERR_INVALID_DATA}.  Check that the major version (xrce_version[0]) matches the XRCE_VERSION_MAJOR. If it does not match, the creation shall fail and set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_INCOMPATIBLE}.  Check the client_key is authorized to connect to the XRCEAgent. If this check fails the operation shall fail and set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_DENIED}.  Check if there is an existing DDSXRCE::ProxyClient object associated with the same ClientKey and if so compare the session_id of the existing ProxyClient with the one in the object_representation: o If a ProxyClient exists and has the same session_id then the operation shall not perform any action and shall set the returnValue to {STATUS_LAST_OP_CREATE,STATUS_OK}. o If a ProxyClient exist and has a different session_id then the operation shall delete the existing DDSXRCE::ProxyClient object and shall proceed as if the ProxyClient did not exist.  Check there are sufficient internal resources to complete the create operation. If there are not, then the operation shall fail and set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_RESOURCES}. All communication state between a client and an Agent is managed by the associated ProxyClient. Therefore deletion of an existing ProxyClient resets any prior communication state between the client and the agent. Any messages that were cached pending acknowledgments shall be discarded. The Agent shall create a ProxyClient object and shall:  Initialize its state to have the specified session_id.  Initialize the builtin streams with sequence number 0.  Set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_OK}. The Agent may use the client’s_timestamp to detect time-synchronization differences between the XRCEClient and the XRCEAgent. The use of this information is left outside the scope of this specification.
  • 29. DDS-XRCE, Revised Submission 23 8.6.2.2 Operation delete_client Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The object_id in the returnValue shall be set to match the object_id input parameter. The Agent shall check the ClientKey to locate an existing DDSXRCE:ProxyClient. If the object is not found the operation shall fail and returnValue shall be set to {STATUS_LAST_OP_DELETE, STATUS_ERR_INVALID}. If the object is found it shall be delete and returnValue shall be set to {STATUS_LAST_OP_DELETE, STATUS_OK}. 8.6.3 DDSXRCE::ProxyClient The DDSXRCE::ProxyClient object represents a specific XRCEClient inside a concrete XRCEAgent. The ProxyClient object is identified by the clientKey. The logical operations on the ProxyClient are shown in Table 3. Table 3 DDSXRCE::ProxyClient operations create ResultStatus creation_mode CreationMode objectid_prefix ObjectIdPrefix object_representation ObjectVariant update ResultStatus objectid_prefix ObjectIdPrefix object_representation ObjectVariant get_info ResultStatus out: info ActivityInfoVariant out: config ObjectVariant info_mask InfoMask objectid_prefix ObjectIdPrefix delete ResultStatus objectid_prefix ObjectIdPrefix
  • 30. 24 DDS XRCE Revised Submission 8.6.3.1 Operation create Inputs  creation_mode (CreationMode) controls the behavior of the operation when there is an existing object that partially matches the description of the object that the client wants to create.  objectid_prefix (ObjectIdPrefix) the desired ObjectId for the created object.  object_representation (ObjectVariant) a representation of the object that the client wants to create. Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The object_id in the returnValue shall be set to match the object_id input parameter. This operation attempts to create a DDSXRCE object according to the specification provided in the object_representation parameter. The ObjectVariant is a union discriminated by the ObjectKind that is used to define the kind of DDSXRCE object being created. We will refer to this ObjectKind as the “input_objectkind”. The object_prefix parameter contains the desired ObjectId for the object. The combination of the objectid_prefix and the ObjectKind contained in the object_representation discriminator shall be used to construct the “input” ObjectId. We shall refer to this ObjectId as the “input_objectid”. The selected member of the ObjectVariant contains the information required to construct an object of ObjectKind input_objectkind. The creation_mode affects the behavior of the create operation as specified in Table 4.
  • 31. DDS-XRCE, Revised Submission 25 Table 4 -- CreationMode influence on create operation creation mode reuse creation mode replace input objectid exists Result * * NO Create object according to Table 5. FALSE FALSE YES No action taken. Set returnValue to: { STATUS_LAST_OP_CREATE, STATUS_ERR_ALREADY_EXISTS } FALSE TRUE YES Delete existing object as specified by the delete operation. Create object according to Table 5. TRUE FALSE YES Check if object_representation matches the existing Object: If it matches no action is taken. Set returnValue to: { STATUS_LAST_OP_CREATE , STATUS_OK_MATCHES } If it does not match no action is taken. Set returnValue to: { STATUS_LAST_OP_CREATE , STATUS_ERR_MISMATCH } TRUE TRUE YES Check if object_representation matches the existing Object: If it matches no action is taken. Set returnValue to: { STATUS_LAST_OP_CREATE , STATUS_OK_MATCHES } If it does not match delete existing object as specified by the delete operation and then create a new object according to Table 5. All DDS-XRCE object representations that derive from OBJK_CommonString_Representation use a string field as_string to describe the DDS-XRCE object being created. This version of the speciation supports two formats for the string:  Strings that start with the prefix “ref:”  Strings that start with the prefix “xml:”
  • 32. 26 DDS XRCE Revised Submission If the string starts with the prefix “ref:” then OBJK_CommonString_Representation references a DDSXRCE definition that must already be known to the Agent. In this case the agent shall locate that definition and use that to construct the object. If the definition is not found the create operation shall fail and set returnStatus {STATUS_LAST_OP_CREATE,STATUS_ERR_DDS_ERROR } If the string starts with the prefix “xml:” then the Agent shall use that definition to create the DDSXRCE object of the type selected by the ObjectVariant. In either situation the creation of the DDSXRCE object may create additional DDSXRCE objects nested within, for example the description of a DDSXRCE DomainParticipant may contain Topics, Publishers, Subscribers, DataWriters, DataReaders, etc. In this case the failure to create any nested entity shall be considered a failure to create the contained entity as well. Some of the DDSXRCE objects may be defined by this specification as proxies for DDS Entities. In this case the creation of the DDSXRCE Object will automatically trigger the creation of the proxy DDS Entity. Failure to create a DDS Entity shall be considered a failure to create the proxy DDSXRCE object as well. If the creation of the DDSXRCE object fails then there should be no associated DDS-RTPS discovery traffic generated by the Agent. This means that all DDS entities shall be created disabled, such that the creation does not result on DDS- RTPS discovery traffic and enabled (if so configured by their QoS) only after it has been determined that the creation has succeeded. If the creation succeeds the Agent shall set returnStatus {STATUS_LAST_OP_CREATE, STATUS_OK} . The creation of DDSXRCE Objects is done in accordance to the object_representation parameter. The specific behavior depends on the ObjectKind. See Table 5.
  • 33. DDS-XRCE, Revised Submission 27 Table 5 Behavior of the create operation according to the ObjectKind ObjectKind Create behavior OBJK_QOSPROFILE The ObjectVariant is a OBJK_QOSPROFILE_Representation which references or contains a QosProfile definition. The agent shall use that definition to create a DDSXRCE QosProfile and an associated the QoS Profile definitions interpreted in accordance to the representation defined in 8.5.3.1. OBJK_PARTICIPANT The ObjectVariant is a OBJK_PARTICIPANT_Representation which references or contains a DomainParticipant definition. The agent shall use that definition to create a DDSXRCE DomainParticipant and an associated DDS DomainParticipant with all the contained entities found within the definition in accordance to the representation defined in 8.5.3.4. OBJK_TYPE The ObjectVariant is a OBJK_TYPE_Representation which references or contains a Type definition. The agent shall use that definition to create a DDSXRCE Type in accordance to the representation defined in 8.5.3.2. The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id. If this object is not found the operation shall fail and return { STATUS_LAST_OP_CREATE , STATUS_ ERR_UNKNOWN_REFERENCE } OBJK_TOPIC The ObjectVariant is a OBJK_TOPIC_Representation which references or contains a Topic definition. The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id. If this object is not found the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall use the definition to create a DDSXRCE Topic in accordance with the representation defined in 8.5.3.5. The DDS Topic shall be created using the DomainParticipant identified by the participant_id. OBJK_PUBLISHER The ObjectVariant is a OBJK_PUBLISHER_Representation which references or contains a Publisher definition. The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id. If this object is not found the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall use the definition to create a DDSXRCE Publisher in accordance with the representation defined in 8.5.3.6. The DDS Publisher shall be created using the DomainParticipant identified by the participant_id. OBJK_SUBSCRIBER The ObjectVariant is a OBJK_SUBSCRIBER_Representation which references or contains a Subscriber definition. The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id. If this object is not found the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall use the definition to create a DDSXRCE Subscriber in accordance with the representation defined in 8.5.3.7. The DDS Subscriber shall be created using the DomainParticipant identified by the participant_id. OBJK_DATAWRITER The ObjectVariant is a OBJK_DW_Representation which references or contains a DataWriter definition.
  • 34. 28 DDS XRCE Revised Submission The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id. If this object is not found the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall locate the DDSXRCE Publisher identified by the publisher_id. If this object is not found or if it does not belong to the previously-located DomainParticipant the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall use the definition to create a DDSXRCE DataWriter in accordance with the representation defined in 8.5.3.8. The DDS DataWriter shall be created using the Publisher identified by the publisher_id. OBJK_DATEREADER The ObjectVariant is a OBJK_DW_Representation which references or contains a DataReader definition. The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id. If this object is not found the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall locate the DDSXRCE Subscriber identified by the subscriber_id. If this object is not found or if it does not belong to the previously-located DomainParticipant the operation shall fail and return {STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE} The agent shall use the definition to create a DDSXRCE DataReader in accordance with the representation defined in 8.5.3.9. The DDS DataReader shall be created using the Subscriber identified by the subscriber_id. 8.6.3.2 Operation update Inputs  objectid_prefix (ObjectIdPrefix) the object being updated.  object_representation (ObjectVariant) of the updated object. Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The object_id in the returnValue shall be set to match the object_id input parameter. This operation attempts to update an existing object in the Agent. If the object exists and the update is successful STATUS_OK is returned, otherwise a status indicating an error is returned:  If the object does not already exist STATUS_ERR_UNKNOWN_REFERENCE is returned.  If the update was unsuccessful due to invalid parameters, STATUS_ERR_INVALID_DATA is returned. If an update is unsuccessful the referenced object shall returns to its previous configuration.  If the object cannot be updated due to permission restrictions, STATUS_ERR_DENIED is returned. 8.6.3.3 Operation get_info Inputs  objectid_prefix (ObjectIdPrefix) the object queried.  info_mask (InfoMask) selects the kind of information to retrieve.
  • 35. DDS-XRCE, Revised Submission 29 Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded. The object_id in the returnValue shall be set to match the object_id input parameter.  activity (ActivityInfo): Contains the current activity of the specified object.  config (ObjectVariant): Contains the current configuration of the specified object. This operation returns the configuration and activity data for an existing object.  If the object does not already exist STATUS_ERR_UNKNOWN_REFERENCE is returned.  If the object cannot be accessed due to permission restrictions STATUS_ERR_DENIED is returned. 8.6.3.4 Operation delete Inputs  objectid_prefix (ObjectIdPrefix) the object being deleted. Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The object_id in the returnValue shall be set to match the object_id input parameter. This operation deletes an existing object. If the object is successfully deleted STATUS_OK is returned.  If the object does not exist STATUS_ERR_UNKNOWN_REFERENCE is returned.  If the object cannot be deleted due to permission restrictions, STATUS_ERR_DENIED is returned. 8.6.4 DDSXRCE::DataWriter The operations are defined in Table 6. Table 6 DDSXRCE::DataWriter operations write ResultStatus object_id ObjectId data DataRepresentation 8.6.4.1 Operation write Inputs  object_id (ObjectId) the object that shall publish the data.  data (SampleDataRepresentation) data to be written. Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The object_id in the returnValue shall be set to match the object_id input parameter. This operation writes one or more samples using the DDSXRCE::DataWriter identified by the object_id.  If the data is successfully written STATUS_OK shall be returned.  If the DDSXRCE::DataWriter object identified by the object_id does not exist, the ResultStatus STATUS_ERR_UNKNOWN_REFERENCE shall be returned.
  • 36. 30 DDS XRCE Revised Submission  If the client is not allowed to write data using the referenced object_id due to permission restrictions, the ResultStatus STATUS_ERR_DENIED shall be returned.  If the data could not be written successfully due, for example invalid data format, the ResultStatus STATUS_ERR_INVALID_DATA shall be returned. 8.6.5 DDSXRCE::DataReader The operations are defined in Table 7 . Table 7 DDSXRCE::DataReader operations read ResultStatus out: read_data DataRepresentation object_id ObjectId read_spec ReadSpecification 8.6.5.1 Operation read Inputs  object_id (ObjectId) the object to read data from.  read_spec (ReadSpecification) Read specification. The operation will only return data that matches the constraint. Outputs  returnValue (ResultStatus): Indicates whether the operation succeeded.  data_read (SampleDataRepresentation): Data matching the read_spec or nil if there was an error. This operation reads one or more samples from the DDSXRCE::DataReader identified by the object_id. If the data is successfully read STATUS_OK shall be returned.  If the object does not exist STATUS_ERR_UNKNOWN_REFERENCE shall be returned.  If the client is not allowed to read data using the referenced object_id due to permission restrictions, STATUS_ERR_DENIED shall be returned. The read_spec parameter controls the data returned by this operation. The fields of this structure shall be interpreted as described in Table 8. Table 8 Interpretation of the ReadSpecification field type interpretation data_format DataFormat Selects one the data formats. See 8.5.1 max_samples unsigned short Maximum number of samples to return as a result of the read. max_elapsed_time long Maximum amount of time in seconds that may be spent delivering the samples from the read operation.
  • 37. DDS-XRCE, Revised Submission 31 max_rate long Maximum rate in bytes per second at which the data may be returned to the read operation. content_filter_expression string A content filter expression selecting which data to read. The syntax shall be as specified in Annex B (Syntax for Queries and Filters) of the DDS specification [DDS].
  • 38. 32 DDS XRCE Revised Submission 9 The DDS-XRCE Protocol 9.1 General The XRCEAgent implements the operations specified in the DDS-XRCE Object Model as a messaging protocol between the XRCEClient and XRCEAgent. The DDS-XRCE protocol is designed specifically to address the limited CPU, power and network bandwidth found in many types of low-powered devices and enable the device to be discoverable in the larger DDS network. Specifically, it is designed to meet the unique challenges posed by these types of devices and the main features include:  Operate over networks with bandwidth limited to 40-100Kbps.  Work with devices that may be active only every few minutes, days, months or even years.  Programming API independence, supporting devices that are programmed in a highly specialized language or framework.  Minimal discovery protocol.  A message protocol that can send updates to multiple DDS Topics efficiently.  Supports secure communication at the transport level.  Full read/write access to any data in the DDS Global Data Space (subject to access control limits).  A full implementation requiring less than 100KB of code. In contrasts to applications that use the DDS API directly, DDX-XRCE clients:  Do not have a standard API, so they are not portable across vendor implementations.  Cannot operate without infrastructure support. They need a DDS-XRCE Agent to be reachable to them.  Cannot communicate directly peer-to-peer. All communications are brokered (relayed) by one or more DDS- XRCE Agents. 9.2 The DDS-XRCE Protocol Transport Model DDS-XRCE is not limited to a particular transport. However, as a minimum it is expected that the transport support the following functionality: (1) It can deliver messages of at least 64 bytes. (2) It handles the integrity of messages dropping any ones that are corrupted. (3) It provides the size of the received message as well as the source address. (4) It supports bi-directional communication. (5) It provides transport-level security. Specifically the means for Client to authenticate the Agent and for secure (encrypted and authenticated) message exchange. The following functionality is explicitly not required from the transport: (1) It does not need to provide reliability. Messages may be dropped. (2) It does not need to provide ordering. Messages may arrive out of order. (3) It does not need to provide notification of dropped messages. 9.3 Overview XRCEClients and XRCEAgents exchange messages to execute operations and return results. The DDS-XRCE Protocol defines a client, agent, session, and message. A client communicates with an agent using the DDS-XRCE protocol, exchanging messages on a stream belonging to a session. 9.3.1 Message A message is the unit of information sent via the transport and is a structured sequence of bytes sent on a DDS-XRCE transport. A message has a sequence number that is used for ordering of messages, or to identify messages that have been dropped by the transport.
  • 39. DDS-XRCE, Revised Submission 33 The underlying XRCE Transport shall transfer messages as a unit. A single XRCE Transport may transport one or more XRCE messages streams. 9.3.2 Session A session defines a bi-directional connection between a client and an agent that has been established with a handshake. The session is needed to exchange messages with the XRCEAgent. An XRCEClient may send messages over multiple sessions, for example if it communicates with multiple XRCEAgents. A session can contain, independent reliable and best-effort message streams. 9.3.3 Stream A stream represents an independent ordered flow of messages within a session. Messages are ordered within a stream by means of a sequence number. The sequence numbers used by different streams are independent from each other. Streams can be reliable or best efforts. Each stream uses a constant endianess to encode the data in the message/submessage headers and payload. 9.3.4 Client A XRCEClient initiates the establishment of a session with an XRCEAgent. A XRCEClient may send and receive messages to the agent on streams belonging to an established session. 9.3.5 Agent An XRCEAgent listens to and accepts requests to establish sessions from XRCEClients. An XRCEAgent may send and receive messages to a XRCEClient on streams belonging to an established session. 9.4 Message Structure 9.4.1 General A message is composed of a message header followed by one or more Submessages and is transferred as a unit by the underlying XRCE Transport. Figure 6 — Message structure 9.4.2 Header Structure The header is structured as follows:
  • 40. 34 DDS XRCE Revised Submission 0 8 16 24 31 +----------------+--------+-------+----------------+----------------+ | sessionId | streamId | sequenceNr | +----------------+----------------+----------------+----------------+ | clientKey (if sessionId >= 128) | +----------------+--------+-------+----------------+----------------+ 9.4.2.1 Sessions and the sessionId A session is established between the XRCEClient and XRCEAgent to establish an initial context for the communications. This includes the exchange of protocol versions, vendor identification, and other information needed to correctly process messages. A sessionId is scoped by the clientKey and is unique to an XRCEAgent for a given XRCEClient. Its value also determines whether the Header includes a clientKey or not.  If the sessionId is between 0 and 127, both included, then the Header shall include the clientKey and the sessionId is scoped by the clientKey.  If the sessionId is between 128 and 255, both included, then the Header shall not include the clientKey and the sessionId is scoped by the source address of the message. If the clientKey does not appear explicitly in the message header, the XRCEAgent must be able to locate it from the source address of the message (see clause 9.2 and 9.4.2.4). Three values of the sessionId are reserved:  The value 0 used to indicate the lack of a session within a Header containing a clientKey. This referred to as SESSION_ID_NONE_WITH_CLIENT_KEY.  The value 128 (0x80) used to indicate the lack of a session within a Header that does not contain a clientKey. This referred to as SESSION_ID_NONE_WITHOUT_CLIENT_KEY. 9.4.2.2 Streams and the streamId A stream represents an independent flow of information between a XRCEClient and a XRCEAgent. Each message belongs to a single stream. Messages belonging to the same stream must be delivered in the order they are sent. Messages belonging to different streams are ordered relative to each other. Streams are scoped by the session they belong to. The streamId with value 0 is referred as STREAMID_NONE. This stream is used for messages exclusively containing sub-messages that do not belong to any stream, such as HEARTBEAT and ACKNAK sub-messages. This messages still contain a sequenceNr that can be ignored. Implementations may take advantage of the sequenceNr to discard duplicate messages arriving within a short time window. The streams with streamId between 1 and 127 (both included) are best-effort streams. The stream with streamId between 128 and 255 are reliable streams. In other words if the streamId is not STREAMID_NONE, then the leading bit of the streamId can be interpreted as a flag that indicates the reliability of the stream. There are two built-in streams that are created whenever a session is created:  A built-in best-effort stream identified by a streamId with value 1. This is referred as STREAMID_BUILTIN_BEST_EFFORTS.  A built-in reliable stream identified by a streamId with value 128. This is referred as STREAMID_BUILTIN_RELIABLE.
  • 41. DDS-XRCE, Revised Submission 35 9.4.2.3 sequenceNr The sequenceNr is used to order messages within a stream and it is scoped by the stream. Messages belonging to different streams are unordered relative to each other:  For the stream with streamId STREAMID_NONE value of the sequenceNr does not impose any order, however it still may be used to discard duplicate messages.  For the stream with streamId different from STREAMID_NONE, the sequenceNr imposes an order. Messages within a stream shall not be delivered out of order. In addition duplicate messages shall also be discarded. Addition and comparison of sequence numbers shall use Serial Number Arithmetic as defined by [IETF RFC-1982] with SERIAL_BITS set to 16. This implies that the maximum number of outstanding messages for a specific client session stream is limited to 2^15, that is 32768. The sequenceNr shall be encoded using little endian format. 9.4.2.4 clientKey The clientKey uniquely identifies and authenticates an XRCEClient to the XRCEAgent. The clientKey shall be present on the Header if the sessionId is between 0 and 127. See clause 9.4.2.1:  If the clientKey is present, it shall contain the ClientKey associated with the XRCEClient.  If the clientKey is not present, the XRCEAgent shall be able to derive the ClientKey associated with the XRCEClient from the source address of the message (see clause 9.2). This means that the ClientKey has either been pre-configured on the XRCEAgent for that particular source address, or else it has been exchanged as part of the session establishment, see clause 8.6.2.1. Any exchange if the clientKey is protected by the security mechanisms provided by the XRCE transport. These security mechanisms are transport specific and may involve a pairing of each device with the agent or some initial handshake used to establish a secure transport connection. The specific transport security mechanisms are outside the scope of this specification. 9.4.3 Submessage Structure Following the message header there shall be one or more Submessages. A Submessage shall be composed of a submessage header and a payload. 0 4 8 16 24 31 +-------+-------+----------------+----------------+----------------+ | submessageHeader (4 Bytes) | +---------------+----------------+----------------+----------------+ ~ payload (up to to 32KB) ~ +---------------+----------------+----------------+----------------+ The ability to place multiple of Submessages within a single message reduces bandwidth by enabling multiple resources to be operated on with a single message. Submessages shall start at an offset that is a multiple of 4 relative to the beginning of the Message. This means that additional padding may be added between the end of a submessage and the beginning of the next submessage. 9.4.4 Submessage Header Every Submessage shall start with a Submessage header. The Submessage Header shall be structured as follows:
  • 42. 36 DDS XRCE Revised Submission 0 4 8 16 24 31 +-------+-------+----------------+----------------+----------------+ | submessageId | flags | submessageLength | +-------+-------+----------------+----------------+----------------+ 9.4.4.1 submessageId The submessageId identifies the kind of Submessage. The kinds of sub-messages are defined in 9.4.5. 9.4.4.2 flags The flags field contains information about the content of the Submessage. Bit 0, the ‘Endianness’ bit, indicates the endianness used to encode the submessage header and payload. If the Endianess bit is set to 0 the encoding shall be big endian and otherwise little endian. The flags field for all submessage kinds shall have the Endianness bit. Specific submessage kinds may define additional flag bits. 9.4.4.3 submessageLength The submessageLength indicates the length of the Submessage (excluding the Submessage header). The submessageLength shall be encoded using little endian format, independent of value of the flags. 9.4.4.4 payload The payload contains information specific to the submessage whose format depends on the kind of submessage identified by the submessageId. The definition of the payload shall use the data types defined in clause 8.5. See clause 9.4.5 and its subclauses. 9.4.5 Submessages DDS-XRCE defines the 13 kinds of Submessages shown in the figure below: Figure 7 — DDS-XRCE submessages classSubmessages DDSXRCE::Submessage DDSXRCE:: Submessage:: CREATE DDSXRCE:: Submessage:: GET_INFO DDSXRCE:: Submessage:: DELETE DDSXRCE:: Submessage::INFO DDSXRCE:: Submessage:: STATUS DDSXRCE:: Submessage:: ACKNACK DDSXRCE:: Submessage:: HEARTBEAT DDSXRCE::Submessage:: SubmessageHeader - submessageId: byte - flags: byte - submessageLength: short DDSXRCE:: Submessage:: DATA DDSXRCE:: Submessage:: FRAGMENT DDSXRCE:: Submessage:: READ_DATA DDSXRCE:: Submessage:: WRITE_DATA DDSXRCE:: Submessage:: RESET DDSXRCE:: Submessage:: CREATE_CLIENT 1
  • 43. DDS-XRCE, Revised Submission 37 Each submessage is identified by the submessageId. Some submessages may only be sent in one direction (e.g. only XRCEClient to XRCEAgent or only XRCEAgent to XRCEClient) whereas others are bi-directional. Table 9 -- SubmesageId values SubmessageId Value Note CREATE_CLIENT 0 Client to Agent. CREATE 1 Client to Agent. GET_INFO 2 Client to Agent. DELETE 3 Client to Agent. STATUS 4 Agent to Client; typically in response to CREATE, UPDATE or DELETE. Contains information about the status of an Xrce object. INFO 5 Agent to Client. Typically sent in response to a GET_INFO. Contains detailed information about an Xrce: Object. WRITE_DATA 6 Client to Agent. Used to write data using a Xrce::DataWriter. READ_DATA 7 Client to Agent. Used to read data using a Xrce::DataReader. DATA 8 Agent to Client in response to a READ_DATA provides data received by a Xrce::DataReader. ACKNACK 9 Bi-directional. HEARTBEAT 10 Bi-directional. RESET 11 Bi-directional. FRAGMENT 12 Bi-directional FRAGMENT_END 13 Bi-directional 9.4.5.1 CREATE_CLIENT The CREATE_CLIENT submessage is sent by the XRCEClient to create a DDSXRCE::ProxyClient. Reception of this sub-message shall result in the XRCEAgent calling the create_client operation on the DDSXRCE::Root object, see 8.6.2.1. The parameters to this operation are obtained from the sub-message header flags and payload. The XRCEAgent shall send a STATUS message in response to this message, see 9.4.5.4. 9.4.5.1.1 payload The payload shall contain the XCDR representation of the CREATE_Payload object below:
  • 44. 38 DDS XRCE Revised Submission @extensibility(FINAL) struct CREATE_Payload : BaseObjectRequest { OBJK_CLIENT_Representation object_representation; }; 9.4.5.2 CREATE The CREATE submessage is sent by the XRCEClient to create a DDSXRCE Object. An example is creating an DDSXRCE:DataWriter with a QoS profile. Reception of this sub-message shall result in the XRCEAgent calling the create operation on the DDSXRCE::ProxyClient object, see 8.6.3.1. The parameters to this operation are obtained from the sub-message header flags and payload. The XRCEAgent shall send a STATUS sub-message in response to this message, see 9.4.5.4. 9.4.5.2.1 flags The create submessage defines two additional flag bits: Bit 1, the ‘Reuse’ bit, encodes the value of the CreationMode reuse field. Bit 2, the ‘Replace’ bit, encodes the value of the CreationMode replace field. These flag bits modify the behavior of the Agent receiving the CREATE message. See clause 8.6.3.1. 9.4.5.2.2 payload The payload shall contain the XCDR representation of the CREATE_Payload object below. @extensibility(FINAL) struct CREATE_Payload : BaseObjectRequest { ObjectVariant object_representation; }; 9.4.5.3 DELETE This submessage is sent by the XRCEClient to delete either a DDSXRCE Object. An example is deleting a DDSXRCE:ProxyClient or a DDSXRCE:DataWriter. Reception of this sub-message shall result in the XRCEAgent calling either the delete_client operation on the DDSXRCE::Root (see 8.6.2.2), or else the delete operation on the DDSXRCE::ProxyClient object (see 8.6.3.4). If the ObjectVariant contained within the payload has ObjectKind set to OBJK_CLIENT, then the XRCEAgent shall call the delete_client operation. Otherwise it shall call the delete operation. The parameters to the delete_client or the delete operation are obtained from the payload. The XRCEAgent shall send a STATUS sub-message in response to this message, see 9.4.5.4. 9.4.5.3.1 payload The payload shall contain the XCDR representation of the DELETE_RESOURCE_Payload object below. @extensibility(FINAL) struct DELETE_RESOURCE_Payload : BaseObjectRequest {
  • 45. DDS-XRCE, Revised Submission 39 }; 9.4.5.4 STATUS The STATUS submessage is sent by the XRCEAgent in response to a CREATE_CLIENT, CREATE or DELETE submessage. The submessage contains the returnStatus to the operation that was triggered by the corresponding request message. For example if the request message was a CREATE_CLIENT, the STATUS payload shall contain the returnStatus to the create_client operation. 9.4.5.4.1 payload The payload shall contain the XCDR representation of the RESOURCE_STATUS_Payload object below. The request_id and object_id within the RESOURCE_STATUS_Payload shall match the identically named fields in the corresponding request message. @extensibility(FINAL) struct RESOURCE_STATUS_Payload : BaseObjectReply { }; 9.4.5.5 GET_INFO This submessage is sent by the XRCEClient to get information about a resource. Reception of this sub-message shall result in the XRCEAgent calling the get_info operation on the DDSXRCE::ProxyClient object (see 8.6.3.3). The parameters to this operation are obtained from the payload. The XRCEAgent shall send a INFO sub-message in response to this message, see 9.4.5.4. 9.4.5.5.1 payload The payload shall contain the XCDR representation of the GET_INFO_Payload object below. @extensibility(FINAL) struct GET_INFO_Payload : BaseObjectRequest { InfoMask info_mask; }; 9.4.5.6 INFO This submessage is sent by the XRCEAgent to the XRCEClient in response to a GET_INFO message. The submessage contains the returnStatus and output parameters of the get_info operation that was triggered by the corresponding request message. 9.4.5.6.1 payload The payload shall contain the XCDR representation of the INFO_Payload object below. The request_id and object_id within the RESOURCE_STATUS_Payload shall match the identically named fields in the corresponding GET_INFO message. @extensibility(FINAL) struct INFO_Payload : BaseObjectReply {
  • 46. 40 DDS XRCE Revised Submission ActivityInfo activity; ObjectVariant config; }; 9.4.5.7 READ_DATA This submessage is used by the XRCEClient to initiate a reception (read) of cached data from a DDSXRCE::DataReader object within the XRCEAgent. Reception of this sub-message shall result in the XRCEAgent calling the read operation on a DDSXRCE::DataReader object (see 8.6.5.1). The parameters to this operation are obtained from the payload. The XRCEAgent shall one or more DATA sub-messages in response to this message, see 9.4.5.8. The related Xrce::DataReader is identified by the object_id field in the payload. After reception of this message the XRCEAgent will “stream” the data to the client until either the “end criteria” specified in the payload read_specification is attained or else an explicit CANCEL_READ message is received from the client. The READ_DATA operation allows a XRCEClient to control when data can be sent by the XRCEAgent so that the Agent does not unnecessarily wake up the client during its sleep cycle. 9.4.5.7.1 payload The payload shall contain the XCDR representation of the READ_DATA_Payload object below. @extensibility(FINAL) struct READ_DATA_Payload : BaseObjectRequest { ReadSpecification read_specification; }; 9.4.5.8 DATA This submessage is sent by the XRCEAgent to the XRCEClient in response to a READ_DATA message. The submessage contains the returnStatus and output parameters of the read operation on the DDSXRCE::DataReader that was triggered by the READ_DATA message. A single READ_DATA message can result on multiple, possible an open-ended sequence, of DATA submessages sent as a response by the XRCEAgent. The DATA messages will continue to be sent until the terminating conditions on the CONFIG_READ operation are reached, or until it is explicitly cancelled. The request_id and object_id within the DATA payload shall match the identically named fields in the corresponding READ_DATA message. 9.4.5.8.1 payload The format the payload depends on the DataFormat of the ReadSpecification for the READ_DATA request. There are four possible formats:  DATA_Payload_Data. This format shall be used when the corresponding ReadSpecification had DataFormat set to the value FORMAT_DATA.  DATA_Payload_Sample This format shall be used when the corresponding ReadSpecification had DataFormat set to the value FORMAT_SAMPLE.
  • 47. DDS-XRCE, Revised Submission 41  DATA_Payload_DataSeq. This format shall be used when the corresponding ReadSpecification had DataFormat set to the value FORMAT_DATA_SEQ.  DATA_Payload_SampleSeq. This format shall be used when the corresponding ReadSpecification had DataFormat set to the value FORMAT_SAMPLE_SEQ.  DATA_Payload_PackedSamples. This format shall be used when the corresponding ReadSpecification had DataFormat set to the value FORMAT_PACKED_SAMPLES.  For each of these formats the payload shall contain the XCDR representation of the equally named structure defined in the IDL below. @extensibility(FINAL) struct DATA_Payload_Data : BaseObjectReply { SampleData data; }; @extensibility(FINAL) struct DATA_Payload_Sample : BaseObjectReply { Sample sample; @extensibility(FINAL) struct DATA_Payload_DataSeq : BaseObjectReply { sequence<SampleData> data_seq; }; @extensibility(FINAL) struct DATA_Payload_SampleSeq : BaseObjectReply { sequence<Sample> sample_seq; }; @extensibility(FINAL) struct DATA_Payload_PackedSamples : BaseObjectReply { PackedSamples packed_samples; };
  • 48. 42 DDS XRCE Revised Submission All the DATA payload representation derive from BaseObjectReply. The XRCEClient may use the request_id and object_id of in the BaseObjectReply to locate the corresponding READ_DATA message and determine the DataFormat of the ReadSpecification specified in the request. As specified in 9.4.5.9 WRITE_DATA This submessage is used by the XRCEClient to write data using a DDSXRCE::DataWriter inside the XRCEAgent. Reception of this sub-message shall result in the XRCEAgent calling the write operation on a DDSXRCE::DataWriter object (see 8.6.4.1). The parameters to this operation are obtained from the payload. The related DDSXRCE::DataWriter is identified by the object_id field in the payload. 9.4.5.9.1 payload The payload shall contain the XCDR representation of the WRITE_DATA_Payload object below. struct WRITE_DATA_Payload { DataRepresentation data_to_write; }; 9.4.5.10 ACKNACK This Submessage is used to enable a transport independent reliability protocol to be implemented. This specification does not limit a session to use a particular type of transport. If a session transport is able to reliably send messages in case of disconnection or a wakeup/sleep cycle then these messages may not be required. If these Submessages are used, this specification does not dictate how reliable a session shall be. However, in general it is expected that it is the Client that initiates any synchronization. This is because a Client may not be continually available as it goes on sleep cycles. The ACKNACK message is directed to the same session and stream indicated in the Message header. For this reason it does not have a objectId. 9.4.5.10.1 payload The ACKNACK submessage payload contains a information about the state of the session and stream. struct ACKNACK_Payload { short firstUnackedSeqNr; octet[2] nackBitmap; }; The firstUnackedSeqNr indicates that all sequence numbers up to but not including it has been received. The nackBitmap indicates missing sequence numbers, starting from firstUnackedSequenceNr.