OpenJAUS SDK v4.1 Change Log

Release Date: January 2014

  • Service Set: Added AS6040 HMI Service Set
  • Improvement: Removed all isControllingXXXClient condition callback functions.
    *IMPORTANT* Be sure to delete any isControlling…Client functions from your code if you have overridden them for implementation. We are now just using one isControllingClient function which is implemented in the Core components at the access control level.
  • Feature: Added support for On-Change Events. To use this feature, just publish the message as usual, then call the notifyChanged method when you wish subscribing components to be sent updates. You must pass in the corresponding command code id of the published message to the notifyChanged() method.
  • Feature: Added support for large message handling with JTCP. This improves robustness when trying to assemble large messages through a lossy data link. To use this feature, enable tcp support in both sending and receiving applications with the config file option: “EnableTCP=true” Then set the must arrive flag on your outgoing message to true: “myMessage.setMustArrive(true);”
  • Feature: Added toString() and << operator support for all JAUS Message classes Output format is: “SpecificMessageName [Hex Command Code Number]”
  • Feature: Removed Time and Date BitFields from all messages and replaced with model::fields::TimeStamp and model::fields::DateStamp classes. This allows consolidation of time and date functionality in one place. Added typedef information to classes which previously used the per-package BitField implementations of TimeStamp and DateStamp to reduce errors for end users.
  • Feature: Added command line option to load user specified named configuration file. Syntax format is: “–ojconf=MyConfFileName.conf” Note, this will NOT automatically create the file, you must rename an existing conf file. To automatically create a conf file, just run your component application without the –ojconf option and exit it (cleanly without crashing), a default conf file will automatically be generated in your working directory.
  • Feature: MAX_VALUE and MIN_VALUE of all scaled integer message fields are now public members that can be accessed for reference and bounds checking.
  • Feature: All set(value) methods for scaled integer message fields now return bool to indicate success. The return value is false if a value that is out of the allowed MIN and MAX is passed in.
  • Feature: Allow user to set the max supported periodic rate for published messages. Use the publish(uint16 messageId, double maximumRate_Hz, model::ConnectionType type) method The maximumRate_Hz and type arguments are optional. Their default values are -1 (infinity) and ALL_EVENTS (periodic and on-change), respectively. The publish(Message* msg) is now deprecated.
  • Feature: Added Discovery Client Service. Use the “EnableDiscoveryServer” option in the config file to determine if the Discovery Server behavior is enabled.
  • Feature: Added Dynamic Addressing using Node 1 Heartbeats. For use in the AEODRS system architecture, this dynamic JAUS Addressing technique uses static Node and Component IDs with the Subsystem ID being assigned at runtime via Report Heartbeat messages sent by Node 1 using broadcast.
  • Feature: Access Control Timeout. Use the “AccessControlTimeout_seconds” option in the config file to control the number of seconds for timeout of control. The controlling component is automatically removed unless a Request Control message is received within the specified number of seconds. The default value of 0 disables this feature.
  • Feature: ARM Cross-Complier support. Cross compiling for ARM processors is now supported using the Sourcery CodeBench toolchain in Windows. (http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/) To create makefiles for ARM compilation, use the “premake4 arm” command from the Windows command line then “cs-make”. ARM binaries should be compiled statically for portability.
  • Bug Fix: openjaus::system::Application::getChar() was not blocking when run in background mode in Linux, which caused busy loop.
  • Bug Fix: Timer objects previously were not stopped in Windows OS after being stopped, leaving unnecessary background work remaining.
  • Bug Fix: Messages are now properly passed through a priority queue based on the JAUS priority number in the message header.
  • Bug Fix: Projects now build correctly in VS2010 and beyond in Release mode (fixed issue with premake project generation)
  • Bug Fix: Removed unused automatically generated fields() method from message classes
  • Bug Fix: Config files now load correctly when executing from path in Windows which contains spaces in the folder or file name.
  • Bug Fix: Added missing Management Service isControllingClient guards to Standby / Ready transitions.
  • Bug Fix: Changed SIO_UDP_CONNRESET option in Windows to better handle “ICMP port unreachable” error when destination UDP socket is closed.
  • Bug Fix: Fixed bug in GlobalWaypointDriver (wrong guard condition for SetGlobalWaypoint)
  • Removed generated MessageID[string] from Trigger runtime code, should only use the id[uint16] member
  • Changed getTimestamp() method in Triggers to getTriggerTimestamp_sec() to remove confusion with messages which contain a TimeStamp field in the message