Below we outline the steps that may be necessary to when migrating from SDK v4.3.x to v5.0.0.


Required Updates


  1. Use the updated JSON API
    • The JSON API is slightly different from the API provided in libjson. If you were using JSON functionality from libjson directly you will need to update your code to use the updated API. You cannot use libjson in conjunction with SDK v5.0.0. See JSON cpp project to understand the updated API.
  2. Replace use of Confirm<Type>SensorConfiguration with ConfirmSensorConfiguration
    • The following message classes were removed as they were redefinitions/duplicates of the same message and replaced with the ConfirmSensorConfiguration message class.
      • ConfirmAnaologVideoSensorConfiguration
      • ConfirmDigitalVideoSensorConfiguration
      • ConfirmRangeSensorSensorConfiguration
      • ConfirmStillImageSensorConfiguration
      • ConfirmVisualSensorConfiguration
  3. Use the updated openjaus::system::Buffer API
    • The previous openjaus::system::Buffer API was difficult to understand and easy to use incorrectly. To address this issue we have completely replaced the previous API with a new Reader/Writer based API.
    • Use this guide: Using the openjaus::system::Buffer class to update to the new API.
  4. Convert existing v4.3.x configuration files (*.conf) to the the new configuration file format (*.ojconf) using the Configuration Editor tool
    • Select File --> Import to import an existing *.conf file.
      • For an IOP based application, select "IOP Configuration" for the Configuration File Type.
    • Verify the settings are as expected.
    • Remove old, unused settings under the Additional Settings tab.
    • Save the file with the new *.ojconf file extension.



Strongly Recommended Updates


  1. Use the updated the openjaus::system::Timer API

    • The following methods have been deprecated and will be removed in a future release:

      • void reset(int milliseconds)
        • Alternatives:
          • void changeInterval_ms(int value) : Restart the timer and use the specified interval. Duplicates the behavior of the deprecated method. 
          • void reset() :  Restart the timer with the current interval. Timer must already be running.
      • void setInterval(int milliseconds)
        • Alernatives:
          • void start(int interval_ms) : Start the timer with the specified interval. Duplicates the behavior of the deprecated method. 
          • void setInterval_ms(int value) : Set the interval of the timer. The timer must be currently stopped and Timer::start() must be called sometime later to start the timer. 



Optional (but Recommended) Updates


  1. Change header paths and namespaces
    • The service set version was added to the include folder names, and namespaces.
      • Examples:
        • #include <openjaus/core/...>" --> #include <openjaus/core_v1_1/...>
        • openjaus::core::ReportHeartbeatPulse --> openjaus::core_v1_1::ReportHeartbeatPulse
    • Existing paths, and namespaces will continue to work but will generate warnings during compilation to indicate the old header paths and/or namespaces being used. We recommend that you update these items in your existing code to remove these warning.
  2. Update referenced openjaus library names in the .lua files
    • The service set version was added to the library names.
      • Example:
        • libopenjaus-core --> libopenjaus-core_v1_1
    • Any references to the old library names in your .lua files will be automatically updated to the new name as indicated below. When running premake you will receive messages indicating that the referenced names are being updated. We recommend that you update your .lua files to the new names to remove these messages.
      • core --> core_v1_1
      • mobility --> mobility_v1_0
      • manipulator --> manipulator_v1_0
      • environment --> environment_v1_0
      • ugv --> ugv_v1_0
  3. Remove reference to libjson in .lua files
    • JSON file support is now integrated into the SDK and it is no longer required to obtain, compile, and link against the separate libjson library.
    • When running premake you will receive messages indicating that references to libjson were automatically removed. We recommend you update your .lua files to remove these references and eliminate these messages.