Skip to content

MSFS Avionics Framework 0.5.0

Compare
Choose a tag to compare
@mattnischan mattnischan released this 03 Jul 17:17
· 7 commits to main since this release

SDK

  • [Breaking Change] isFlightDirectorOn and isFlightDirectorCoPilotOn are now read-only outside APStateManager. Use the setFlightDirector() method instead.
  • [Breaking Change] Added new FMS_LOC member to APLateralModes enum and new createFmsLocLateralDirector() method to APConfig interface.
  • [Breaking Change] NavComInstrument no longer creates its own instance of NavComSimVarPublisher.
  • [Breaking Change] NavProcessor no longer creates its own instance of NavProcSimVarPublisher.
  • [Breaking Change] APRadioNavInstrument no longer creates its own instance of NavProcSimVarPublisher.
  • [Breaking Change] APLvlDirector now requires an APValues object to be passed to its constructor.
  • [Breaking Change] The isToGaMode option for APLvlDirector is now specified via an options object.
  • [Breaking Change] Changed the ap_master_[engage/disengage] and ap_yd_[engage/disengage], and topics to ap_master_[on/off] and ap_yd_[on/off], respectively.
  • [Breaking Change] AbstractAutothrottle now uses MultiExpSmoother for smoothing speed and engine power.
  • [Breaking Change] Added new cross-track error parameter to APNavDirectorInterceptFunc.
  • Added new getCurrentClimbConstraint(), getNextDescentConstraintIndex(), getNextClimbConstraintIndex(), and getNextMaprConstraintIndex() methods to VNavUtils.
  • Added new AuralAlertSystemWarningAdapter class.
  • Added new autoEngageFd and initializeStateManagerOnFirstFlightPlanSync options to APConfig.
  • Added new optional drivePitch and driveBank properties to the PlaneDirector interface.
  • Added new AutopilotDriver class.
  • All autopilot directors now directly consume SimVar values for performance-critical data instead of using the event bus. This ensures that they are using the most up-to-date data accessible from the JS environment.
  • Added new GenericFlcComputer class.
  • Added new ambient_density topic to AdcEvents, providing ambient air density in slugs per cubic foot.
  • Added SLUG and KNOT_PER_SEC units to UnitType.
  • Added density and force units to UnitType.
  • Added asUnit utility to NumberUnitSubject for creating a constant conversion to another unit.
  • BasicAvionicsSystem now supports binding power state to subscribables.
  • Added new MathUtils.SQRT3 and MathUtils.SQRT1_3 constants.
  • Added new MathUtils.diffAngleDeg() method.
  • Fixed a bug in Vec3Math.setFromSpherical() where the vector length was not being applied.
  • Added support for pitch and heading angle scaling factors in HorizonProjection.
  • Added new projectCameraRelativeAngular(), invertToCameraRelativeAngles(), projectRelativeCoordinates(), and projectCameraRelativeCoordinates() methods to HorizonProjection.
  • Added additional CSS classes to the digits of DigitScroller so that each digit can be selected and styled independently.
  • Fixed a bug in ClippedPathStream where it was sometimes not generating the correct clipped endpoints for lines.
  • Added isFinite() methods to the various VecMath classes.
  • The various VecSubject classes now consider NaN to be equal to itself.
  • Added new HPA, PercentOver100, MetersPerSecondSquared, and MillimetersWater members to SimVarValueType enum.
  • Added new autobrake_switch_pos and autobrake_active topics to BrakeEvents.
  • Added new simRate topic to ClockEvents.
  • Added JSX support for binding the class attribute of native HTML elements to objects containing key-value pairs where the keys are class name strings and the values are boolean or Subscribable<boolean>.
  • Added JSX support for binding the style attribute of native HTML elements to objects containing key-value pairs where the keys are style property names and the values are string, or Subscribable<string>.
  • Added type checking for JSX ref, style, and class props on native HTML elements.
  • Fixed a bug where AbstractNearestSubscription would notify removals with the incorrect array index.
  • Added new nav_radial_error topic to NavProcSimVars.
  • Fixed a bug where SmoothingPathCalculator did not write target altitudes to smoothed flat constraints.
  • Added new SubscribableMapFunctions.or(), SubscribableMapFunctions.and(), and SubscribableMapFunctions.nor() methods.
  • Added new MathUtils.ceil() and MathUtils.floor() methods.
  • Added new vectorAnticipationBankRate and disableAutoSuspendAtMissedApproachPoint options to LNavDirectorOptions.
  • Added new verticalAngle property to FlightPlanLeg type.
  • Fixed a bug in CasSystem where deactivating a suffixed alert when it was not active (or was scheduled to be active) and another suffix was active would corrupt the system state.
  • Added option to cache output strings to DurationFormatter, DmsFormatter2, and DateTimeFormatter.
  • DateTimeFormatter can now format hour/minute/second fragments to include decimals.
  • DateTimeFormatter now outputs '12' instead of '0' for 12-hour fragments.
  • Console warnings are now emitted when invalid fragment syntax is given to DurationFormatter, DmsFormatter2, or DateTimeFormatter.
  • Added new copyFrom() method to FlightPlan.
  • Added new indexed payload_station_weight topic to WeightBalanceEvents.
  • AbstractAutothrottle supports new options to set a threshold for changing speed target, overspeed limit, and underspeed limit values to ignore the contribution to the PID derivative term from the changing target value.
  • Added new getPreviousError() method to PidController.
  • PidController no longer calculates an infinite/NaN derivative term when dt is 0.
  • NavComSimVarPublisher now publishes all the topics that are published by NavProcSimVarPublisher.
  • Deprecated NavProcSimVarPublisher, NavProcSimVars, and other related types.
  • SimVarPublisher now supports defining custom valid index ranges and default index for indexed simvars.
  • Added various new topics to FuelSystemEvents.
  • Added new topics to GNSSEvents related to inertial data.
  • Autopilot now sets APValues.lateralActive to APLateralMode.NONE and APValues.verticalActive to APVerticalMode.NONE when the lateral and vertical directors assigned to the NONE modes are active, respectively.
  • BacklightLevelController now takes horizon angle into account.
  • Fixed index out of bounds errors when calling plugin component handlers.
  • Added an overload of FSComponent.bindCssClassSet() that binds a set to a ToggleableClassNameRecord.
  • Added new FSComponent.addCssClassesToRecord() function.
  • SmoothingPathCalculatorOptions now has all optional properties.
  • Fixed an issue where GNSSPublisher was publishing incorrect values to the zulu_time topic.
  • FlightPlanner no longer tries to change the active flight plan index to a non-existent flight plan after receiving a flight plan sync response.
  • Added new HorizonSharedCanvasLayer component.
  • Fixed an issue where FlightPlan.setProcedureDetails() would sometimes incorrectly update the flight plan's internal procedure details data.
  • LinearServo's drive() method now takes in optional args to override timestamp and servo rate.
  • Added new simRate property to APValues.
  • All lateral autopilot directors now use driveBank() instead of setBank() and support custom bank rates.
  • APHdgDirector and APTrkDirector now support locking turn direction.
  • Fixed a bug in ClippedPathStream.arc() where arc segments were improperly drawn.
  • ClippedPathStream.arc() now clamps the angular width of arcs to 2 * Math.PI. This brings it in line with the behavior of CanvasRenderingContext2D's arc() method.
  • Added new AiPilotEvents interface and AiPilotPublisher class.
  • Added new ap_disengage_status topic to APEvents.
  • Added arbitrary index support to the ap_heading_selected, ap_altitude_selected, ap_vs_selected, ap_fpa_selected, ap_ias_selected, and ap_mach_selected topics in APEvents.
  • The keyEventManager property in APStateManager is now protected instead of private.
  • Added new SubscribableMap interface and MapSubject class.
  • Fixed bugs where CasRegistrationManager and AuralAlertRegistrationManager were inappropriately caching registration events.
  • FlightPathTurnCalculator no longer attempts to compute turn anticipation if the from leg ends in a discontinuity or either the from/to leg is a discontinuity leg.
  • FlightPathTurnCalculator will now generate anticipated turns for AF/RF legs that don't exactly end on the same point as the connecting leg (within a certain tolerance).
  • Fixed a bug where FlightPathTurnCalculator would sometimes generate an anticipated arc/track turn whose anticipation distance was too large.
  • VNavUtils.getFpa() now always returns zero when altitude is zero.
  • Improved flight path calculation for CF legs in certain cases involving approach procedures that direct you to fly an outbound VOR radial before turning you back toward the final approach course.
  • Added new FlightPathUtils.getGreatCircleTangentToPath() and FlightPathUtils.getGreatCircleTangentToVector() methods.
  • Fixed SwitchLabel so that the caret won't turn green when on the left side.
  • Added new lskNotHandledThrowValue, textInputFieldDisallowedDeleteThrowValue and textInputFieldParseFailThrowValue options to FmcScreenOptions.
  • Added new MultiExpSmoother class.
  • Added new AmbientPublisher class.
  • Added new anti_ice_structural_ice_pct topic to AntiIceEvents.
  • Added new lnav_is_awaiting_calc topic to LNavEvents.
  • Added new getNextDescentConstraintIndex(), getNextClimbConstraintIndex(), and getNextMaprConstraintIndex() methods to VNavUtils.
  • Added a pitch limit to APVNavPathDirector.
  • Added new optional showTerminalWaypoints parameter to NearestIntersectionSearchSession.setIntersectionFilter().
  • Fixed an issue where MapSystemWaypointsLayer was not initializing its nearest search filters properly.
  • Added new radial error topics to NavRadioEvents.
  • AbstractAutothrottle now supports targeting acceleration in lieu of directly targeting indicated airspeed.
  • Fixed a bug where APNavDirector and APBackCourseDirector would not deactivate from an active state when CDI source was not NAV if the nav-to-nav manager reported that LOC mode could be armed.
  • Fixed a bug in AeroMath.isaPressure() where the pressure returned at or below the minimum altitude was incorrect.
  • Adjusted AeroMath.isaPressure() so that the returned pressure values no longer have small discontinuities near the breakpoints for the different atmosphere layer boundaries.
  • Added new AeroMath.isaAltitude() method.
  • Fixed a bug where APFPADirector would activate with an erroneous target value.
  • Added new optional parameter to APVSDirector to allow specifying which increment to round to when getting the current vertical speed to set the selected vertical speed.
  • GameStateProvider now debounces any ingame events it gets by 2 frames before notifying subscribers, which should prevent erroneous ingame notifications after loading and before briefing starts.
  • APGSDirectorOptions now allows customization of desired closure rate, desired VS target, and min/max VS target.

GarminSDK

  • [Breaking Change] Refactored various PFD horizon display components.
  • [Breaking Change] Removed TCAS data from VsiDataProvider.
  • [Breaking Change] VerticalSpeedIndicator now uses TcasRaCommandDataProvider to get TCAS RA data.
  • CASDisplay now supports dynamic message counts.
  • Fixed bugs with pausing/resuming WindDataProvider before it is initialized.
  • Fixed a bug where MinimumsAlerter considered the radar altimeter system to be off-line when its state was undefined.
  • Fixed several issues in GpsReceiverSelector and FmsPositionSystemSelector.
  • GarminObsDirector now uses driveBank() instead of setBank() and supports custom bank rates.
  • GarminAPConfig now generates a HDG director that supports turn direction locking by default (reversal threshold of 331 degrees).
  • Added additional options to GarminAPConfigDirectorOptions for configuring default pitch/bank servo rates and HDG director turn reversal threshold.
  • GarminVNavManager2 is no longer forced into climb tracking mode when in the departure segment.
  • RollIndicator now supports ground/sky pointer options.
  • Added new getTocBocDetails() method to GarminVNavUtils.
  • Fixed various logic in GarminVNavManager2 around calculating the active VNAV waypoint.
  • Fixed a bug where GarminVNavManager2 would not calculate TOC/BOC details for missed approach constraints when the missed approach was manually activated before LNAV sequenced into the missed approach segment.
  • Fixed a bug where GarminVNavManager2 would not disarm/deactivate PATH when the VNAV tracking phase switched to a phase that did not allow tracking the descent path.
  • MapWaypointsLayer now displays RNAV-type intersections.
  • Added new TcasRaCommandDataProvider interface and DefaultTcasRaCommandDataProvider class.
  • HorizonDisplay now supports displaying TCAS RA pitch cues.

G3000

  • [Breaking Change] The MFD no longer parses a CasConfig object from panel.xml.
  • [Breaking Change] Changed NavIndicators to an interface. The implementing class is now NavIndicatorsCollection.
  • Renamed CAS to G3000FullCasDisplay. It is still exported under the CAS alias for backwards compatibility.
  • The <PfdLayout> panel.xml tag now supports inheritance and can be defined in global scope.
  • Added additional PFD layout panel.xml options to specify the use of the navigation status, NAV/DME info, and wind banners individually. The use-banners option is now an alias for setting all individual banner options.
  • Added the ability to customize what appears in the left-most position on the PFD bottom panel via panel.xml.
  • Fixed positioning and default message counts for PFD CAS displays to be compatible with the various PFD layout options.
  • Defined standard screen backlight simvars.
  • Added new G3000BacklightPublisher and G3000BacklightUtils classes.
  • Added GtcService instance to the GTC plugin binder.
  • Added support for GTC plugins to override the behavior of knob states, label bar text, and (non-view specific) interaction event handling.
  • Deprecated GtcDualKnobRotationState in favor of GtcDualKnobState.
  • Added facility loader and flight path calculator to all plugin binders.
  • Added nav indicators to GTC plugin binder.
  • A G3000GtcViewContext object is now passed to GTC plugins' registerViews() method. The object contains references to items used to create the base G3000 package's GTC views.
  • Added support for dual-cue flight directors.
  • Added panel.xml config option for displaying the PFD roll arc.
  • Added a panel.xml config option for roll indicator ground/sky pointer style.
  • Added missing exports for flight plan text inset-related classes.