LibEFB - A bag of flight utilities
This library provides utilities to support the flight planning and air
navigation. The lib is written in Rust and intended to be integrated
into EFB applications via one of its language binding (see
bindings/).
[!NOTE] This library is still in the early stage of development with the first milestone to allow a full pre-flight planning. For more, checkout the roadmap.
Getting Started
The efb crate provides the core library. The center piece of this
library is the Flight Management System (FMS). It integrates and
interfaces with all sub-systems that are used for flight planning and
execution. The following example just shows the very basics that we
can enter into the FMS to get started:
use read_to_string;
use Path;
use *;
Running this example with a proper ARINC 424 file, we get the following output:
----------------------------------------
-- ROUTE
----------------------------------------
TO HDG DIST ETE
N2 354 °M 3.2 NM 113 s
TO HDG DIST ETE
N1 354 °M 7.5 NM 266 s
TO HDG DIST ETE
EDHF 298 °M 19.6 NM 806 s
DIST 30.3 NM
ETE 1185 s
The library can be used from other languages through the different bindings. For more on a specific binding and its usage, refer to the READMEs of the bindings.
📝 Git Hooks
There is a pre-commit hook in .githooks. Either copy it to
.git/hooks or configure git to use hooks from this directory:
The hook requires Ruby (pre-installed on macOS and most Linux
distributions). Verify Ruby is installed ruby --version.
🚀 Roadmap
In a first stage, the library should be extended to allow proper flight planning by adding the following feature:
- Add runway analysis to planning
- Add measurement trait and refactor core types
- Add vertical flight profile to FMS
- Add AIXM parser
- Add book to outline how the FMS and planning is used from the user perspective
- Add NOTAMS to FMS
- Add missions with multiple flights
Once those feature are available and flight planning can be conducted with this library, the goal is to move on to add feature that will be needed in flight:
- Add position input to FMS
- Add airspace alerts to FMS
- Add location info to FMS
- Gather weather data and METAR
- Add initial airport information with frequencies and RWYs
- Add landing field analysis for EMER
- Add wake turbulence predictor