WSF Core 2.5 - 11 Oct 2019

Visit the AFSIM 2.5 Release Page on DI2E (Access Controlled) for more information and resources related to this release.

Release Dates

  • WSF Core 2.5.3 - 03 Aug 2020

  • WSF Core 2.5.2 - 06 May 2020

  • WSF Core 2.5.1 - 12 Nov 2019

  • WSF Core 2.5.0 - 11 Oct 2019

General

  • (2.5.1) Corrected potential security vulnerabilities and other issues identified through static code analysis, including buffer overflows, insecure randomness, unreleased resources, use after free, memory leaks, and type mismatches.

  • Added output warnings for comm methods called from an improper context prior to comm framework initialization. (Issue #1546)

  • The previously deprecated doe_worker and doe_start tools have been removed from the distribution. A new Python-based matrix execution script, Chugger, is available under analyst tools, and serves as an alternative to PIANO and other DoE tools. (Issue #1586)

  • AFSIM installers have been updated to use a platform native installation location and a more conventional naming scheme on Linux. (ELSZ #125)

  • The bridge command has been removed from comm objects. This functionality is now available for all comm interfaces assigned to the same router. (Issue #1310)

  • Multiple comm and message observers have had their signatures modified to remove redundant parameters and ease use. See observer for details. (Issue #1310)

  • Routers no longer have commands available to designate truth vs. perception modes. The router_protocol now models truth or perception based on its implementation, which the user can control by adding or removing such protocols. (Issue #1310)

  • The WSF_COMM_PROTOCOL_IGMP no longer has multicast level designation commands. This is now set internally in AFSIM based on the presence or absence of required multicasting protocols. (Issue #1310)

Known Issues

Corrections

  • (2.5.3) Corrected the position of waypoints within a route when both the offset and transform_route commands were used. (AFSIM-169)

  • (2.5.3) Corrected a bug where sending a message between the same WSF_SCRIPT_PROCESSOR multiple times at the same simulation time could cause an invalid MESSAGE variable. (AFSIM-257)

  • (2.5.3) Corrected an issue with WsfPlatform.GroundRangeTo producing different results for zero and non-zero altitudes. (Issue #2307)

  • (2.5.2) Corrected an issue with the sector_scan sensor scheduler in which scan rates were incorrectly calculated in some cases, resulting in asynchronous behavior between sectors.

  • (2.5.2) Corrected an issue with missing header data for csv_event_output regarding MESSAGE_HOP. (Issue #2177)

  • (2.5.2) Corrected a problem where dead reckoning algorithms were providing inconsistent platform location updates in realtime, event-stepped simulations, leading to periodic relative location errors among platforms. (Issue #2111)

  • (2.5.2) Corrected missing router events from csv_event_output. (Issue #2173)

  • (2.5.2) Corrected an issue in which, under certain circumstances, an invalid reference may be provided within a script context, resulting in a script exception when the reference is used. (Issue #2097)

  • (2.5.2) Corrected a crash when a platform with a route mover is commanded to ReturnToRoute and was never given an initial route (default route). (ELSZ #291)

  • (2.5.2) Modified the calculation of covariance ellipsoid axes to ensure the length of the major axis for an axis-aligned ellipse is equal to two times the standard deviation. The following script methods are affected: WsfCovariance.MajorAxis, Ellipsoid.SemiAxisSide and Ellipsoid.SemiAxisUp. (ELSZ #294)

  • (2.5.2) Corrected an issue with missing platform part commands on the router object. These commands are now available for the router object, with the exception of the commands that initially disable the functionality of the router. (Issue #1948)

  • (2.5.2) Corrected a crash that may occur when executing the simulation, with a DIS interface defined, shortly after a DIS platform is removed from the simulation. (Issue #1937)

  • (2.5.2) Corrected an issue with which external entities may erroneously and repeatedly be reported as stale in simulations recording to the event_pipe. (Issue #1930)

  • (2.5.2) Corrected a crash that could occur when using empty strings in aux_data. (Issue #1867)

  • (2.5.2) Corrected an issue with comparisons for equality (==) and inequality (!=) between two instantiations of a script_struct. (ELSZ #250)

  • (2.5.2) Corrected problems with fusion of track emitter and signal data. (Issue #1741)

  • (2.5.1) Corrected an issue where command chains are not correctly updated when a platform is deleted or a new commander is assigned. (ELSZ #244)

  • (2.5.1) Corrected an issue with WSF_GEOMETRIC_SENSOR where a pd_range_table with fewer than two entries can cause crashes. Such a table now results in an input error. (ELSZ #245)

  • (2.5.1) Corrected the names of script methods WsfSensor.Xmtr and WsfSensor.XmtrCount to match the documentation.

  • Added missing scripting language documentation for the various Predefined Network Types. (Issue #1482)

  • Corrected an issue in which on_update and on_initialize2 blocks defined in the global script context were accepted as valid input but never executed. Using these commands out of context now results in an input error. (ELSZ #135)

  • Corrected an issue where the PLATFORM_ADDED event for event_output and csv_event_output was invoked upon platform initialization rather than when a platform was added to the simulation. (ELSZ #156)

  • A pre-briefed track specified with a target platform not defined prior to the track definition will now result in an input error rather than silently initializing the track location to {0, 0, 0} WCS. (Issue #1403)

  • Corrected an issue in which WSF_GEOMETRIC_SENSOR was not notifying all observers of a sensor detection attempt. (ELSZ #148)

  • Corrected an issue where the receiver angle limits check for interactions was not being set to the proper value in the event_pipe output. (ELSZ #176)

  • Corrected an issue where comm network membership specified in the network object was not being applied. (Issue #1389)

  • Corrected an issue where waypoint movers were not being constrained by minimum_speed settings. (ELSZ #211)

  • Corrected an infinite loop which could be triggered when executing a DIS platform’s sensor update events. (ELSZ #242)

  • Corrected an issue with method WsfMessage.DataTag not returning floating point values. (ELSZ #219)

  • P6DOF Ramjet/Scramjet Engines no longer burn fuel when not operating. (Issue #1331)

  • P6DOF jet engines, liquid-propellant rockets and propulsion systems now properly limit throttle setting. (Issue #1352)

  • P6DOF vehicles containing P6DOF Subobjects now exhibit correct behavior. (Issue #1527)

  • P6DOF now supports the SetLocation method. (Issue #1003)

  • (2.5.2) Corrected a problem where targeting solutions for some orbital propagators could fail, leading to a crash. (Issue #1852)

  • (2.5.2) Corrected an issue where Orbit Determination Fusion was not providing orbit determination updates as accurately as in previous versions. (Issue #2027)

  • Corrected a problem where specifying malformed two-line elements (TLEs) in an orbit block could lead to a crash. Added more checks to better identify malformed TLEs with missing lines, lines of improper length, and lines with illegal characters. (Issue #1415)

  • Corrected an issue where space domain DIS entities cause a crash. (Issue #1466)

  • Corrected a bug in which use of initial_state_lla in WSF_SPACE_MOVER was causing a crash. (ELSZ #173)

  • Corrected a problem where use of the true_anomaly and mean_anomaly inputs for space movers, not in the range of 0-360 degrees, was sometimes resulting in incorrect placement. This correction now disallows inputs outside the range of 0-360 degrees. (Issue #1557)

  • Corrected a problem in Orbit Determination Fusion for angles-only measurements, where evaluation of measurements with the same update time was causing a crash. (Issue #1623)

  • Corrected a problem in WsfSpaceMover.AddDeltaV and WsfSpaceMover.Boost that could lead to a crash when used on platforms that have not been added to the simulation. (Issue #1725)

  • Corrected an issue in which extension words transmitted with Link-16 messages were missing or corrupted. (ELSZ #76)

  • Corrected an issue in the sensor_plot application where co-located sensor and target configurations (i.e. range between sensor and target near 0) would sometimes cause an application crash.

Enhancements

  • Added the classification command which allows users to specify the classification level, caveats, and trigraphs of a scenario. Methods WsfSimulation.ClassificationString and WsfSimulation.ClassificationColor provide access via script. (ELSZ #98)

  • Implemented precise coordinate system conversions from AFSIM World Coordinate System (WCS) to Earth-Centered Inertial (ECI). The AFSIM ECI coordinate system is now the same as GCRF (Geocentric Celestial Reference Frame; this had been a true equator, true equinox of epoch system). The conversions now take into account precession, nutation, and polar offsets. New inputs for polar_offset_angles, offset of Coordinated Universal Time (UTC) from UT1 (delta_universal_time), and the offset of UTC with respect to atomic time (delta_atomic_time) are now provided to support the coordinate conversions. Another input, precession_nutation_update_interval, can be set to control the accuracy of the conversions over time. (Issue #1240)

  • Added the ability to turn on/off the interpolation of signatures that use Azimuth-Elevation Table Definition using the interpolate_tables <boolean-value> command in the signatures command block.

  • Added script methods WsfPlatform.Icon and WsfPlatform.SetIcon for getting and setting a platform icon.

  • Added the ability to specify the location of a pre-briefed track in MGRS coordinates. (Issue #1403)

  • Added new script interfaces, WsfDIS and EntityType, and method WsfPlatform.EntityType to support data retrieval for DIS entity_type mappings.

  • Added new methods WsfSensor.Xmtr and WsfComm.Xmtr to provide script access to sensor and comm transmitter(s), along with other supporting methods.

  • Added the script method WsfPlatform.ApparentAspectOf and provided a new version of WsfPlatform.RadarCrossSection that accepts the azimuth and elevation aspect angles.

  • Added a new resource message to the event_pipe used to communicate DTED resources to Mystic.

  • Added a new script method HasAuxData() on script types that are aux_data-enabled. (Issue #1518)

  • Added the ability to construct Calendar objects initialized with ISO 8601 time points, and a new method Calendar.ToStringIso8601 that returns the date and time in ISO 8601 full format. (ELSZ #180)

  • Added aux_data input commands to zones and supporting script methods to WsfZone. (Issue #1490)

  • Added the script method WsfComm.CanSendTo to aid end user updates of network state during runtime, primarily for usage with RF comms to expose EM interaction results. (Issue #1535)

  • Added command osm_traffic to simulate vehicle behavior on a predefined route_network, and WsfOSM_Traffic script methods to interact with them. (Issue #1364)

  • The communications framework was updated to add better support and fidelity for modeling efforts, particularly in regard to routers and protocols. This update includes the following enhancements: (Issue #1310)
    • The router object is now a platform part, and allows formal AFSIM types. A router type, WSF_COMM_ROUTER, is now available for use.

    • Specific protocols for routers, defined via the router_protocol command, are now formal AFSIM types and available for use.

    • Several of the previous protocol types that were associated with router capabilities have been redefined as router protocols. See Predefined Protocol Types and Predefined Router Protocol Types for more details.

    • The router has an available script class, WsfCommRouter, for scripting language support.

    • Router script observers typical of a platform part are now available. See observer for details.

    • Router event output is now available. See event_output for details.

    • Router CSV event output is now available. See csv_event_output for details.

    • The router object now has a gateway specification, to specify the interface the router uses for default message forwarding.

  • Added the script method WsfNetwork.GetMembers. (Issue #1310)

  • Added the MESSAGE_HOP event to event_output, csv_event_output and observer for comms messages received by an interface, but not destined for the interface. (Issue #1508)

  • Various model additions to the comms framework have been provided to allow dynamic updates and user script-driven control for ad-hoc emulation and modeling. (Issue #1311)
  • Added a command to the WSF_SPACE_MOVER and WSF_NORAD_SPACE_MOVER to specify the satellite designator, and updated the WsfSpaceMover.Designator method to provide script access to it. (Issue #1321) (Issue #1472)

  • Added satellite breakup modeling using WsfNASA_BreakupModel. (Issue #1340)

  • Added new space orientation types (entity_with_solar_constraint, entity_with_nadir_constraint, entity_with_orbit_plane_constraint, point_with_orbit_plane_constraint), as well as the swap_axes command to swap the pointing and constraint axes for the currently specified orientation. The WsfSpaceMover.SetOrientation method was also changed to accept a parameter of the new WsfSpaceOrientation type, created to easily configure these new types (the original version of this method, accepting a string parameter, has been deprecated). (Issue #1413)

  • Added a number of convenience methods, initial orbital elements methods, and TLE related methods to WsfSpaceMover. (Issue #1444) (Issue #1475) (Issue #1477)

  • Added a change_attitude orbital event with a corresponding WsfChangeAttitude script class. (Issue #1493)

  • P6DOF Ramjet/Scramjet Engines now accept a latch_fuel_injection flag that will maintain full thrust regardless of throttle commands. (Issue #1331)

  • P6DOF Ramjet/Scramjet Engines now allow use_proportional_throttle as an option, providing smooth throttle control rather than on/off control. (Issue #1331)

  • Added several new functions to access P6DOF data via script. (Issue #1334)

  • Station keeping for members of a formation now behave better in some cases, especially during turns that would require members to fly too fast or slow. (Issue #1523)

Development

  • (2.5.2) Relaxed the compiler version check for compatible plugins on Windows (MSVC). Only the first two digits, indicating C++ toolset major number and binary compatibility, are compared to those of the host application. (ELSZ #133)

  • (2.5.2) Corrected the source value used for WCS velocity in the UtEntity copy constructor. (ELSZ #272)

  • (2.5.1) Added the directory containing plugins to library search path for Windows to allow plugins to have dependencies on other plugins. (ELSZ #172)

  • (2.5.1) Fixed a bug in the add_wsf_doxygen_input CMake macro that prevented Doxygen from generating documentation for the files in the core/wsf/source directory. (Issue #1785)

  • (2.5.1) Corrected an issue where the computed ECI-referenced orientation of WsfArticulatedPart (UtEntityPart) was incorrect. (Issue #1829)

  • UtCalendar now provides Julian dates referenced to Coordinated Universal Time (UTC), terrestrial time (TT), Barycentric Time (TDB), as well as the standard UT1. (Issue #1240)

  • Methods involving pseudo-inertial frame conversions in UtEllipsoidalEarth (ConvertECIToECEF, ConvertVelocityECIToECEF, etc.) have been renamed from ECI to TOD (True-of-Date). (Issue #1240)

  • ECI conversions in UtEntity have been re-factored into the UtECI_Conversion class. (Issue #1240)

  • Removed struct UtDeleteObj which was used as a function object for freeing heap memory stored in STL containers. All container usages were modernized to use std::unique_ptr to conform to C++ core guidelines for resource management. (Issue #1324)

  • Class templates UtMappedList and UtStdMappedList (aliases for UtGenericMappedList), and WsfTrackListT have been updated to use std::unique_ptr instead of raw pointers to explicitly express ownership. (Issue #1324)

  • Removed legacy UtSubject/UtObserver interface for class WsfTrackManager, and updated observers to subscribe directly to callback lists within WsfTrackManager for notification of track state changes. (Issue #1325)

  • Modernized the memory management of UtCallback objects in UtCallbackHolder and template UtCallbackListN, enforcing RAII through the use of std::unique_ptr. Developers will need to verify that all usages of UtCallbackListN<...>::Connect assume ownership of the returned callback object, either by assigning to a managed pointer or by passing ownership to a UtCallbackHolder. (Issue #1371)

  • Access to the WsfScenario object from WsfSimulation and other simulation objects is now immutable (const). (Issue #1367)

  • Class WsfEventManager now uses std::unique_ptr to convey explicit ownership of the WsfEvent objects. Deprecated the delegating methods AddEvent and AddWallEvent of WsfSimulation which take raw pointers. (Issue #1409)

  • Corrected an issue with source installation where the ConfigureUnitTests module was not installing the necessary CMake modules to configure GTest. (ELSZ #163)

  • Updated UtEntity (and by derivation WsfPlatform) to be const-correct according to the semantics expected by its users, making any public accessor that is logically constant (e.g. GetLocationWCS) a const member. (Issue #1372)

  • Created a common base class WsfAuxDataEnabled from which all aux_data-enabled classes now derive, to eliminate the duplication of input processing and attribute management. Corresponding script classes now make use of new macros and a function, defined in namespace WsfScriptAuxDataUtil, for adding the supporting script methods. (Issue #1518)

  • Removed class WsfCallbackEvent and replaced usages with the WsfOneShotEvent adapter. (Issue #1421)

  • Refactored the comm initialization process for ease of maintenance and better performance. (Issue #1389)

  • Added constexpr function templates UtMath::NearlyZero and UtMath::NearlyEqual, which replaces UtMath::Equals and provides a default epsilon of std::numeric_limits<T>::epsilon(). (Issue #1484)

  • Link unit test executables against imported libraries to allow linking against GTest dynamic libraries. (ELSZ #122)

  • Update the finding of GMock to allow linking against debug versions of the libraries. (ELSZ #207)

  • Corrected the implementation of UtEntity::IncrementLocationWCS to compute the current WCS location if it was invalid. (ELSZ #214)

  • Multiple changes to the communications framework to support router migration to a platform part. Updates include: (Issue #1310)
    • The Router object was migrated to a platform part, from a comm component. This allows any number of routers on a platform, with multiple comm associations per router instead of a one-to-one mapping.

    • Significant refactors supporting the Router move, especially with the network layer and the associated protocols.

    • Split the existing protocol interface functionality into two protocol types - the router protocol, and the existing protocol with removed router functionality.

    • Added a generic multicast routing protocol as a predefined type, and removed the improperly added functionality in the IGMP protocol.

    • Removed bridges as a formal link association between comm interfaces, as this functionality has been assumed by the router.

    • Allowed automated linking as an option for comm interfaces on a router to better model a network switch, if desired.

    • Exposed the wsf::comm::Message copy constructor, and added an assignment operator for public copy construction of message objects.

    • Comms now have an accessor providing their multicast conformance level, based on the presence of protocols. This summarizes the multicast capabilities of any given comm interface.

    • Callbacks have been added to the WsfCommNetworkManager for platform initialization after comm framework handling, and a general callback before simulation start, but after comm framework initialization.

    • Callbacks for routers have been added, as well as general scripting and output support.

  • Renamed method WsfWeapon::DecrementQuantityRemaining to ChangeQuantity to allow for incrementing and decrementing of weapon quantity in a safe manner.

  • Weapon script class WsfScriptWeaponClass and its derived classes are now correctly registered in order of the inheritance hierarchy, allowing proper indexing of script methods such that the classes can be extended by plugins. (ELSZ #241)

  • Refactored MapPlotVariable/MapPlotVariables interface in sensor_plot to ease maintenance and readability. (Issue #1449)