Skip to content

Upgrading from SDK 2024.x to 2026.x

This guide provides instructions on upgrading an existing SDK 2024.x based project to SDK 2026.x.

Inherited getXxxMessage Methods

What Changed

  • The abstract getXxxMessage methods defined by services to generate the appropriate response message for incoming message of internal event was changed to return a std::unique_ptr instead of a message instance.

How to Migrate

  • Update all getXxxMessage methods to return a std::unique_ptr.

Example

In 2024.x

// .h file
openjaus::mobility_v1_1::globalposesensor::ReportGlobalPose getReportGlobalPose(openjaus::mobility_v1_1::globalposesensor::QueryGlobalPose* queryGlobalPose) override;

// .cpp file
openjaus::mobility_v1_1::globalposesensor::ReportGlobalPose MyComponent::getReportGlobalPose(openjaus::mobility_v1_1::globalposesensor::QueryGlobalPose* queryGlobalPose)
{
    openjaus::mobility_v1_1::globalposesensor::ReportGlobalPose reportGlobalPose;

    // Populate outgoing ReportGlobalPose message based on incoming QueryGlobalPose message and current data

    return reportGlobalPose;
}

In 2026.x

// .h file
std::unique_ptr<openjaus::mobility_v1_1::globalposesensor::ReportGlobalPose> getReportGlobalPose(openjaus::mobility_v1_1::globalposesensor::QueryGlobalPose* queryGlobalPose) override;

// .cpp file
std::unique_ptr<openjaus::mobility_v1_1::globalposesensor::ReportGlobalPose> MyComponent::getReportGlobalPose(openjaus::mobility_v1_1::globalposesensor::QueryGlobalPose* queryGlobalPose)
{
    auto reportGlobalPose = std::make_unique<openjaus::mobility_v1_1::globalposesensor::ReportGlobalPose>();

    // Populate outgoing std::unique_ptr<ReportGlobalPose> message based on incoming QueryGlobalPose message and current data

    // If a ReportGlobalPose message cannot be populated with valid data then returning a nullptr will skip sending the message. 
    return reportGlobalPose;
}

IOP Addressing Support

What Changed

  • The method used to attach the IOP addressing supported to a Component has changed from Component::setAddressProvider to Component::registerAddressProvider.
  • The parameter passed to Component::registerAddressProvider is different from the paremeter previously passed to Component::setAddressProvider.

How to Migrate

  • Replace the use of Component::setAddressProvider with Component::registerAddressProvider.
  • Replace the raw pointer provided to Component::setAddressProvider with a std::shared_ptr<openjaus::iop_v7::AddressProvider> instance.

Example

In 2024.x

// .h file
#include <openjaus/Components/Base.h>
#include <openjaus/iop_v6/AddressProvider.h>

class MyComponent :
    public virtual openjaus::mobility_v1_1::services::GlobalPoseSensor,
    public openjaus::components::Base

public:
    MyComponent(const std::string& name);
    ~MyComponent() override = default;

    // ...

private:
    openjaus::iop_v6::AddressProvider m_addressProvider;
}

// .cpp file
MyComponent::MyComponent(const std::string& name) :
    Base(name),
    m_addressProvider(this)
{
    Component::setAddressProvider(&m_addressProvider);

    // ...
}

In 2026.x

// .cpp file
#include <openjaus/iop_v7/AddressProvider.h>

MyComponent::MyComponent(const std::string& name) :
    Base(name),
    m_addressProvider(this)
{
    Component::registerAddressProvider(std::make_shared<openjaus::iop_v7::AddressProvider>(this));

    // ...
}