Skip to content

MSFS Avionics Framework 0.4.0

Compare
Choose a tag to compare
@mattnischan mattnischan released this 23 Mar 00:50
· 8 commits to main since this release

msfs-sdk

  • [Breaking Change] SortedArray: get(), first(), and last() now throw errors if index is out of bounds.
  • [Breaking Change] ArraySubject no longer passes an index of -1 to handlers. The index passed to handlers is now always the index of the manipulated element(s).
  • [Breaking Change] The nav_radial and adf_bearing topics were changed to be in units of degrees instead of radians.
  • [Breaking Change] The gp_distance topic was changed to be in units of feet.
  • [Breaking Change] Added new getCurrentConstraintDetails(), getTargetConstraintIndex() and getTargetConstraint() methods to VNavPathCalculator interface.
  • [Breaking Change] Added new planBuilt property to VNavPathCalculator interface.
  • [Breaking Change] Removed the setCurrentAlongLegDistance() method from the VNavPathCalculator interface.
  • [Breaking Change] Removed the setCurrentAlongLegDistance() method from SmoothingPathCalculator.
  • [Breaking Change] Renamed the flaps_angle topic to flaps_left_angle and added new flaps_right_angle topic.
  • [Breaking Change] Renamed the gear_position_index topic to gear_position.
  • [Breaking Change] Refactored threat detection logic used by Tcas. As a result, the API for TcasSensitivityParameters and TcasIntruder have changed.
  • [Breaking Change] Improved the resolution advisory selection logic for Tcas and added support for multi-threat encounters and composite RAs.
  • [Breaking Change] Changed the type of the eng_combustion topic to boolean.
  • [Breaking Change] Changed the name of the eng_starter topic to eng_starter_on and changed its type to boolean.
  • [Breaking Change] Changed the name of the eng_manual_ignition topic to eng_ignition_switch_state and changed its type to 0 | 1 | 2.
  • [Breaking Change] VNavUtils.getConstraintDetails() now accepts an out argument to define the object to write the details to instead of always creating a new object with every call.
  • [Breaking Change] SmoothingPathCalculator now takes additional options in the constructor to customize behavior.
  • [Breaking Change] Changed UserFacility to store the ICAOs of references (if any) instead of the facilities themselves.
  • [Breaking Change] DurationFormatter now supports precision.
  • [Breaking Change] The gp_available topic now indicates whether a glidepath is actually available for guidance as opposed to whether the currently loaded approach supports a glidepath.
  • [Breaking Change] Added a phase property to flight plan VerticalData.
  • [Breaking Change] Changed the sign convention of VNavUtils.getVerticalSpeedFromFpa() to match the other vertical speed/FPA/groundspeed conversions.
  • [Breaking Change] VNavWaypoint now supports mutable location and requires an ident string.
  • [Breaking Change] Renamed NearestUserFacilitySearchSession to NearestRepoFacilitySearchSession.
  • [Breaking Change] Changed FacilityWaypoint to be an interface. The old FacilityWaypoint class was renamed BasicFacilityWaypoint.
  • [Breaking Change] Moved LNavDirector.getVectorsForTransitionMode() into LNavUtils.
  • [Breaking Change] SmoothingPathCalculator no longer supports the vnav_set_current_fpa control event topic.
  • [Breaking Change] SmoothingPathCalculator no longer automatically calculates the FPA for vertical directs; it is now the responsibility of the code activating the VDTO to provide an FPA. If an FPA is not explicitly provided, it will default to the calculator's default FPA.
  • [Breaking Change] Renamed VNavUtils.getNextClimbConstraint() to VNavUtils.getNextClimbTargetConstraint().
  • [Breaking Change] Added an additional argument globalPluginTargetFunc to the addScripts() method of PluginSystem to allow the system to filter global plugins.
  • [Breaking Change] Added the option for MapAltitudeArcLayer to render the arc using SVG instead of canvas.
  • [Breaking Change] Removed the instrument count constructor parameters from AdcPublisher and AhrsPublisher; these publishers now support all indexes for their indexed topics by default.
  • [Breaking Change] The old SoundServer-related play_sound, start_sound, and stop_sound event bus topics are no longer supported. New topics used to publish commands to SoundServer can be found in the SoundServerControlEvents interface.
  • [Breaking Change] SoundServer no longer prevents sounds from being played based on instrument electricity state.
  • [Breaking Change] APStateManager now requires an APConfig object to be passed to its constructor.
  • [Breaking Change] LNavDirector, APRollDirector, APLvlDirector, APHdgDirector, APNavDirector, and APBackCourseDirector now accept configuration options via an optional object passed to their constructors.
  • [Breaking Change] Added new onSoundEnd() method to the FsInstrument interface.
  • [Breaking Change] Renamed KeyInterceptManager to KeyEventManager and added ability to trigger key events with the new triggerKey() method.
  • Added optional endIndex param to FlightPlan.legs().
  • Added new FlightPlan.tryGetSegment() method.
  • Added new trimStart() and trimEnd() methods to StringUtils.
  • Adjusted LatLonDisplay component to properly pad the minutes value with a leading zero when the value is less than 10.
  • Added USER facility support to NearestContext.
  • Added vc_mouse_leave and vc_mouse_enter events to BaseInstrumentPublisher.
  • Added optional type parameter to ICAO.isFacility().
  • Added new FacilityUtils class.
  • FacilityRepository now supports adding/removing multiple facilities at a time.
  • Fixed a bug in KdTree where the tree structure was not reset when clearing the tree.
  • Fixed a bug in KdTree where removing elements would corrupt the tree state.
  • Fixed a bug in MapNearestWaypointsLayer where it would continue to render waypoints for facilities that had been removed from the facility repository.
  • NearestSubscription: added awaitStart() method.
  • NearestSubscription: start() and update() now always await until the subscription has been started/updated, respectively.
  • FacilityLoader now returns the correct type of session when starting a nearest VOR search.
  • NearestVorSubscription: added setVorFilter() method.
  • Fixed a bug where AdaptiveNearestSubscription could sometimes provide the incorrect facilities.
  • Added optional param to NearestContext.initialize() to define airplane position.
  • NearestContext.update() now awaits the update of the context's constituent nearest subscriptions.
  • Increased the number of cases where NearestContext.getRegionLetter() will succeed.
  • Added new AdaptiveNearestContext class.
  • Added various utility methods to ArrayUtils.
  • SortedArray: added peek(), peekFirst(), peekLast(), resort() and removeAt() methods.
  • InstrumentBackplane now uses the BackplanePublisher interface instead of BasePublisher.
  • Added new EventRepublisher class.
  • Added new FlightTimerInstrument and FlightTimerPublisher classes.
  • Added new nav_dme_lla and adf_lla topics to NavProcSimVars events.
  • Added new lnavdata_waypoint_ident topic to LNavDataEvents.
  • Added new NavComSimVars event topics for COM radio 3, NAV radios 3/4, and ADF radio 2.
  • Added useMinusSign option to NumberFormatter.
  • Added new gp_service_level topic to VNavEvents.
  • Added new optional parameter copyCalcs to the copyFlightPlan() method in FlightPlanner and the copy() method in FlightPlan.
  • NavProcessor now calls setBrgSrc() when a radio that is a selected bearing source has a frequency change event.
  • Added new VNavConstraintDetails type.
  • Added new vnav_constraint_details topic to VNavEvents.
  • Added isLegIndexPredicted to FlightPlanPredictor.
  • Added new Easing utils class.
  • Added new Animator class.
  • FSComponent.parseCssClassesFromString() now takes optional filter argument.
  • Added support for changing NAV/COM radio volume to NavComInstrument.
  • CF leg flight path calculations now respect a leg's lat/lon fields if they are defined.
  • Added new ICAO.getRegionCode() method.
  • NaN values are now considered equal for the purposes of NumberUnit and GeoPoint equality checks.
  • GeoPointSubject now supports custom error tolerance.
  • Added toggle() method to MutableSubscribableSet.
  • Added new zero_lift_aoa topic to AdcEvents.
  • Fixed publishing of mach_to_kias_factor topic when IAS is close to 0.
  • Fixed a bug where the mach_to_kias_factor topic could have an infinite value.
  • Made landing gear-related topics indexed in ControlSurfacesEvents.
  • Added new gear_is_on_ground topic to ControlSurfacesEvents.
  • Added new topics to NavComSimVars events that publish COM radio tuned facility name and ident.
  • Fixed a a bug where Transform2D.toScale() was ignoring the z scaling factor.
  • Added new ap_selected_speed_is_manual topic to APEvents.
  • Added new lnav_along_track_speed topic to LNavEvents.
  • BottomTargetPathCalculator now writes the firstDescentConstraintLegIndex and lastDescentConstraintLegIndex fields in the vertical plan.
  • SmoothingPathCalculator now writes the missedApproachStartIndex field in the vertical plan, and the isBeyondFaf field in the vertical constraint.
  • Added methods to get first/last climb/descent constraint indexes to VNavUtils.
  • Added new FlightPathUtils.projectVelocityToCircle() method.
  • Added support for subscribable parameters in withPrecision(), changedBy(), and atFrequency() methods in SubscribableMapFunctions.
  • Added new TemperatureDelta member to UnitFamily enum.
  • Added a new overload of MappedSubject.create() that allows you to omit the mapping function.
  • Deprecated CombinedSubject.
  • Fixed a floating point rounding error bug in DurationDisplay.
  • DurationDisplay now displays negative values correctly.
  • Added useMinusSign and forceSign options to DurationDisplay.
  • Added new TcasAdvisoryDataProvider class.
  • The event_bus_topic_first_sub topic is no longer cached.
  • Added new imperial gallon fuel per hour unit (UnitType.IGPH_FUEL).
  • Add Waypoint data field type support.
  • MapWaypointRendererIconFactory and MapWaypointRendererLabelFactory are now allowed to return null.
  • Added surface type property to OneWayRunway.
  • RunwayUtils.getSurfaceCategory() now accepts OneWayRunway or RunwaySurfaceType as arguments.
  • Added new methods to RunwayUtils: getRunwayPairNameString(), getRunwayNumberPrimary(), and getRunwayNumberSecondary().
  • Fixed a bug in PatternPathStream where it would sometimes render a pattern past the end of a path.
  • Added new AirportUtils.tryGetRegionCode() method.
  • The pipe() method on Subscribable now supports map functions that accept the current value of the pipe's target subscribable as a second argument.
  • Fixed SubscribableMapFunctions.atFrequency().
  • Added new GPSSatComputer class.
  • MapOwnAirplaneLayer now supports dynamic icon size.
  • Added new ap_toga_hold topic to APEvents.
  • FacilityRepository now supports removing facilities by ICAO.
  • Added new event bus topics to FacilityRepositoryEvents for adding and removing facilities from FacilityRepository.
  • Added new engine fuel pump topics, more fuel tank topics, and fuel tank selector topics to EngineEvents.
  • Added new methods to FacilityUtils and UserFacilityUtils.
  • Added new size() method to FacilityRepository.
  • Added new antipode() method to GeoPointInterface.
  • Added new approach_supports_gp topic to VNavDataEvents to replace the old gp_available topic.
  • Fixed several bugs with flight path angle calculation and path smoothing in SmoothingPathCalculator.
  • Added new methods to VNavUtils.
  • Added new topics related to TOC/BOC to VNavEvents.
  • Fixed various logic in SmoothingPathCalculator related to VNAV-ineligible legs.
  • Added new IntersectionFacilityUtils class.
  • NearestIntersectionSubscription now supports the option to filter out terminal intersections when they duplicate a non-terminal intersection.
  • Added new FSComponent.shallowDestroy() utility function.
  • Added new MathUtils.lerpVector() method.
  • Added new properties to OneWayRunway: lighting, gradient, width, and elevationEnd.
  • DefaultUserSettingManager now attempts to reconcile existing setting state on other instruments on initialization instead of always initializing to the default setting values.
  • Added new LerpVectorLookupTable class.
  • Added support for the VIS facility type in FacilityRepository.
  • Added new AllExceptVisual facility search type.
  • Added additional ADF and marker beacon topics to NavComSimVars events.
  • LNavDirector now handles vector anticipation without sequencing to the next vector early.
  • Added new lnav_tracking_state topic to LNavEvents.
  • Added new LNavUtils class.
  • Resetting ArcTurnController will now also reset its smoothing filter.
  • Added support for changing the rate at which LinearServo drives a value after instantiation.
  • All lateral AP directors now scale their bank servo rates with sim rate.
  • Added new FlightPathUtils.getVectorTurnDirection() and FlightPathUtils.getVectorTurnRadius() methods.
  • Added new vnav_set_default_fpa topic to VNavControlEvents.
  • SmoothingPathCalculator now supports setting default FPA through vnav_set_default_fpa topic.
  • Autopilot now forces armed vertical modes to deactivate when the glidepath director activates.
  • Added new verticalDirectFpa property to VerticalFlightPlan.
  • Added new optional fpa property to SetVnavDirectToData.
  • Added additional Wait functions.
  • Fixed a bug where sometimes unsuspending while on a leg with an ingress transition would cause LNavDirector to track an inappropriate vector.
  • Fixed a bug with LNavDirector where it was impossible to manually suspend (including activating OBS mode) a leg that previously had an end-of-leg suspend applied to it.
  • RunwayUtils.getRunwayFacilityIcao() can now accept an airport ICAO as its first argument in place of an airport facility.
  • Changed the tracking logic of APGSDirector and APGPDirector to reduce oscillations at high ground speeds.
  • SmoothingPathCalculator now supports an optional function to define which altitude constraints to include in VNAV calculations.
  • Fixed a bug where CF leg flight path calculations would sometimes generate unreasonable starting turns.
  • Added new VNavUtils.getNextMaprTargetConstraint() method.
  • FlightPlanner no longer publishes the fplCalculated topic if the flight plan was deleted while calculate was running.
  • Autopilot now allows the VNAV manager to disarm FLC mode.
  • Changed the default behavior of APAltCapDirector to perform better with higher vertical speeds during capture.
  • Added additional TcasOperatingMode enum members: Off, Failed, and Test.
  • BingComponent, SynVisComponent, and MapSystem now supports the new JS Bing map terrain color API added in SU10.
  • BingComponent.createEarthColorsArray() now takes additional optional arguments defining the elevation range and number of terrain color steps to generate. The defaults will generate an array equivalent to the old implementation.
  • Added new method BingComponent.rgbToHexaColor().
  • BingComponent, MapBingLayer, and MapSystem now support custom weather colors.
  • Added new getRegionCode() and getRegionIdent() methods to NearestContext.
  • MapOwnAirplaneIconModule and MapOwnAirplaneLayer now support customizable icon orientations.
  • Added new MapOwnAirplaneIconOrientationController class for use with MapSystem.
  • APNavDirector now supports a configuration option to skip arming.
  • LNavDirector now supports a configuration option to skip arming.
  • Added new topics for actual (as opposed to indicated) plane attitude values (heading, pitch, roll) to AhrsEvents.
  • The fuel_total and fuel_total_weight topics now always provide (usable + unusable) fuel.
  • Added new fuel_usable_total and fuel_usable_total_weight topics to EngineEvents that provide usable fuel quantities.
  • AltitudeSelectManager now supports an option to transform intercepted SET events into INC/DEC (this was the default behavior, but now it can be disabled).
  • AltitudeSelectManager now supports optional custom altitude stops when incrementing/decrementing.
  • AltitudeSelectManager now supports pause/resume/reset logic.
  • DefaultUserSettingManager can now be instantiated as instrument-local manager. Instrument-local managers do not sync their setting values to or from other instruments.
  • The published is-tracking state of LNavDirector is now false if there is no valid vector for it to track.
  • LNavDirector now automatically unsuspends sequencing when there is no leg for it to track.
  • SynVisComponent now supports an optional delay before binding a Bing map on initialization.
  • Fixed a bug where FSComponent.visitNodes() could try to visit null/undefined nodes.
  • SimVarPublisher will now immediately publish a value if publishing is active when a topic is first subscribed to.
  • Added a new CssTransform API for generating CSS transform strings.
  • Added new subjects to MapDataIntegrityModule for tracking attitude and ADC data integrity.
  • MapBindingsController now supports multi-source bindings.
  • MapAltitudeArcLayer now hides the arc if GPS or ADC data are not available.
  • NumberFormatter now supports string caching via option.
  • Fixed several bugs in InterceptGreatCircleToPointBuilder that would cause it to calculate looping paths when not appropriate.
  • Added new trim angle topics to ControlSurfacesEvents.
  • Fixed the initial course selection logic for DF leg flight path calculations.
  • FacilityUtils.isFacilityType() now correctly handles intersection facilities with VOR/NDB ICAO strings.
  • DefaultFacilityWaypointCache now separates intersection facilities with VOR/NDB ICAO strings from their VOR/NDB counterparts.
  • Fixed a bug where MapProjection could enter an unrecoverable internal state when attempting to display large ranges near the poles.
  • Added new MapRotation enum member Undefined. MapRotationController will not set any specific rotation for this new mode.
  • Refactored the internals of SmoothingPathCalculator to make the class extensible.
  • Added the AeroMath utility class.
  • Added support for global plugins.
  • Added a new optional parameter shouldResync to the EventBus constructor to control whether the bus asks for all previously published and cached topics to be resynced to the new instance.
  • Added new WeightBalanceEvents interface, which defines weight and balance-related event topics, and its associated publisher WeightBalanceSimvarPublisher.
  • Added new Rankine temperature unit (UnitType.RANKINE).
  • Added length property to VerticalFlightPlan.
  • Fixed a bug where VNavUtils.getTocBocDetails() would not calculate a BOC if the climb would start once the last climb constraint was sequenced.
  • APFLCDirector now accepts an optional constructor argument to define whether to set the target FLC speed to the current IAS when the director is activated.
  • Added new GameVarPublisher class.
  • Added new fuel_center topic to EngineEvents.
  • Added new topics for slat data to ControlSurfacesEvents.
  • The useBuffer prop is no longer required to be true for MapCachedCanvasLayer.
  • Added new ApproachUtils class.
  • Added new getNextMaprTargetAltitude(), getNextClimbTargetAltitude(), getNextDescentTargetAltitude(), getNextDescentTargetConstraint() methods to VNavUtils.
  • Added new FuelSystemEvents interface, which defines fuel system-related event topics, and its associated publisher FuelSystemSimVarPublisher.
  • Added new BrakeEvents interface, which defines brake-related event topics, and its associated publisher BrakeSimvarPublisher.
  • Added new HydraulicsEvents interface, which defines hydraulics-related event topics, and its associated publisher HydraulicsPublisher.
  • Added new forEachSubscribedTopic() method to EventBus.
  • Added support for SimVarPublisher to accept topics with arbitrary indexes.
  • Refactored SoundServer to provide expanded functionality.
  • Added new CasSystem class and related supporting classes.
  • Added new AuralAlertSystem class and related supporting classes.
  • Added new ArrayUtils.shallowCopy() method.
  • Added new optional altitudeHoldDefaultAltitude property to APConfig to define the default altitude hold value to set during autopilot initialization.
  • Added new ambient_density topic to AdcEvents.
  • Added new slug weight unit (UnitType.SLUG).
  • Added new Density member to UnitFamily enum.
  • Added new density units (UnitType.SLUG_PER_FT3 and UnitType.KG_PER_M3).
  • Added new autopilot directors: APFPADirector, APHdgHoldDirector, APNoneDirector, APTogaPitchDirector, APTrkDirector, APTrkHoldDirector.
  • Added new AbstractAutothrottle, JetAutothrottle, and TurbopropAutothrottle classes.
  • Added new FlightTimerInstrument class and related supporting classes.
  • Added new topics for NAV3 and NAV4 radios to NavRadioEvents.
  • Added optional precision parameter to getLatDmsStr() and getLonDmsStr() in DmsFormatter.
  • Added reset() method to LinearServo.
  • Added support for the defaultLateralMode and defaultVerticalMode properties in APConfig to accept functions that return the desired default modes in place of static modes.
  • Added new DmsFormatter2 utility class.
  • Added new RadioFrequencyFormatter utility class.
  • Added new UUID utility class.
  • Added new API for implementing FMC/CDU-style instruments.

msfs-garminsdk

  • [Breaking Change] WeatherRadar now supports custom colors and gain.
  • [Breaking Change] GarminAPConfig now accepts an optional argument in its constructor to define configuration options for various directors.
  • [Breaking Change] Removed the BAROMETRIC, AP_NAV_SELECT_SET, and TOGGLE_GPS_DRIVES_NAV1 key intercepts from GarminAPStateManager.
  • [Breaking Change] The navigation data bar VSR field no longer supports GarminVNavManager.
  • [Breaking Change] Added new isPowered() and setPowered() methods to the TrafficSystem interface.
  • FmsUtils.buildVisualApproach() will now calculate the correct altitude constraint for the faf for any requested distance from the runway.
  • Fms.emptyPrimaryFlightPlan() and Fms.invertFlightPlan() no longer create off-route direct-to's.
  • Fixed a bug where removing a flight plan segment with Fms could sometimes throw an uncaught error.
  • Added new Fms.cancelDirectTo() method for canceling the active direct-to.
  • Added new GarminVNavUtils.shouldUseConstraint() method.
  • Added new GarminGoAroundManager class to handle things that should happen when GA mode is activated.
  • Added new MapTerrainWxSettingCompatManager class.
  • Added custom color support for Garmin map NEXRAD/Connext overlays.
  • Fixed several bugs in Fms where the flight plan would become corrupted when inserting an airway using an entry leg that is the target of a direct-to, or when removing an airway entry leg that is the target of a direct-to.
  • Enabled sub-pixel text positioning for MapRangeCompassLayer and HorizonLine.
  • MapTrackVectorLayer now hides the track vector if GPS or ADC data or both heading and attitude data are not available.
  • Fixed a bug where inserting a waypoint into an airway segment that immediately followed the departure or another airway segment would sometimes corrupt the flight plan.
  • Fixed a bug where inserting a hold into an airway would corrupt the flight plan.
  • Added new editHold() method to Fms to handle editing existing holds in the flight plan.
  • GarminFacilityWaypointCache now separates intersection facilities with VOR/NDB ICAO strings from their VOR/NDB counterparts.
  • Added new vnav_tracking_phase topic to VNavDataEvents.
  • Added new GarminVNavManager2 class to replace the old GarminVNavManager, which is now considered to be deprecated.
  • Added new VNavDataProvider interface and associated implementing class DefaultVNavDataProvider to provide a common interface from which to consume VNAV data.
  • Fixed a bug in Fms where on-route direct-to's were sometimes created with incorrect initial course and turn direction.
  • Improved the method by which Fms retrieves approach frequencies.
  • Added an optional isVisual parameter to FmsUtils.getApproaches().
  • Added new avionics systems classes: AoaSystem, FmsPositionSystem, GpsReceiverSystem, MarkerBeaconSystem, TrafficAvionicsSystem.
  • Added new classes for rendering various G3000/NXi-style PFD elements, including the AoA indicator, AFCS status box, HSI, marker beacon indicator, minimums display, navigation status box, vertical speed indicator, and wind display.
  • Added new classes for implementing a G3000/NXi-style softkey menu system.
  • Added new ImgTouchButton class.
  • Added new BgImgTouchButton class.
  • Added new TouchPad class.
  • Added new TouchSlider class.
  • Added new GarminTimerManager class.
  • Added new WaypointAlertComputer class.
  • Added new MinimumsDataProvider interface associated implementing class DefaultMinimumsDataProvider to provide a common interface from which to consume minimums data.
  • Added new WindDataProvider interface associated implementing class DefaultWindDataProvider to provide a common interface from which to consume computed wind data.
  • Added new CASDisplay class.