AstuteDDS Documentation¶
Welcome to the AstuteDDS documentation. AstuteDDS is a comprehensive C++20 implementation of the Data Distribution Service (DDS) DCPS API with full DDSI-RTPS 2.5 and X-Types 1.3 support, designed for military and embedded applications.
What is AstuteDDS?¶
AstuteDDS provides a static library (libastutedds.a) implementing:
- DDSI-RTPS 2.5: Wire protocol interoperability with OpenDDS, Fast DDS, and Cyclone DDS
- DDS-XTypes 1.3: Complete type system with TypeObject/TypeIdentifier, assignability, and dynamic types
- XCDR1/XCDR2: Full serialization support with delimited headers and mutable types
- IDL 4.2 Compiler: Code generation from IDL to C++ with type support
- GVA Profile: Support for UK Def Stan 23-009 (Generic Vehicle Architecture)
- DDS Security: Authentication, access control, and encryption (optional)
Key Features¶
- ✅ Standards Compliant: Implements OMG DDS specifications
- ✅ Interoperable: Works with other DDS implementations (OpenDDS, Fast DDS, Cyclone DDS)
- ✅ Modern C++: Uses C++20 features for type safety and performance
- ✅ Static Library: Single library for easy deployment
- ✅ Header-Only IDL: Generated code is header-only for simplicity
- ✅ Security Built-in: Optional DDS Security plugin support
Quick Links¶
- Getting Started - Learn the basics
- Shapes Demo - Run the interactive shapes demo
- QoS Guide - Configure Quality of Service
- IDL Compiler - Generate C++ from IDL
- API Reference - Detailed API documentation
Project Status¶
All major milestones complete:
- ✅ Milestone 1: RTPS & CDR foundations
- ✅ Milestone 2: IDL→C++ compiler with XCDR1
- ✅ Milestone 3: Reliability & XCDR2
- ✅ Milestone 4: X-Types Complete
- ✅ Milestone 5: Security
Example: Hello World¶
#include <astutedds/dcps/domain_participant.hpp>
#include <astutedds/dcps/topic.hpp>
#include <astutedds/dcps/publisher.hpp>
#include <astutedds/dcps/data_writer.hpp>
// Include generated type support from IDL
#include "HelloWorld_TypeSupport.hpp"
int main() {
// Create domain participant
auto participant = create_participant(0);
// Create topic
auto topic = participant->create_topic<HelloWorld>(
"HelloWorldTopic",
astutedds::dcps::TOPIC_QOS_DEFAULT
);
// Create publisher and data writer
auto publisher = participant->create_publisher();
auto writer = publisher->create_datawriter(topic);
// Write data
HelloWorld msg;
msg.message = "Hello, DDS World!";
writer->write(msg);
return 0;
}
Documentation Structure¶
This documentation is organized into several sections:
- Getting Started: Installation, building, and basic concepts
- DDS Concepts: Core DDS principles and terminology
- Guides: Step-by-step tutorials for common tasks
- API Reference: Detailed API documentation
- Examples: Code examples and use cases
- About: Architecture, specifications, and project information
Need Help?¶
- Browse the Examples
- Read the Getting Started Guide
- Open an issue on GitHub
License¶
AstuteDDS is open source software. See the License page for details.