Skip to content

Addressing

The SAE JAUS standard does not define a mechanism for assigning the Subsystem, Node, and Components IDs that constitute a JAUS Address1. As such, the most common approach is to statically assign these IDs in code or using configuration files.

IOP has attempted to address this shortcoming by defining a set of additional optional services that can be used to dynamically assign these IDs. The relevant IOP attributes are:

  • Centralized Subsystem Assignment
  • Subsystem ID Propagation
  • Dynamic Node ID Assignment

The OpenJAUS SDK provides support for these IOP mechanisms as part of the org.openjaus.iop-*.cpp packages. When support is enabled in a Component, functionality is configured via the OpenJAUS configuration file.

To enable support, instantiate the iop_v6::AddressProvider and attach it to the Component using the setAddressProvider method.

Note

The AddressProvider class and setAddressProvider method replaces the use of the IOP specific Component base classes (IopBase, IopEventsBase, and IopManaged).

Unsure how to create a Component? See the Tutorial.

Example

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

class MyComponent :
    public openjaus::core::Base
{
public:
    MyComponent();
    ~MyComponent() override;

    // ...

private:
    openjaus::iop_v6::AddressProvider m_addressProvider;
};
1
2
3
4
5
6
7
8
9
// .cpp file

MyComponent::MyComponent() :
    m_addressProvider(this)
{
    setAddressProvider(&m_addressProvider);

    // ...
}