MSFS Avionics Framework 0.4.0
·
8 commits
to main
since this release
msfs-sdk
- [Breaking Change]
SortedArray
:get()
,first()
, andlast()
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
andadf_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()
andgetTargetConstraint()
methods toVNavPathCalculator
interface. - [Breaking Change] Added new
planBuilt
property toVNavPathCalculator
interface. - [Breaking Change] Removed the
setCurrentAlongLegDistance()
method from theVNavPathCalculator
interface. - [Breaking Change] Removed the
setCurrentAlongLegDistance()
method fromSmoothingPathCalculator
. - [Breaking Change] Renamed the
flaps_angle
topic toflaps_left_angle
and added newflaps_right_angle
topic. - [Breaking Change] Renamed the
gear_position_index
topic togear_position
. - [Breaking Change] Refactored threat detection logic used by
Tcas
. As a result, the API forTcasSensitivityParameters
andTcasIntruder
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 toboolean
. - [Breaking Change] Changed the name of the
eng_starter
topic toeng_starter_on
and changed its type toboolean
. - [Breaking Change] Changed the name of the
eng_manual_ignition
topic toeng_ignition_switch_state
and changed its type to0 | 1 | 2
. - [Breaking Change]
VNavUtils.getConstraintDetails()
now accepts anout
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 planVerticalData
. - [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
toNearestRepoFacilitySearchSession
. - [Breaking Change] Changed
FacilityWaypoint
to be an interface. The oldFacilityWaypoint
class was renamedBasicFacilityWaypoint
. - [Breaking Change] Moved
LNavDirector.getVectorsForTransitionMode()
intoLNavUtils
. - [Breaking Change]
SmoothingPathCalculator
no longer supports thevnav_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()
toVNavUtils.getNextClimbTargetConstraint()
. - [Breaking Change] Added an additional argument
globalPluginTargetFunc
to theaddScripts()
method ofPluginSystem
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
andAhrsPublisher
; these publishers now support all indexes for their indexed topics by default. - [Breaking Change] The old
SoundServer
-relatedplay_sound
,start_sound
, andstop_sound
event bus topics are no longer supported. New topics used to publish commands toSoundServer
can be found in theSoundServerControlEvents
interface. - [Breaking Change]
SoundServer
no longer prevents sounds from being played based on instrument electricity state. - [Breaking Change]
APStateManager
now requires anAPConfig
object to be passed to its constructor. - [Breaking Change]
LNavDirector
,APRollDirector
,APLvlDirector
,APHdgDirector
,APNavDirector
, andAPBackCourseDirector
now accept configuration options via an optional object passed to their constructors. - [Breaking Change] Added new
onSoundEnd()
method to theFsInstrument
interface. - [Breaking Change] Renamed
KeyInterceptManager
toKeyEventManager
and added ability to trigger key events with the newtriggerKey()
method. - Added optional
endIndex
param toFlightPlan.legs()
. - Added new
FlightPlan.tryGetSegment()
method. - Added new
trimStart()
andtrimEnd()
methods toStringUtils
. - 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
andvc_mouse_enter
events toBaseInstrumentPublisher
. - Added optional
type
parameter toICAO.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
: addedawaitStart()
method.NearestSubscription
:start()
andupdate()
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
: addedsetVorFilter()
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
: addedpeek()
,peekFirst()
,peekLast()
,resort()
andremoveAt()
methods.InstrumentBackplane
now uses theBackplanePublisher
interface instead ofBasePublisher
.- Added new
EventRepublisher
class. - Added new
FlightTimerInstrument
andFlightTimerPublisher
classes. - Added new
nav_dme_lla
andadf_lla
topics toNavProcSimVars
events. - Added new
lnavdata_waypoint_ident
topic toLNavDataEvents
. - Added new
NavComSimVars
event topics for COM radio 3, NAV radios 3/4, and ADF radio 2. - Added
useMinusSign
option toNumberFormatter
. - Added new
gp_service_level
topic toVNavEvents
. - Added new optional parameter
copyCalcs
to thecopyFlightPlan()
method inFlightPlanner
and thecopy()
method inFlightPlan
. NavProcessor
now callssetBrgSrc()
when a radio that is a selected bearing source has a frequency change event.- Added new
VNavConstraintDetails
type. - Added new
vnav_constraint_details
topic toVNavEvents
. - Added
isLegIndexPredicted
toFlightPlanPredictor
. - 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 ofNumberUnit
andGeoPoint
equality checks.GeoPointSubject
now supports custom error tolerance.- Added
toggle()
method toMutableSubscribableSet
. - Added new
zero_lift_aoa
topic toAdcEvents
. - 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 toControlSurfacesEvents
. - 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 toAPEvents
. - Added new
lnav_along_track_speed
topic toLNavEvents
. BottomTargetPathCalculator
now writes thefirstDescentConstraintLegIndex
andlastDescentConstraintLegIndex
fields in the vertical plan.SmoothingPathCalculator
now writes themissedApproachStartIndex
field in the vertical plan, and theisBeyondFaf
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()
, andatFrequency()
methods inSubscribableMapFunctions
. - Added new
TemperatureDelta
member toUnitFamily
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
andforceSign
options toDurationDisplay
. - 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
andMapWaypointRendererLabelFactory
are now allowed to returnnull
.- Added surface type property to
OneWayRunway
. RunwayUtils.getSurfaceCategory()
now acceptsOneWayRunway
orRunwaySurfaceType
as arguments.- Added new methods to
RunwayUtils
:getRunwayPairNameString()
,getRunwayNumberPrimary()
, andgetRunwayNumberSecondary()
. - 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 onSubscribable
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 toAPEvents
. FacilityRepository
now supports removing facilities by ICAO.- Added new event bus topics to
FacilityRepositoryEvents
for adding and removing facilities fromFacilityRepository
. - Added new engine fuel pump topics, more fuel tank topics, and fuel tank selector topics to
EngineEvents
. - Added new methods to
FacilityUtils
andUserFacilityUtils
. - Added new
size()
method toFacilityRepository
. - Added new
antipode()
method toGeoPointInterface
. - Added new
approach_supports_gp
topic toVNavDataEvents
to replace the oldgp_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
, andelevationEnd
. 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 inFacilityRepository
. - 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 toLNavEvents
. - 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()
andFlightPathUtils.getVectorTurnRadius()
methods. - Added new
vnav_set_default_fpa
topic toVNavControlEvents
. SmoothingPathCalculator
now supports setting default FPA throughvnav_set_default_fpa
topic.Autopilot
now forces armed vertical modes to deactivate when the glidepath director activates.- Added new
verticalDirectFpa
property toVerticalFlightPlan
. - Added new optional
fpa
property toSetVnavDirectToData
. - 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
andAPGPDirector
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 thefplCalculated
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
, andTest
. BingComponent
,SynVisComponent
, andMapSystem
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
, andMapSystem
now support custom weather colors.- Added new
getRegionCode()
andgetRegionIdent()
methods toNearestContext
. MapOwnAirplaneIconModule
andMapOwnAirplaneLayer
now support customizable icon orientations.- Added new
MapOwnAirplaneIconOrientationController
class for use withMapSystem
. 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
andfuel_total_weight
topics now always provide (usable + unusable) fuel. - Added new
fuel_usable_total
andfuel_usable_total_weight
topics toEngineEvents
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 memberUndefined
.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 theEventBus
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 publisherWeightBalanceSimvarPublisher
. - Added new Rankine temperature unit (
UnitType.RANKINE
). - Added
length
property toVerticalFlightPlan
. - 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 toEngineEvents
. - Added new topics for slat data to
ControlSurfacesEvents
. - The
useBuffer
prop is no longer required to betrue
forMapCachedCanvasLayer
. - Added new
ApproachUtils
class. - Added new
getNextMaprTargetAltitude()
,getNextClimbTargetAltitude()
,getNextDescentTargetAltitude()
,getNextDescentTargetConstraint()
methods toVNavUtils
. - Added new
FuelSystemEvents
interface, which defines fuel system-related event topics, and its associated publisherFuelSystemSimVarPublisher
. - Added new
BrakeEvents
interface, which defines brake-related event topics, and its associated publisherBrakeSimvarPublisher
. - Added new
HydraulicsEvents
interface, which defines hydraulics-related event topics, and its associated publisherHydraulicsPublisher
. - Added new
forEachSubscribedTopic()
method toEventBus
. - 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 toAPConfig
to define the default altitude hold value to set during autopilot initialization. - Added new
ambient_density
topic toAdcEvents
. - Added new slug weight unit (
UnitType.SLUG
). - Added new
Density
member toUnitFamily
enum. - Added new density units (
UnitType.SLUG_PER_FT3
andUnitType.KG_PER_M3
). - Added new autopilot directors:
APFPADirector
,APHdgHoldDirector
,APNoneDirector
,APTogaPitchDirector
,APTrkDirector
,APTrkHoldDirector
. - Added new
AbstractAutothrottle
,JetAutothrottle
, andTurbopropAutothrottle
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()
andgetLonDmsStr()
inDmsFormatter
. - Added
reset()
method toLinearServo
. - Added support for the
defaultLateralMode
anddefaultVerticalMode
properties inAPConfig
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
, andTOGGLE_GPS_DRIVES_NAV1
key intercepts fromGarminAPStateManager
. - [Breaking Change] The navigation data bar VSR field no longer supports
GarminVNavManager
. - [Breaking Change] Added new
isPowered()
andsetPowered()
methods to theTrafficSystem
interface. FmsUtils.buildVisualApproach()
will now calculate the correct altitude constraint for the faf for any requested distance from the runway.Fms.emptyPrimaryFlightPlan()
andFms.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
andHorizonLine
. 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 toFms
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 toVNavDataEvents
. - Added new
GarminVNavManager2
class to replace the oldGarminVNavManager
, which is now considered to be deprecated. - Added new
VNavDataProvider
interface and associated implementing classDefaultVNavDataProvider
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 toFmsUtils.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 classDefaultMinimumsDataProvider
to provide a common interface from which to consume minimums data. - Added new
WindDataProvider
interface associated implementing classDefaultWindDataProvider
to provide a common interface from which to consume computed wind data. - Added new
CASDisplay
class.