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

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?

License

AstuteDDS is open source software. See the License page for details.