-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(fms): flight planning version 2 #7692
Conversation
f068515
to
c56ea40
Compare
fbb85a7
to
683f8f1
Compare
2762fa5
to
807161b
Compare
c31449b
to
af87cca
Compare
ApproachType.Rnav, | ||
ApproachType.VorDme, | ||
ApproachType.Vor, | ||
ApproachType.Vortac, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
VORTAC should probably be with VOR/DME since they are basically equivalent for civilian aircraft.
A320 can't fly TACAN only approaches as it does not have a TACAN receiver (for line below). We should filter those out.
Do you know how runway-by-itself approaches are handled in fms-v2? They should be last after NDB.
7427be0
to
784a7c8
Compare
QA Tester We have 4 categories of issues:
1. Logical issues:
NOTE: 2. Procedural issues:
3. Issues that can be fixed after release
Secondary fplan (referred to as SEC)
|
fbw-a32nx/src/systems/fmgc/src/flightplanning/new/waypoints/WaypointFactory.ts
Outdated
Show resolved
Hide resolved
fbw-a32nx/src/systems/fmgc/src/flightplanning/new/WaypointEntryUtils.ts
Outdated
Show resolved
Hide resolved
...ui/Pages/VCockpit/Instruments/Airliners/FlyByWire_A320_Neo/CDU/A320_Neo_CDU_SelectWptPage.js
Outdated
Show resolved
Hide resolved
async () => this.navigationDatabase.searchVor(ident).then((vors) => vors.filter((vor) => vor.type & 1 << 7 /* ILS */)), | ||
ident, | ||
(selectedVor) => { | ||
const airportIdent = selectedVor.databaseId.slice(3, 7).trim() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please do not use databaseId like this. The format of it varies depending on the database backend! It can only be used to test uniqueness of records.
@@ -245,6 +245,7 @@ function geometryLegFromFlightPlanLeg(runningMagvar: Degrees, previousFlightPlan | |||
return new CALeg(trueCourse, altitude, metadata, SegmentType.Departure); | |||
} | |||
case LegType.CD: | |||
case LegType.VD: // TODO FA, VA legs in geometry |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case LegType.VD: // TODO FA, VA legs in geometry | |
case LegType.VD: |
Fixes #1835
Fixes #2068
Fixes #2792
Fixes #5687
Fixes #6379
Fixes #6495
Fixes #6558
Fixes #7524
Summary of Changes
This PR is a complete rewrite of the entire flight planning system of the A32NX (and by extension A380X).
It entirely replaces the old system, a derivative of the CJ4 mod flight plan system, with a completely custom one, purpose-built for simulating Honeywell Airbus FMS software found on the A320/A330/A340/A350/A380.
Motivation
Major design differences
FlightPlanElement
, which resolves to typeFlightPlanLeg | Discontinuity
. Only the leg type actually contains information. This API is typed in a way that mandates proper verification of the type by the consumer and allows for semantic narrowing by TypeScript.FlightPlanManager
is split into two classes:FlightPlanService
(for now a singleton - will likely change) - this exposes allowed and common operations on flight plans, accepting parameters to target a specific plan or sub-plan (alternate). It also encapsulates TMPY logic.FlightPlanManager
- this exposes operations on managing the storage of flight plans (create, delete, copy, swap, etc.)Functionality introduced
FlightPlanManager
core logic)Issues fixed
Work remaining
Refer to #7692 (comment) for a more detailed list.
(blocked by VNAV being on dev)msfs-navdata
to supportfixTypeInfo
Screenshots (if necessary)
References
Additional context
Discord username (if different from GitHub):
Testing instructions
How to download the PR for QA
Every new commit to this PR will cause a new A32NX artifact to be created, built, and uploaded.