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)
(2.5.3) Corrected an issue with WsfTaskManager weapon task methods TimeSinceWeaponLastFiredFor, TimeSinceWeaponLastTerminatedFor, WeaponsActiveFor, SalvosFiredAt, RoundsFiredAt, and AbortFiringAt producing erroneous results. (Issue #2287)
(2.5.3) Corrected an issue with WSF_WEAPON_FUSE in which proximity checks for detonation would not occur against the first platform defined in the scenario when do_not_use_current_target was enabled. (Issue #2251)
(2.5.3) Corrected an issue in which a WEAPON_MISSED event (see observer, event_output, csv_event_output) was not generated when the intended target was invulnerable to the weapon_effects, for example, when outside the maximum lethal radius. (Issue #1453)
(2.5.3) Fixed a crash that sometimes occurred when a multi-beam WSF_ESM_SENSOR linked to a WSF_RF_JAMMER with a repeater. (AFSIM-154)
(2.5.2) Corrected an issue in which a processor of type WSF_WEAPON_FUSE could not be cast to a WsfWeaponFuse in script.
(2.5.2) Corrected an issue with the WSF_JTIDS_TERMINAL in which a failed message delivery attempt for any member in a JTIDS slot group resulted in a delivery failure for any subsequent member in the slot group. (Issue #2012)
(2.5.2) Corrected an issue with the script methods WsfTaskManager.WeaponsFiredAt and WsfTaskManager.WeaponsActiveFor not returning correct values after firing a WSF_IMPLICIT_WEAPON. (ELSZ #246)
(2.5.2) Corrected a crash when constructing a WsfQuantumTask in a custom allocator in a WSF_QUANTUM_TASKER_PROCESSOR. (ELSZ #247)
(2.5.2) Corrected a crash while updating false_target blip positions when using WSF_FALSE_TARGET_EFFECT.
Corrected an issue with the WSF_RF_JAMMER not associating a non_master_track_processor track when the master_track_processor is not linked, not defined or does not contain a track with the associated track Id. (Issue #1396)
Corrected an issue with the WSF_IMAGE_PROCESSOR where a filter input would cause a crash in the simulation when a video image was being processed.
Corrected an issue with the WSF_FALSE_TARGET_EFFECT not properly excluding false target blips when a WSF_SLB_EFFECT or other power modifying effect was configured on an impending WSF_RADAR_SENSOR model.
Corrected a crash that occurred when a platform, towing an asset with a WSF_TOWED_MOVER, is removed from the simulation. (ELSZ #221)
Corrected an issue with the WEAPON_FIRED script observer where implicit weapons would provide a null reference to the target track. (ELSZ #222)
Corrected an issue in which extension words transmitted with Link-16 messages were missing or corrupted. (ELSZ #76)
Corrected an issue where weapon_tools would falsely generate LARs and launch computers when an invalid altitude_and_speed comes after a valid one. (ELSZ #153)
(2.5.2) Corrected an issue with incorrect evaluation of cyber_trigger intervals. (Issue #2088)
Corrected an issue where csv_event_output incorrectly reported cyber scans succeeding when cyber attacks were made instead. (ELSZ #203)
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 the new network type WSF_COMM_NETWORK_AD_HOC, which allows for dynamic rate-driven network state updates during simulation runtime.
Added the new router protocol type WSF_COMM_ROUTER_PROTOCOL_AD_HOC, which allows user-defined router protocol behavior via script methods.
Added a new script class for comm framework message inspection, WsfCommMessage.
Added a new script class for random number distribution specification, WsfRandomVariable.
Added several script classes for network state graph inspection and modification, WsfCommGraph, WsfCommGraphNode, and WsfCommGraphEdge.
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)
Added in a Close Target Detection capability for a WSF_RADAR_SENSOR, primarily used with TTR radar types.
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 theUtECI_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 usestd::unique_ptr
to conform to C++ core guidelines for resource management. (Issue #1324)Class templates
UtMappedList
andUtStdMappedList
(aliases forUtGenericMappedList
), andWsfTrackListT
have been updated to usestd::unique_ptr
instead of raw pointers to explicitly express ownership. (Issue #1324)Removed legacy
UtSubject/UtObserver
interface for classWsfTrackManager
, and updated observers to subscribe directly to callback lists withinWsfTrackManager
for notification of track state changes. (Issue #1325)Modernized the memory management of
UtCallback
objects inUtCallbackHolder
and templateUtCallbackListN
, enforcing RAII through the use ofstd::unique_ptr
. Developers will need to verify that all usages ofUtCallbackListN<...>::Connect
assume ownership of the returned callback object, either by assigning to a managed pointer or by passing ownership to aUtCallbackHolder
. (Issue #1371)Access to the
WsfScenario
object fromWsfSimulation
and other simulation objects is now immutable (const
). (Issue #1367)Class
WsfEventManager
now usesstd::unique_ptr
to convey explicit ownership of theWsfEvent
objects. Deprecated the delegating methodsAddEvent
andAddWallEvent
ofWsfSimulation
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 derivationWsfPlatform
) to beconst
-correct according to the semantics expected by its users, making any public accessor that is logically constant (e.g.GetLocationWCS
) aconst
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 innamespace
WsfScriptAuxDataUtil
, for adding the supporting script methods. (Issue #1518)Removed class
WsfCallbackEvent
and replaced usages with theWsfOneShotEvent
adapter. (Issue #1421)Refactored the comm initialization process for ease of maintenance and better performance. (Issue #1389)
Added
constexpr
function templatesUtMath::NearlyZero
andUtMath::NearlyEqual
, which replacesUtMath::Equals
and provides a default epsilon ofstd::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
toChangeQuantity
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)