Go to file
2021-10-17 12:02:20 +02:00
gui/dialogs Explicit start/stop buttons for winds-aloft updater 2021-09-24 20:11:19 +02:00
.gitignore gitignore 2021-09-24 20:13:04 +02:00
addon-config.xml Explicit start/stop buttons for winds-aloft updater 2021-09-24 20:11:19 +02:00
addon-main.nas logging 2021-10-13 17:16:16 +02:00
addon-menubar-items.xml Put actual stuff in 2021-09-22 22:46:45 +02:00
addon-metadata.xml Put actual stuff in 2021-09-22 22:46:45 +02:00
LICENSE Initial commit 2021-09-22 22:45:53 +02:00
README Document aircraft integration 2021-10-17 12:02:20 +02:00

FG SimBrief Importer Add-On
===========================

What Is This?
-------------

This is an add-on for FlightGear that adds a SimBrief Import dialog.

(See https://www.simbrief.com/).

What It Does
------------

The SimBrief importer can import various aspects of a SimBrief flight plan into
FlightGear. The import functionality attempts to support as many aircraft types
as possible, but due to the nature of the beast, it does not work equally well
with all of them.

Ideally, the following functionality will be supported:

- Flight Plan Route: This one imports the departure and destination airports,
  and all enroute waypoints, into the default flightplan. If "Activate
  immediately" is checked, it will also activate the flightplan.
- Departure RWY, SID: This will attempt to select the planned departure runway,
  and the planned SID, from the flightplan. Note that this will only work if
  your FlightGear navdata matches the selections from SimBrief, which may not
  be the case, especially if you're using the default FG navdata and/or an
  outdated AIRAC cycle in SimBrief. SID selection will also fail if SimBrief
  uses a different naming convention than FG's navdata.
- Arrival RWY, STAR: This will attempt to select the planned arrival runway and
  STAR. The same caveats apply as with the departure runway and SID.
- Performance Init: This sets a handful of key performance parameters;
  currently: cruise altitude and callsign.
- Payload: Imports passenger and cargo weights, and attempts to distribute them
  sensibly over available payload weight slots.
- Fuel: Imports block fuel as per the flightplan, and attempts to distribute it
  sensibly over available fuel tanks. Two fuel allocation strategies are
  provided:
  - "Balanced": distributes required fuel proportionally over all tanks,
    according to their declared capacities - large tanks get more fuel, small
    tanks get less fuel.
  - "First come, first serve": distributes fuel by filling tanks in declaration
    order. Some crude heuristic is in place that attempts to detect left/right
    pairs of wing tanks from their names, to keep things balanced, but it is
    not foolproof.
  Which of these strategies is more suitable depends on the aircraft type. If
  neither is good enough, but the aircraft comes with a "balance fuel" button,
  the recommended way is to use either fuel strategy, and then simply press
  the "balance fuel" button to let the aircraft sort it out.
- Winds Aloft: Runs a background process that sets winds aloft according to the
  forecast winds in the flightplan. This will only work with Basic Weather,
  since the Advanced Weather engine runs its own wind simulation that will
  overwrite winds aloft regardless of what we set.

Supported Aircraft Types (as per 09/2021)
-----------------------------------------

                         | FPL | Dep/SID | Arr/STAR | Perf Init | Payload | Fuel |
+------------------------+-----+---------+----------+-----------+---------+------+
| E-Jet-family-YV [6]    | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| A320-family [1]        |                         n/a                           |
+------------------------+-----+---------+----------+-----------+---------+------+
| 747-8i                 | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| MD-11 [5]              | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| 747-400                | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| 737-800YV [2]          | yes | yes     | yes      | yes       | partial | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| 777 [3]                | yes | yes     | yes      | yes       | no      | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| Citation-II [4]        | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| Citation X             | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| CRJ700-family          | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| QSeries                | yes | yes     | yes      | yes       | no      | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+
| DHC6 [4]               | yes | yes     | yes      | yes       | yes     | yes  |
+------------------------+-----+---------+----------+-----------+---------+------+

[1] - This aircraft already includes a SimBrief import feature, so this addon
      will either not work or disable itself. Please use the aircraft's
      built-in SimBrief importer instead.
[2] - Imports cargo, but not passengers, due to nonstandard handling of
      passenger counts.
[3] - Nonstandard handling of cargo and passengers.
[4] - Imported flight plan is of limited use, because the aircraft does not
      have an FMS.
[5] - Currently works, but devs plan to make a custom importer, at which point
      [1] will apply.
[6] - Current version (as of 2021-10-17) has its own SimBrief importer, which
      this addon is based on. The next release of the E-Jet family will not
      include the custom importer anymore, instead requiring you to use this
      addon instead.

Aircraft types not on this list may or may not work; they simply haven't been
tested. Contributions on this front are very welcome.

Aircraft Developer Information
------------------------------

The add-on should do a decent job on most aircraft types as long as you use the
standard built-in features. Some tips for making your aircraft maximally
compatible:

- If your aircraft supports flight plan staging ("ACTIVE" vs. "MODIFIED" flight
  plans), then you can support this by providing custom implementations of the
  following two Nasal functions, which must be in the global namespace:

    `globals.getFlightplan(index=0)` - `index` is 0 for the active flightplan,
    1 for the modified (staged) flightplan.

    `globals.commitFlightplan()` - activates the modified flightplan, if any,
    and triggers the necessary updates to your instrumentation.
- To make fuel allocation work, it is recommended that tanks that come in
  left/right pairs include the words "Left" and "Right", respectively, in their
  names, and listed consecutively. This way, the fuel import system will keep
  their fuel levels synchronized. It is further recommended to list fuel tanks
  in order of priority: this way, the "first-come-first-serve" strategy will do
  the right thing, topping up the highest-priority tanks first, before adding
  fuel to the additional tanks. For example, a typical airliner with two pairs
  of wing tanks (inboard and outboard), and one center tank, might list them in
  the following order:
      - Inboard Left
      - Inboard Right
      - Outboard Left
      - Outboard Right
      - Center
  This way, the first-come-first-serve strategy will first fill the inboard
  tanks equally; if there is any fuel left, it will then fill the outboard
  tanks equally, and finally, any remaining fuel goes into the center tank.
- Passengers and cargo will be distributed over all weight nodes whose names
  look like they're either passenger spaces or cargo holds. Weight nodes that
  contain any of the words "passenger", "cabin", "pax", "class", "baggage" or
  "seat" are considered passenger spaces; weight nodes that contain any of the
  words "cargo" or "payload" are considered cargo holds.

  Then, the algorithm fills them as follows:
    1. If no passenger spaces were found, but passengers are to be transported,
       it will treat all passengers as cargo (assuming some kind of cargo
       aircraft or military transport, where passengers can be carried in the
       cargo hold).
    2. Then, all cargo is distributed over available cargo holds.
    3. If any cargo is left, it is added to the passengers (the idea being that
       baggage that doesn't fit in the cargo hold can go into the cabin).
    4. The passenger weight is then distributed over the available passenger
       spaces.
- If your aircraft requires a custom SimBrief import, simply create a global
  Nasal object or namespace named 'simbrief'; the addon will see that and
  disable itself.