Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[3.0.0] - 2026-06-11
Added
nameproperty toNodeclass- A
DefaultNodethat owns aComponentwhen aNodeis not defined openjaus::indentfunction toopenjaus/system/String.h- Ability to disable the built-in
DiscoveryClientfunctionality through the use of{Component}.DiscoveryClient.Enabledkey - Initial support for adding clients to a Component
- Clients implement the
IServiceClientinterface AbstractServiceClientimplementsIServiceClientand uses theIClientEventinterface to indicate a client event
- Clients implement the
IComponentinterface to be used by clients- The following methods to
ScaledIntegerabstract base class. Changes impact allScaledIntegerderived types.getMinValuemethod to retrieve the minimum valid value of aScaledIntegergetMaxValuemethod to retrieve the maximum valid value of aScaledIntegergetScaleFactormethod to retrieve the scale factor used to convert aScaledIntegerfrom its real value to its scale value and vice versasetDoublemethod to set the value of a scaled integer using a double valueasDoublemethod to get the value of a scaled integer as a double valueoperator double()method to allow conversion of a scaled integer type to its double value
Component::start()method to replaceComponent::run()- Having start and stop methods seem more common that run and stop
openjaus::system::FixedCapacityQueueclass which only keeps the last N items pushed- When item N + 1 is pushed to the queue, item 0 is lost, otherwise it works like a standard queue
- Additional getter methods to
TimerandSimpleWatchdogclasses to retrieve the current configuration openjaus::model::AbstractAddressProviderclass as base class for custom address providers- Support for registering multiple custom address providers
Removed
- [BREAKING] Remove
SystemTree::addOnLocalComponentAddCallbackmethod - [BREAKING] Remove
SystemTree::removeOnLocalComponentAddCallbackmethod
Changed
- [BREAKING] Rename protected
Component::setAddressProvidertoComponent::registerAddressProviderand change input parameters - Have
Componentobjects point to their owningNode - Update to CMake 3.10 as minimum version
- Update to C++ 14
Deprecated
- Multiple methods on the
ScaledIntegerabstract base class. Changes impact allScaledIntegerderived types.setValuemethod; useScaledInteger::setDoubleinsteadgetValuemethod; useScaledInteger::asDoubleinstead
Component::run(); useComponent::start()instead
Fixed
- Minor issues with logging macros to fix output
[2.0.2] - 2025-10-09
Fixed
- Bug in checking
openjaus::model::Connectionequality
Added
Message::isEqual(const Message* const)method to allow direct comparison between aMessageinstance and aMessagepointer.
[2.0.1] - 2025-07-16
Fixed
- Bug in
StateMachinefor transitions added to a State that only contains a nested default state
[2.0.0] - 2024-07-30
Added
IAddressProviderinterface to allow for custom addressing mechanismsIIdBrokerinterface to support runtime configuration of ID assignment strategyAbstractIdBrokerbase class which encapsulates common ID assignment functionalityStaticIdBrokerwhich allows for static assignment of an IDInternalIdBrokerwhich allows sharing of an ID among Components within the same processIdMediatorwhich facilitates ID exchange Component instances in the same process- Base
PresenceVectorandValueSetclasses used to derive presence vectors and value sets in messages - Support for serial and deserialization of
InternalEventderived classes
Changed
Componentto configure, start, and stop theIAddressProviderobject when necessary- [BREAKING] Rename settings keys, defaults, and constants files
- [BREAKING] Move
BUILD_KEYmacro to separatesettings.hfile - [BREAKING] Change
State::addEntryActionandState::addExitActionto take astd::functioninstead of anActionobject pointer - [BREAKING] Moved
toLocalTime(DateStamp, TimeStamp)andsecondsSinceUnixEpoch(DateStamp, TimeStamp)functions fromopenjaus/model/fields.htoopenjaus/model/TimeUtils.h
Fixed
- Bug in
StateMachineto support states with only transitions on the child default state - [BREAKING] Settings defaults and constants namespace; move to under
openjaus::settingsnamespace vs justopenjaus
Removed
- [BREAKING] Newly unused
ActionandActionImplclasses/files - [BREAKING] Removed numerous classes related to message fields
- These classes were intended for internal use only but are marked as breaking in case they were inappropriately used by clients
- [BREAKING] Removed
openjaus/model/fields.hfile - [BREAKING] Removed
createMessageByNamemethod fromIMessageFactoryinterface
[1.0.0] - 2023-01-27
Added
- Initial release -- code split from org.openjaus.sdk.cpp v8.0.0
- virtual toXml() method to the model::Trigger class which is overridden by all derived Messages and InternalEvents
- removeMessageCallback() method to model::StateMachine and core_v1_1::services::Transport to allow removing of a callback registered using addMessageCallback()
Changed
- Add getOjConfigFilePath() to system::Application class to get the path to the ojconf file based on the command-line arguments
Deprecated
- openjaus::model::SystemTree* Component::getSystemTree() const;
Fixed
- Incorrect assertion in DatagramSocket::reuseAddress which caused a SocketException to be thrown on success
- Using BroadcastMethod=BOTH did not enable use of multicast
- Boolean message field type was packed incorrectly for BOOLEAN_FALSE